Mysql主从复制
1)复制类型:
sql复制(binlog小,but:有些类似于当前用户的语句不能更新成功,也可能需要一些元数据如时间戳,另外还要求是串行存储的,对存储引擎有要求Innodb next-key),行数据复制(数据准确,binlog大却可读性差),混合复制
2)复制流程原理:
在大的方面来说主要是三个步骤:
a.在master上发生更新时,将更新记录进binlog中【在master发生更新操作时,会先将事务串行写入binlog中,再通知存储引擎提交事务。】
b.slave将binlog数据同步到relay log中【slave开启一个I/O线程,并在master上打开一个连接,执行binlog dump process,读取binlog中的数据并写入relaylog中】
c.slave将relaylog中的更新同步到数据库【利用slave中的Sql从线程,将relaylog中的事件重现,同步从数据库中的数据。】
3)注意项
relaylog一般存放在OS的缓存中,开销很小
由于slave复制操作只能是串行的,在master上的并行操作不能再salve上重现。
4)同步失败,如何排查错误
1.使用show slave status 看两个个线程的工作状态,Slave_IO_Running: Yes Slave_SQL_Running: Yes
2、在SQL线程和IO线程都正常的情况下,先看看从库的pos(relay_file_position)点是否时刻在变化,如果pos点有变化的情况下,说明IO线程工作是正常的
【show master status里会有master_file_position,show slave status会有real_master_file_position 和 relay_file_position,两个master_pos要相同才算是同步成功了】
3、接着就是用tail -f查看relay-log的更新状况,查看SQL语句的更新状态
4、定位问题
网友评论