【Mysql】主从复制

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、定位问题



你可能感兴趣的:(【Mysql】主从复制)