主服務器Master配置
一、修改組態檔,然后重啟mysql服務
[mysqld] server-id = 1 -- 唯一id log-bin = mysql-bin -- 定義主服務器的二進制檔案名,指定日志檔案,其中這兩行是本來就有的,可以不用動,添加下面三行即可. log-slave-updates = true -- 允許從服務器進行同步更新 binlog-do-db = study_flask -- 記錄日志的資料庫 binlog-ignore-db = mysql -- 不記錄日志的資料庫 gtid_mode=on enforce-gtid-consistency=true
二、查看主服務器狀態
mysql> show master status; mysql> show master status\G
注意看顯示的引數,特別前面兩個File和Position,在從服務器(Slave)配置主從關系會有用到的,這里的File的值為mysql-bin.000034,Position的值為191,
獲取主資料庫中此刻資料的位置,主要用于從資料啟動后,復制資料的起始位置,但是在獲取這個狀態值之前,主資料庫就不能再有資料的修改操作,所以需要先設定讀鎖定有效,
三、創建一個專門用于復制資料的用戶
mysql> create user 'dong'@'%' mysql> grant replication slave on *.* to 'dong'@'%' identified by '123456!'; mysql> flush privileges;
從服務器Slave配置
一、修改組態檔,然后重啟mysql服務
mysqld] server-id = 2 log-bin = mysql-bin replicate-do-db = study_flask replicate-ignore-db = mysql,information_schema,performance_schema gtid_mode=on log-slave-updates=true enforce-gtid-consistency=true
二、首先在主庫上進行資料備份,然后啟動從資料庫,對主庫備份的資料進行還原,這個時候主從資料庫在備份那個時間點的資料是一致的,
備份的手段有很多種,備份結束后可以釋放讀鎖,主庫就可以進行寫操作,將備份還原到slave后,使用change master to命令掛載master端,
三、停止slave從服務執行緒
mysql> stop slave;
四、用change mster 陳述句指定同步位置,切換slave到新的master
mysql> change master to
-> master_host='192.168.1.56',
-> master_port=3306,
-> master_user='dong',
-> master_password='123456!',
-> master_log_file='mysql-bin.000034',
-> master_log_pos=191;
-> master_auto_position=1;
最后三行,要不使用前面兩行,要不使用最后一行,5.6以后版本推薦使用最后一行,
五、啟動slave從服務執行緒
mysql> start slave;
六、查看從服務器(Slave)狀態
mysql> show slave status; mysql> show slave status\G
查看結果的結果,有兩個關鍵性引數
- Slave_IO_Running:yes
- Slave_SQL_Running:yes
這兩個執行緒前面有提到,是slave上參與復制程序中兩個很重要的執行緒,YES表示正常,NO表示例外,
Slave_IO執行緒主要是將master上的binlong日志內容復制到slave的中繼日志中(Relay_log),一般出現問題的概率不大, 出現問題大多數是因為權限或者網路等問題,導致連接不上master,
Slave_SQL執行緒負責將中繼日志中的SQL執行一遍,相對來說出錯的概率大些,如有人手動的在從庫中插入一些記錄,導致主從同步的時候出現主鍵沖突,
Slave_IO_STATE:Waiting for master to send event—這個狀態表示中繼日志同步完成,等待master有新的事件產生,
遇到的報錯問題
1、Last_IO_Error: The slave IO thread stops because the master has @@GLOBAL.GTID_MODE ON and this server has @@GLOBAL.GTID_MODE OFF
gtid_mode=on log-slave-updates=true enforce-gtid-consistency=true
在從服務器的組態檔中加入上面的三項配置(此時主服務器的組態檔中已經存在上面的配置了)
如果主資料庫不是空庫,一般是先備份,記住binlog位置點,恢復到從庫,主庫備份把其他的連接全斷了,避免新資料的寫入,
一般是先保證主庫不寫入資料的情況下 備份主庫在從庫恢復 然后再執行同步命令,
https://www.jb51.net/article/137925.htm
https://blog.51cto.com/13706760/2171361
https://www.cnblogs.com/crazylqy/p/5542558.html
https://blog.csdn.net/u011976388/article/details/84777837
https://www.cnblogs.com/jianmingyuan/p/10903682.html
https://www.cnblogs.com/cocoxu1992/p/10670589.html
https://www.jianshu.com/p/faf0127f1cb2
https://blog.csdn.net/wmq880204/article/details/53160078
https://www.cnblogs.com/abobo/p/4242417.html
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/119278.html
標籤:MySQL
上一篇:Mysql—表資料之多表查詢
下一篇:JDBC
