如何設置MySQL的主從復制

本篇文章給大家介紹的是關于在mysql服務器之間設置主從復制,下面我們來看具體內容。

如何設置MySQL的主從復制

設置細節:

主服務器:192.168.1.10?

從服務器:192.168.1.20?

數據庫:mydb

1.設置mysql主服務器

在主服務器上創建一個具有REPLICATION SLAVE權限的mysql帳戶,復制客戶端將連接到master。

mysql>?GRANT?REPLICATION?SLAVE?ON?*.*?TO?'repl_user'@'192.168.1.20'?IDENTIFIED?BY?'secretpassword'; mysql>?FLUSH?PRIVILEGES;

在所有表上都有block write語句,因此不要在備份后進行更改。

mysql>?use?mydb; mysql>?FLUSH?TABLES?WITH?READ?LOCK; mysql>?exit;

編輯mysql配置文件并在[mysqld]部分下添加以下代碼。

#?vim?/etc/my.cnf
[mysqld] log-bin=mysql-bin binlog-do-db=mydb server-id=1 innodb_flush_log_at_trx_commit=1 sync_binlog=1

重新啟動master mysql服務器以使更改生效。

#?service?mysqld?restart

使用以下命令檢查當前二進制日志文件名(File)和當前偏移量(Position)值。

mysql?>?SHOW?MASTER?STATUS; +------------------+----------+--------------+------------------+ |?File?????????????|?Position?|?Binlog_Do_DB?|?Binlog_Ignore_DB?| +------------------+----------+--------------+------------------+ |?mysql-bin.000002?|??????107?|?mydb?????????|??????????????????| +------------------+----------+--------------+------------------+

以上輸出顯示當前二進制文件使用的是mysql-bin.000002,偏移值為107。記下這些值以在從屬服務器上使用。

備份數據庫并將其復制到slave mysql server。

#?mysqldump?-u?root?-p?mydb?>?mydb.sql #?scp?mydb.sql?192.168.1.20:/opt/

完成備份后,從表中刪除READ LOCK,以便進行更改。

mysql>?UNLOCK?TABLES;

2.設置MySQL Slave Server

編輯salve mysql配置文件并在[mysqld]部分下添加以下值。

#?vim?/etc/my.cnf
[mysqld] server-id=2 replicate-do-db=mydb

server-id始終為非零數值。這些值永遠不會與其他主服務器和從服務器相似。

重啟mysql slave server,如果你已經配置了復制,請在啟動時使用-skip-slave-start,不要立即連接到主服務器。

#?/etc/init.d/mysqld?restart

使用以下命令在從屬服務器上設置選項值。

mysql>??CHANGE?MASTER?TO?MASTER_HOST='192.168.1.10', ????->?MASTER_USER='repl_user', ????->?MASTER_PASSWORD='secretpassword', ????->?MASTER_LOG_FILE='mysql-bin.000002', ????->?MASTER_LOG_POS=107;

最后啟動從屬線程

mysql>?SLAVE?START;

檢查從服務器的狀態。

mysql>?show?slave?status?G
***************************?1.?row?*************************** ???????????????Slave_IO_State: ??????????????????Master_Host:?192.168.1.15 ??????????????????Master_User:?repl_user ??????????????????Master_Port:?3306 ????????????????Connect_Retry:?60 ??????????????Master_Log_File:?mysql-bin.000002 ??????????Read_Master_Log_Pos:?107 ???????????????Relay_Log_File:?mysqld-relay-bin.000001 ????????????????Relay_Log_Pos:?4 ????????Relay_Master_Log_File:?mysql-bin.000002 ?????????????Slave_IO_Running:?No ????????????Slave_SQL_Running:?No ??????????????Replicate_Do_DB:?mydb ??????????Replicate_Ignore_DB: ???????????Replicate_Do_Table: ???????Replicate_Ignore_Table: ??????Replicate_Wild_Do_Table: ??Replicate_Wild_Ignore_Table: ???????????????????Last_Errno:?0 ???????????????????Last_Error: ?????????????????Skip_Counter:?0 ??????????Exec_Master_Log_Pos:?107 ??????????????Relay_Log_Space:?107 ??????????????Until_Condition:?None ???????????????Until_Log_File: ????????????????Until_Log_Pos:?0 ???????????Master_SSL_Allowed:?No ???????????Master_SSL_CA_File: ???????????Master_SSL_CA_Path: ??????????????Master_SSL_Cert: ????????????Master_SSL_Cipher: ???????????????Master_SSL_Key: ????????Seconds_Behind_Master:?NULL Master_SSL_Verify_Server_Cert:?No ????????????????Last_IO_Errno:?0 ????????????????Last_IO_Error: ???????????????Last_SQL_Errno:?0 ???????????????Last_SQL_Error: ??Replicate_Ignore_Server_Ids: ?????????????Master_Server_Id:?1 1?row?in?set?(0.00?sec) mysql>

MySQL主從復制已在你的系統和工作模式下成功配置。

? 版權聲明
THE END
喜歡就支持一下吧
點贊11 分享