MySQL主从复制

  运维

mysql支持单向、双向、链式级联、异步复制;

5.5版本之后加入半同步复制;
5.6版本之后加入GTID复制;
5.7加入多源复制、并行复制、loss-less复制;

建议:

relay_log_recovery=1
relay_log_info_repository=table

建议从库开启binlog,并且开启log_slave_updates参数,方便后续扩展

/usr/local/mysql/bin/mysqldump --single-transaction -uroot -pvY7JU_EgCrY_kSi --master-data=2 -A >all.sql
change master to master_host='172.16.0.8',master_port=3306,master_user='root',master_password='vY7JU_EgCrY_kSi',master_log_file='mysql-bin.000004',master_log_pos=11821421;
update user set password=PASSWORD("123456") where user="root";
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456';
flush privileges;
/usr/local/mysql/bin/mysqladmin  -h172.16.0.8 -P3306 -uroot -pvY7JU_EgCrY_kSi -i 2 -c 5 status
mydumper -h '172.16.0.3' -P 3306 -u 'root' -p 'nKzcopcsdfb_7PZ' -B gccx_data -e -o '/usr/local/mysql/gccx_data_'$(date +%Y%m%d) -t 4  -v 3 -L '/usr/local/mysql/gccx_data_'$(date +%Y%m%d).log

主从复制管理命令

show slave status\G;
show master status\G;
change master to;
start slave;
stop slave;
reset slave all;(删除master.info和relay-log.info文件,删除所有的relay log(包括还没有应用完的日志),创建一个新的relay log文件;但如果加了all参数,那么这些内存中的数据也会被清除掉,运行show slave status就输出为空了)

主从常见主从故障:

一、错误代码1062:主键冲突(pt-slave-restart);
二、错误代码1032:从库找不到而报错(mysqlbinlog找到主库上报错的那条sql,在从库补上,在执行pt-slave-restart);
三、错误代码1593:主从server-id一致(修改server-id后重启即可);
四、主从跨库操作,数据丢失(避免在主库设置binlog-do-db参数和binlog-format=statemanet,应设置为binlog-format=row,在从库设置replicate-do-db参数);

pt-table-checksum用于校验主从数据的一致性,该命令在主库上执行校验检查,然后对复制结果一致性进行检查,来对比主从之间的校验值,并输出对比结果
pt-table-checksum –no-check-binlog-format –replicate=mr.checksums –databases=mr -uroot -p’vY7JU_EgCrY_kSi’

pt-table-sync用于高效的同步MySQL表之间的数据,他可以做单向和双向同步的表数据。他可以同步单个表,也可以同步整个库,它不同步表结构、索引、或任何其他模式对象,所以在修复一致性之前需要保证他们表存在(两个ip,前面一个主库后面一个是从库)。
pt-table-sync –replicate=mr.checksums h=172.16.0.8,u=root,p=vY7JU_EgCrY_kSi h=172.16.0.8,u=root,p=vY7JU_EgCrY_kSi –print

LEAVE A COMMENT

Captcha Code