mysql主從複製配置(基於日誌點)

MySQL主從是基於binlog日誌,所以在安裝好數據庫後就要開啓binlog。這樣好處是,一方面可以用binlog恢復數據庫,另一方面可以爲主從做準備。
查看日誌開啓狀態:show variables like 'log_bin';
一、主從配置
1.master
[mysqld]
server-id=1 #主從複製ID必須不一樣
log-bin=mysql-master-bin #開啓binlog日誌,指定日誌名稱
binlog_format=MIXED  #binlog日誌格式
2.slave
[mysqld]
server-id=2
log-bin=mysql-slave-bin
binlog_format=MIXED
relay_log_recovery = 1 #當slave從庫宕機後,假如relay-log損壞了,導致一部分中繼日誌沒有處理,則自動放棄所有未執行的relay-log,並且重新從master上獲取日誌,這樣就保證了relay-log的完整性。
log_slave_updates =1  #表示slave將複製事件寫進自己的二進制日誌。當設置log_slave_updates時,你可以讓slave扮演其它slave的master。此時,slave把SQL線程執行的事件寫進行自己的二進制日誌(binary log),然後,它的slave可以獲取這些事件並執行它,slave可以是其它slave的master,從而擴散master的更新。
主從可選參數:
read_only=ON  #只讀
expire_logs_days=7 #binlog過期清理時間
max_binlog_size=100m #binlog每個日誌文件大小,默認1G
binlog-do-db=需要備份的數據庫名,如果備份多個數據庫,重複設置這個選項即可
binlog-ignore-db=不需要備份的數據庫苦命,如果備份多個數據庫,重複設置這個選項即可
slave-skip-errors = all      #跳過主從複製出現的錯誤 
master-connect-retry =60 #用來設置在和主服務器連接丟失的時候,重試的時間間隔,默認是60秒

配置完成,重啓mysql服務。
向主庫添加幾條數據,查看master的日誌文件和日誌點:

二、主從複製配置步驟
1.在master端建立複製用戶
2.備份master端數據,並在slave端恢復。備份是指定--master-data參數
3.在slave端使用change master命令配置複製
三、配置過程
環境:master  192.168.0.109  slave 192.168.0.110   mysql版本:5.7.12
1.在master建立同步賬號
>grant  replication slave on *.* to 'repltest'@'192.168.0.%'  identified by 'Repltest123#@!'
建議使用如下創建:
>create user 'repltest'@'192.168.0.%'  identified by 'Repltest123#@!';
>grant  replication slave on *.* to 'repltest'@'192.168.0.%';
2.使用dump備份數據在slave恢復
主庫備份:
mysqldump --single-transaction --master-data=2 --triggers --routines --all-databases  -uroot -p>all.sql
--routines:導出存儲過程和函數
--triggers :導出觸發器
--single_transaction:導出開始時設置事務隔離狀態,並使用一致性快照開始事務,然後unlock tables;而lock-tables是鎖住一張表不能寫操作,直到dump完畢。
--master-data:默認等於1,將dump起始(change master to)binlog點和pos值寫到結果中,等於2是將change master to寫到結果中並註釋。
從庫恢復:
將all.sql複製到從庫機器
mysql -uroot -p<all.sql
注:推薦使用xtrabackup方式進行數據備份恢復,可以參考:http://write.blog.csdn.net/postedit/51340330
3.建立同步複製
在slave執行:
mysql>change master to master_host='192.168.0.109',
           >master_user='repltest',
           >master_password='Repltest123#@!',
           >master_log_file='mysql-master-bin.000001',
           >master_log_pos=1283;
使用show slave status \G 命令查看slave配置;

 開啓slave同步:
mysql>start slave;

鏈接成功。
我們在主上添加些數據,看看是否正常通過到slave,並觀察 master和slave的日誌文件和日誌點是否同步一致。
 reset slave;    #清除從連接信息 
4.查看同步線程
show processlist \G


四、主從管理的系統視圖
performance_schema中有如下視圖對主從複製狀態信息查看:

1.replication_applier_configuration:存儲主從同步的鏈接配置

由於我們只有一個主,默認名稱channel_name爲空,可以管理多個不同主鏈接。
desired_delay 指定主從延時同步時間,單位秒,默認0 不延時,可以通過如下命令修改,需重啓
change msater to master_delay=3600
replication_applier_status  同步狀態信息
replication_applier_status_by_coordinator 用於多線程複製協調
replication_applier_status_by_worker    多線程複製線程
replication_connection_configuration  同步連接信息,ip、port等
replication_connection_status 鏈接狀態
replication_group_members      
replication_group_member_stats

發佈了404 篇原創文章 · 獲贊 205 · 訪問量 227萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章