前文講過日志復制分為基於日志點的復制和基於GTID的復制。
本文就講一下基於日志點的復制過程。
1.在主DB服務器上建立復制帳號。
create user ‘repl’@ip 段 identified by ‘pwd’;
create user repl@'192.168.1.%' identified by 'repl';
授權
grant replication slave on *.* to ‘repl’@ip 段;
grant replication slave on *.* to repl@'192.168.1.%';
2.配置主數據庫服務器。
bin_log=mysql-bin
啟用二進制日志,並指定日志名字。
server_id =100
需要指定serverid,在復制集群中必須唯一。
3.從服務器配置。
bin_log=mysql-bin
server_id=101
# 中繼日志
relay_log=mysql-relay-bin
# 可選參數,是否把中繼日志記錄到當前的二進制日志中,
#如果需要把當前從服務器,作為其他從服務器的復制源,則需要配置。
log_slave_update=on
# 安全配置參數,防止從寫入
read_only=on
4.初始化從服務器的數據
mysqldump ,此方法需要加鎖。
參數:
–single-transaction :保證數據事務一致性,需要對數據庫加鎖,會造成阻塞。
-master-data=2 : 記錄主庫二進制文件的偏移量信息。
xtrabackup –slave-info 熱備工具。
使用innodb存儲引擎是不會阻塞。
mysqldump -uroot -p -P3308 --single-transaction --master-data --triggers --routines --all-databases >> all.sql
從服務器導入數據
mysql -uroot -p -P3309 <all.sql
5.啟動復制鏈路
需要在從服務器上操作。
change master to MASTER_HOST=’master_host_ip’,
MASTER_USER=’repl’,
MASTER_PASSWORD=’PWD’,
MASTER_LOG_FILE=’MYSQL_LOG_FILE_NAME’,
MASTER_LOG_POS=4;
change master to master_host='localhost',
-> master_user='repl',
-> master_password='repl',
-> MASTER_LOG_FILE='mysql-bin.000005', MASTER_LOG_POS=2162;
這段可以在導出的文件中查找。
show slave status \G
查看復制鏈路狀態。
啟動復制鏈路
start slave;
使用show processlist 查看服務線程。
一個IO線程,一個SQL線程。
主服務器查看
啟動了一個dump線程。
6.驗證復制效果:
在節點A執行。
1.創建一個表。
2.插入兩條記錄。
在從服務器上查詢。
發現數據同步了。
優點:
1.是mysql最早支持的復制技術,BUG相對較少。
2.對SQL查詢沒有任何限制。
3.故障處理比較容易。
缺點:
故障轉移時重新獲取新主的日志點信息比較困難。