MySQL主从复制详解(4)

relay-bin:中继日志,记录的格式与主库的二进制日志一样,但中继日志在SQL线程执行完当前中继日志中的事件之后会删除中继日志中的内容。

4. 查看新建数据数据库同步情况 1)主库创建数据库与表

[root@master ~]# mysql -uroot -p Enter password: mysql> create database dbtest; mysql> use dbtest; mysql> create table tabtest(id int); mysql> insert into tabtest() values(1),(2);

MySQL主从复制详解

2)从库查看数据库与表

[root@slave ~]# mysql -uroot -p Enter password:

(1)查看数据库

mysql> show databases;

MySQL主从复制详解

(2)查询表

mysql> select * from dbtest.tabtest;

MySQL主从复制详解

(3)slave状态

mysql> show slave status\G;

MySQL主从复制详解

同步复制的binlog偏移量已变更,relaylog偏移量也变更。

六.补充(不做验证):半同步复制

从MySQL5.5开始,MySQL以插件的形式支持半同步复制。

可参考:

https://dev.mysql.com/doc/refman/5.6/en/replication-semisync-interface.html

1. 概念 1)异步复制(Asynchronous replication)

MySQL默认的复制即是异步的,主库在执行完客户端提交的事务后会立即将结果返给给客户端,并不关心从库是否已经接收并处理。这时主如果crash掉了,主上已经提交的事务可能并没有传到从上,如果此时,强行将从提升为主,可能导致新主上的数据不完整。

2)全同步复制(Fully synchronous replication)

当主库执行完一个事务,所有的从库都执行了该事务才返回给客户端。因为需要等待所有从库执行完该事务才能返回,所以全同步复制的性能会受到到严重的影响。

3)半同步复制(Semisynchronous replication)

介于异步复制和全同步复制之间,主库在执行完客户端提交的事务后不是立刻返回给客户端,而是等待至少一个从库接收到并写到relay log中才返回给客户端。相对于异步复制,半同步复制提高了数据的安全性,同时它也造成了一定程度的延迟,这个延迟最少是一个TCP/IP往返的时间。所以,推荐半同步复制在小事务,低延时的网络中使用,可以实现在性能很小损失的情况下的零数据丢失

2. 注意事项

半同步复制需要安装相应插件支持,主从的插件不同;

半同步复制一定程度上保证提交的事务已经传给了至少一个备库(可通过环境变量设置);

半同步复制仅保证事务已经传递到备库上,并不确保已经在备库上执行完成了,即从库的执行同步过来的binlog是异步的;

半同步复制并不是严格意义上的半同步复制。如果半同步复制发生超时(由rpl_semi_sync_master_timeout参数控制,单位是毫秒,默认为10000,即10s),会暂时关闭半同步复制,转而使用异步复制;当master dump线程发送完一个事务的所有事件之后,如果在rpl_semi_sync_master_timeout内,收到了从库的响应,则主从又重新恢复为半同步复制;

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/77ceb8569de289e0667b98167a549e82.html