二臺服務器,A的內網IP為192.168.1.111,B的內網IP為192.168.1.222,A做為master,B做為Slave
1. 配置A的Mysql
(1) vim /etc/mysql/my.cnf
去掉[mysqld]段中 server_id =1 和log_bin=/var/log/mysql/mysql-bin.log的#注釋
加上 binlog-do-db = s3 s3就是要同步的數據庫的名稱,如果沒有這一行,表示同步所有的數據,另外 binlog_ignore_db = mysql。要表示忽略同步的數據庫名稱為mysql,如果有多個要指定同步或是忽略同步的數據,就配置多行,保存退出。
(2) 創建一個復制用的賬戶(名稱為repl,允許從遠程連接,密碼為123456):
GRANT REPLICATION SLAVE, RELOAD,SUPER, NO *.* TO repl@'%' IDENTIFIED BY '123456';
FLUSH PRIVILEGES;
(3) 重啟mysql服務,或是直接reboot機器也可以
(4) 進入mysql,然后用 show master status\G 查看二進制日志的狀態,看到類似以下的結果:
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000003 | 1376 | s3 | |
+------------------+----------+--------------+------------------+
2. 配置B的Mysql
(1) vim /etc/mysql/my.cnf
去掉[mysqld]段中 server_id =1 和log_bin=/var/log/mysql/mysql-bin.log的#注釋,把server_id改為2,要和master機器的不一樣。并增加以下內容:
binlog_do_db=s3
log-slave-updates
保存退出
(2) 重啟mysql服務
(3) 進入mysql,執行
CHANGE MASTER TO MASTER_HOST='192.168.1.111', MASTER_USER='repl',Master_Port=3306,MASTER_PASSWORD='123456',MASTER_LOG_FILE='mysql-bin.000003',MASTER_LOG_POS=1376;
SLAVE START;
注意上面的CHANGE語句中,MASTER_LOG_FILE和MASTER_LOG_POS就是上面1.4中提到的show master status命令得到的結果,指定二進制文件的名稱和開始同步的位置。
(4) 查看SLAVE狀態: show slave status\G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.1.111
Master_User: repl
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000003
Read_Master_Log_Pos: 1376
Relay_Log_File: mysqld-relay-bin.000002
Relay_Log_Pos: 1355
Relay_Master_Log_File: mysql-bin.000003
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB:
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: 1376
Relay_Log_Space: 1512
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: 0
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
上面的紅色二行如果為YES則表示已經正常連接,可以進行復制了。