前置檢查mysql
server-id = 10,master/slave不容許重複sql
log-bin數據庫
gtid-mode = ON服務器
enforce-gtid-consistency = ON網絡
1,利用mysqlpump複製master數據到slave,搭建基於GTID的主從複製,缺乏GTID處理方法,暫不成功。
ide
mysqlpump --host= --user= --password= --single-transaction --default-parallelism=4 --compress-output=LZ4 "dbname" > /home/dbname.sql.lz4spa
lz4 -d inputfile outputfileorm
mysql -u -p < /home/dbname.sqlserver
常見錯誤:Message: Got a packet bigger than 'max_allowed_packet' bytesip
max_allowed_packet太小,調大到32M,默認4M。
CHANGE MASTER TO
MASTER_HOST = 'host_name',
MASTER_USER = 'user_name',
MASTER_PASSWORD = 'password',
MASTER_AUTO_POSITION = 1;
start slave;
ERROR 1776 (HY000) at line 30: Parameters MASTER_LOG_FILE, MASTER_LOG_POS, RELAY_LOG_FILE and RELAY_LOG_POS cannot be set when MASTER_AUTO_POSITION is active.
mysqlpump 備份文件缺乏SET @@GLOBAL.GTID_PURGED='XXX:1-XXX';相關語句。
暫無解決方法。
2,使用mysqldump複製master數據到slave,搭建基於GTID的主從複製。
mysqldump --host= --user= --password= --single-transaction --routines --events "dbname" |gzip > /home/dbname.sql.gz
常見錯誤:mysqldump: Error 2013: Lost connection to MySQL server during query when dumping table。
網絡寫超時,更改net_write_timeout爲600,默認60。
gzip -cd inuptfile > outputfile
mysql -u -p < /home/dbname.sql
CHANGE MASTER TO
MASTER_HOST = 'host_name',
MASTER_USER = 'user_name',
MASTER_PASSWORD = 'password',
MASTER_AUTO_POSITION = 1;
start slave;
3,使用mysqldbcompare進行數據一致性校驗;
比較兩個服務器之間具備相同名稱的全部數據庫;
忽略如下數據庫︰INFORMATION_SCHEMA, PERFORMANCE_SCHEMA, mysql, and sys。
mysqldbcompare --server1=user:password@localhost --server2=user:password@localhost --changes-for=server1 -a
Databases are consistent.檢查經過。
完成主從搭建。