以mysql5.7版本資料庫為例:
master ip: 192.168.10.5
slave ip: 192.168.10.6
一、 Master 上的配置:
1.修改mysql資料庫配置檔案my.ini,存放路徑一般在C:\ProgramData\MySQL\MySQL Server 5.7,(C槽中ProgramData目錄預設隐藏),自定義路徑的例外。修改内容:
# master服務唯一辨別
server-id = 1
# 二進制同步資料檔案
log-bin = mysql-bin (mysql-bin自定義)
#binlog_do_db 指定記錄二進制日志的資料庫,即需要複制的資料庫名,如果複制多個資料庫,重複設定這個選項即可。
binlog-do-db = testDB(test是你要同步的資料庫,多個資料庫請重複設定binlog-do-db )
配置完,重新開機mysql服務
2.登入mysql資料庫 為主從同步建立一個使用者,并賦予主從同步授權
create user 'backup'@'192.168.10.6' identified by '123456';
grant replication slave on *.* to 'backup'@'192.168.10.6' identified by '123456';
flush privileges;
二、 Slave 上的配置:
1.修改my.ini配置檔案
server-id=2 #不能和master一樣
relay-log=slave-relay-bin
relay-log-index=slave-relay-bin.index
#relay-log 啟動MySQL二進制日志,可以用來做資料備份和崩潰恢複,或主伺服器挂掉了,将此從伺服器作為其他從伺服器的主伺服器。
#replicate-do-db 指定同步的資料庫,如果複制多個資料庫,重複設定這個選項即可。若在master端不指定binlog-do-db,則在slave端可用replication-do-db來過濾。
#replicate-ignore-db 不需要同步的資料庫,如果有多個資料庫,重複設定這個選項即可。
配置完成後重新開機mysql服務
2.先停止slave
stop slave;
3.在master上執行
show master status;

記錄File和Position;
4.在slave上執行一下sql,MASTER_LOG_FILE=主資料File,MASTER_LOG_POS=主資料庫Postition;
change MASTER to MASTER_HOST='master 的ip',MASTER_PORT=3306,MASTER_USER='backup',MASTER_PASSWORD='123456',MASTER_LOG_FILE='mysql-bin.000004',MASTER_LOG_POS=49213;
執行成功後,
start slave;
檢視slave狀态
show slave status \G
二者均為YES表示主從配置成功。
驗證一下,在master上同步的資料庫建立一個表,看slave庫中是否有該表。
##其他情況:
1.如果主庫已有資料的情況新增從庫,在以上stop slave;步驟之後,
2.master上停止mysql服務(如果不能停服,請執行一下語句)
3.鎖定所有表:flush tables with read lock;(此時資料庫處于隻讀狀态)
4.檢視狀态:show master status; 記錄File和Position
5.将master上的data目錄下要同步資料庫檔案夾拷貝到slave的data目錄中,master上ibdata1檔案也拷過去,覆寫注意備份一下
6.從庫執行,注意替換第四步記錄的File和Position
change MASTER to MASTER_HOST='master 的ip',MASTER_PORT=3306,MASTER_USER='backup',MASTER_PASSWORD='123456',MASTER_LOG_FILE='mysql-bin.000004',MASTER_LOG_POS=49213;
7.start slave;
8.show slave status;狀态是否正常
9.解鎖master上的表:unlock tables;
10.驗證
問題:
配置過程中我遇到一個問題;
Slave_SQL_Running為NO
有個表記錄報錯,我這裡在my.ini配置檔案裡加slave-skip-errors直接錯誤跳過了,然後就好了。
以上就是我的配置過程,希望對你有幫助。