mysql主从同步注意事项

Posted lonuve

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql主从同步注意事项相关的知识,希望对你有一定的参考价值。

master配置

slave配置

主从实现过程:

mysql同步功能由3个线程(master上1个,slave上2个)来实现

1:slave创建一个IO_THREAD连接到master,请求master发送二进制日志

2:master创建Binlog Dump线程(可以通过SHOW PROCESSLIST查看线程)发送日志内容到slave的IO_THREAD

3:slave上IO_THREAD读取master的Binlog Dump线程发送的语句,存储在中继日志(relay logs)中

4:slave上启动SQL_THREAD,读取中继日志,执行SQL完成数据同步。


注意:

1.在MySQL4.0.2以前,同步只需2个线程(master和slave各一个),即slave不使用中继日志

2.如果有多个slave,master需要为每个slave连接都创建一个线程,而每个slave始终只有2个线程


=============================================================================================


注意事项:

1:主从mysql版本要一致

2:启用同步前,要保证主从数据一致

3:把master上的数据拷贝过来的方法之一实在slave上执行如下命令

mysql>LOAD DATA FROM MASTER

LOAD DATA FROM MASTER命令的一些限制:
A.MySQL版本>=4.0.0
B.仅支持MyISAM类型表

C.slave用户必须有SUPER权限

D.master复制用户必须具备RELOAD和SUPER权限
E.LOAD数据时,将在master上将使用全局读锁
F.建议数据比较少或者master允许长时间读锁时才使用

4:双机互备则是两个mysql同时配置为master及slave

5:为了防止binlog日志撑爆服务器,建议配置binlog过期自动删除

使用命令配置

mysql>set global expire_logs_days=8;

使用配置文件my.cnf

expire_logs_days=8

查看配置结果

mysql>show variables like ‘expire_logs_days‘;


=============================================================================================


主服务器上的相关命令:

mysql>show master status\G

mysql>show master status;

mysql>show slave hosts;

mysql>show logs;

mysql>show binlog events;

mysql>show binary logs;

mysql>purge logs to ‘log_name‘;

mysql>purge logs before ‘date‘;

mysql>reset master; //老版本为 flush master

mysql>set sql_log_bin=/xxx;


从服务器上的相关命令:

mysql>slave start;

mysql>slave stop;

mysql>SLAVE STOP IO_THREAD; //此线程把master段的日志写到本地

mysql>SLAVE start IO_THREAD;

mysql>SLAVE STOP SQL_THREAD; //此线程把写到本地的日志应用于数据库

mysql>SLAVE start SQL_THREAD;

mysql>reset slave;

mysql>SET GLOBAL SQL_SLAVE_SKIP_COUNTER;

mysql>load data from master;

mysql>show slave status; //SUPER,REPLICATION CLIENT

mysql>CHANGE MASTER TO MASTER_HOST=127.0.0.1, MASTER_PORT=3306,MASTER_USER=user, MASTER_PASSWORD=pwd; //动态改变master信息

mysql>PURGE MASTER [before ‘date‘]; 删除master端已同步过的日志

mysql>purge binary logs to ‘ablelee.000003‘; //删除ablelee.000003之前的binlog,不包含ablelee.000003

mysql>PURGE MASTER LOGS TO ‘mysql-bin.010‘;

mysql>PURGE MASTER LOGS BEFORE ‘2008-06-22 13:00:00‘;


PURGE命令语法

PURGE MASTER | BINARY LOGS TO ‘log_name‘

PURGE MASTER | BINARY LOGS BEFORE ‘date‘

以上是关于mysql主从同步注意事项的主要内容,如果未能解决你的问题,请参考以下文章

MySQL中主从复制不同步?

Mysql 5.6主从同步配置

RocketMQ源码-主从同步复制和异步复制

mysql5.5主从同步复制配置

MySQL 5.7 主从复制(主从同步)

Mysql 主从复制 及 一些要注意的特殊设置