mysql半同步 syn点位,MYSQL数据库的主从复制,半同步复制和组复制

bc3f9276acf88283a0569b9b9ef9ee92.png

在线QQ客服:1922638

专业的SQL Server、MySQL数据库同步软件

原理:

master端产生一个binlogdump线程,slave端产生I/O线程和SQL线程

1.master节点上的binlogdump线程,在slave与其正常连接的情况下,将binlog发送到slave上。

2.slave节点上的I/O线程,通过读取master节点发送的内容,并将数据复制到本地的relaylog中。

3.slave节点上的SQL线程,读取relaylog中的日志,并将其事务在本地执行。

2877fd8c6a30ab171425277b2ed2a544.png

配置一主二从:

1.server1是主(master),server2和server3是从(slave),server2从server1同步数据,server3从server2同步数据,其实也相当于server3从server1上同步数据

2.在三台主机上分别解压安装数据库

tar xf mysql-5.7.17-1.el6.x86_64.rpm-bundle.tar # 需要5.7及以上版本的mysql数据库

327d62505f07e59110f35aee91db9994.png

3.在server1中修改数据库的配置文件:

91363730f0546c2e9f49a8245e005be6.png

4.在server1中mysql数据库中对slave(同步端)授权用户同步用户repl

9f96853c6eebc901684d4d7be20a59b1.png

5.在server2中修改mysql数据库的配置文件:

6.在server2中添加自己的master(即server1端)

3b7bc6f27158c60631e6174beef9acf5.png

7.因为server2既是master端也是slave端,所以还要在server2中为server3授权可同步用户:

8.在server3中修改数据库的配置文件

在server3中接收成为server2的slave;

9.查看server3的slave的状态,检测两个线程的状态是否为两个yes

081fc6223f98c9afe1c095a8405a22cb.png

并发复制是数据库级别的,这意味着一个SQL线程可以处理一个数据库的连续事务,而不用等待其它数据库完成。这个版本的并发复制,可以理解成一个数据库一个SQL线程

在server2和server3(两个slave端)的配置文件中:

最终结果:(16个线程在等待主线程的调用)

7bb1a95a48b8bba1bc747ffe5243168c.png

介于异步复制和全同步复制之间的一种复制数据库数据的方法,主库在执行完客户端提交的事务后不是立刻返回给客户端,而是等待至少一个从库接收到并写到relay log中才返回给客户端。相对于异步复制,半同步复制提高了数据的安全性,同时它也造成了一定程度的延迟,这个延迟最少是一个TCP/IP往返的时间。

1.在server1端上,因为server1是master端

92d9f96974e35e361cb13b743fffb81e.png

2.因为server2既是master也是slave,要安装master的插件也要安装slave的插件

889ff8202c335cc28720de8548218333.png

3.在server3上,因为server3是slave端,只需要做slave端的配置

验证结果:

在server1上插入数据,在server3上查看是否同步过来,并查看成功的次数。

在server2上关闭io线程,在server1端查看数据插入的时间,等待时间为默认的10s

80bdfff07e661d26153b36baf584b599.png

df646de64b6640747bca28d2abc5a45c.png

数据库组复制的原理:

组复制是一种可用于实现容错系统的技术。复制组是一个通过消息传递相互交互的服务器组。通信层提供了很多保证,例如原子消息和总消息序号的传递。通过这些强大的特性,我们可以构建更高级的数据库复制解决方案。

MySQL组复制构建在这些属性和抽象之上,并实现多主复制协议的更新。实质上,复制组由多个数据库实例组成,并且组中的每个实例都可以独立地执行事务。但是所有读写(RW)事务只有在被组批准后才会提交。只读(RO)事务不需要在组内协调,因此立即提交。换句话说,对于任何RW事务,组需要决定是否提交,因此提交操作不是来自始发服务器的单向决定。准确地说,当事务准备好在始发服务器上提交时,该始发服务器原子地广播写入值(已改变的行)和对应的写入集(已更新的行的唯一标识符)。然后为该事务建立一个全局总序号。最终,这意味着所有服务器以相同的顺序接收同一组事务。因此,所有服务器以相同的顺序应用相同的一组更改,因此它们在组内保持一致。

数据库组复制的配置:

1.在三个节点server1,2,3停掉之前的数据库服务,清空数据库数据目录(/var/lib/mysqld)中所有的缓存记录。

2.配置三个节点处的配置文件

3.在server1中设定数据库的初始密码配置组复制:

(1)不开启日志同步

SET SQL_LOG_BIN=0; #

(2)向rpl_user用户授予所有权限,所有用户均可利用rpl_user用户同步

GRANT REPLICATION SLAVE ON. TO rpl_user@’%’ IDENTIFIED BY ‘Hellojay123+’;

(3)刷新授权表

FLUSH PRIVILEGES;

(4)reset master;

(5)开启日志记录

SET SQL_LOG_BIN=1;

(6)CHANGE MASTER TO MASTER_USER=’rpl_user’,MASTER_PASSWORD=’Hellojay123+’ FOR CHANNEL ‘group_replication_recovery’;

(7)INSTALL PLUGIN group_replication SONAME ‘group_replication.so’;

(8)SHOW PLUGINS;

(9)SET GLOBAL group_replication_bootstrap_group=ON;

(10)START GROUP_REPLICATION;

(11)SET GLOBAL group_replication_bootstrap_group=OFF;

(12)SELECT * FROM performance_schema.replication_group_members;

server1配置完成后处于online状态:

ffefc171c9594424ef22dc487fe3ba92.png

4.在server2和server3中设定数据库的初始密码配置组复制:

e198cd33014ec353ff136706e9e0ebec.png

配置完成后,server2和server3处于online状态:

44795ef4cc6787185e2c9721ddd84dcb.png

5.测试:

(1)在server1建数据库建表,检测server2和server3是否同步

server1:

00f668e77b46e127eae6a812939fe64e.png

server2:

3f72e791ff10d38ffe19b963f6e439b0.png

server3:

81b49993ab2e4d34bd5157e24ac9c390.png

(2)在server2和server3中向数据库中插入数据,检测在各个节点是否同步

server2:

06ec9944f4218c9684982ae834bf9360.png

server1:

e6922842906820cf4787f9e17ff9dd8b.png

server3:

e386fd287bc5868f38264ce2b5f676a2.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值