標籤:
需要注意的地方:
1、 主伺服器(master)、從伺服器(slave)的資料庫版本不能誇大版本,可以小版本的差異。但是從伺服器的mysql版本盡量不要低於master的mysql版本。負責需要在master中加入binlog-checksum = none(由於5.6使用了crc32做binlog的checksum。除了把master的設定從crc32改到non)一般這樣的錯誤碼:Slave can not handle replication events with the checksum that master is configured to log
2、 master需要開啟一個遠端存取的使用者grant all on *.* to [email protected] identified by "123"; (all代表擁有所有許可權,可自行設定,第一個*代表某個資料庫,*則是所有資料。第二個*代表某個資料庫下的某個表,*代表所有表 jack為使用者名稱,可以自行取名,192.168.88.99訪問ip ,如果想所有的ip都可以訪問,則需要設定成’%’。123則是你的密碼,密碼不建議太長,也不建議太短,因為資料庫會把長的密碼自動截取,短的密碼在主從同步中會有錯誤資訊);
3、 master的config設定檔中需要制定server-id = 1; log-bin=mysql-bin;或者server_id=1; log_bin=mysql-bin;根據mysql版本而定。server-id = 1;資料庫的唯一標示;log-bin=mysql-bin;開啟伺服器的記錄檔,這個必須要。因為資料的同步都是根據記錄檔。
4、 slave的config設定檔需要server-id=2;master-host=主伺服器的IP;master-user=之前設定的帳號;master-password=之前設定的密碼;master-port=3306;
5、 slave的Read_Master_Log_Pos必須和當前master同步,假設master的postion在10000,則Read_Master_Log_Pos=10000;Master_Log_File必須和當前的master記錄檔同步
待研究問題:
1、 假設master當機了,現在啟用slave進行資料的讀寫,那怎麼樣才能讓主伺服器更新這些資料。(目前想到的辦法就是把從服務的記錄檔匯出,然後匯入帶主伺服器,前提是master必須重新reset master以保證開啟新的記錄檔)。
2、 當slave意外有寫入操作時,主從同步會不再進行。
一般的操作:
reset master 清空所有記錄檔,預設到mysql-bin.000001
show master status 查看當前的記錄檔資訊
stop slave 停止主從同步
start slave 開始主從同步
change master to ……. 設定從伺服器的配置資訊
show slave status\G 查看從伺服器的配置資訊
flush privileges 重新整理許可權 當你設定了資訊的使用者,會修改了使用者權限,必須重新整理許可權
flush logs 重新整理記錄檔,相當於產生新的記錄檔
show master logs查看記錄檔資訊
MySQL主從同步總結