mysql半同步 syn点位_基于MySQL实现数据库的半同步主从复制

bc3f9276acf88283a0569b9b9ef9ee92.png

在线QQ客服:1922638

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

首先我们来了解一下数据库常遇到的问题:

第一就是性能上的问题

1、向上拓展(硬件方面)scale up 个体本身 容易达到极限

2、向外拓展scale out

第二就是可用性的问题

1、数据库服务中断

2、误操作数据损坏

3、硬件故障

4、数据库升级测试遭遇bug

5、******

基于以上这些问题就有了一个比较好的解决方案,那就是实现数据库的主从复制。MySQL主从复制技术可以提高服务器的性能。除此之外MySQL复制还可以解决以下几个问题:

1、数据分布 (Data distribution )

2、负载平衡(load balancing)

3、备份(Backups)

4、高可用性和容错性 High availability and failover

在开始实验前我们先来了解几个概念:异步复制、全同步复制和异步复制。

异步复制

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

全同步复制

指当主库执行完一个事务,等到所有从库都执行完该事务才将结果返回给客户端。因为需要等待所有从库都执行完下能返回,所以全同步复制的性能必然会受到影响,需要有超时时间。

半同步复制

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

如果想更好地实现MySQL的主从复制,必须首先要想清楚它的复制原理,这样在工作中才能熟练的操作和应用。

MySQL复制的工作原理:

1、主服务器(master)将改变记录写入到二进制日志(binary log)中(这些记录叫做二进制日志事件,binary log events) ,在事件 写入二进制日志完成后,master通知存储引擎提交事务。此后可接收slave的请求

2、从服务器(slave)将主服务器master的binary log events拷贝到自己的中继日志(relay log) 。Slave的I/O线程在master上打开一个普通的连接,并将这些二进制事件写入中继日志。

3、SQL线程从中继日志读取事件,并重放其中的事件而更新slave的数据,使其与master中的数据一致。

MySQL还提供了一种复制过滤器:就是指在数据库复制的过程中,仅复制一个或几个数据库相关的数据,并非所有,它提供了两种复制方法:一种是在主服务器的配置文件中添加配置文件,另一种是在从服务器中添加配置文件。

1、在主服务器中

主服务器仅向二进制日志中记录有关特定数据库相关的写操作。

binlog_do_db=#要复制的数据库

binlog_ignore_db=#要忽略的数据库

2、在从服务器中

从服务器的SQL THREAD仅重放关注的数据库或表相关的事件,并将其应用于本地;

Replicate_Do_DB=#要复制过来的数据库

Replicate_Ignore_DB=#不要复制过来的数据库

下面我们开始基于上边的理论来完成我们今天的实验。

4168f6cc3a64611bc9c2962080ff7ac2.png

MySQL主从架构图

一、环境准备:

centos系统服务器2台、一台用户做Mysql主服务器,一台用于做 Mysql从服务器,配置好yum源、防火墙关闭、各节点时钟服务同步、各节点之间可以通过主机名互相通信

二、准备步骤:

1、iptables-F && setenforce 清空防火墙策略,关闭selinux

2、拿两台服务器都使用yum方式安装Mysql服务,要求版本一致

3、分别启动两台服务器mysql服务,确保服务正常

三、实现步骤:

配置master主服务器:

1、对master进行配置,包括打开二进制日志,指定唯一的servr ID。在配置文件加入如下值:

2、创建复制帐号在Master的数据库中建立一个备份帐户:每个slave使用标准的MySQL用户名和密码连接master 。进行复制操作的用户会授予REPLICATION SLAVE权限。

3.查看主服务器状态,在Master的数据库执行show master status,查看主服务器二进制日志状态

配置slave从服务器:

1、对slave进行配置,打开中继日志,指定唯一的servr ID,设置只读权限。在配置文件加入如下值

2、启动从服务器复制线程让slave连接master,并开始重做master二进制日志中的事件。

3、查看从服务器状态可使用SHOW SLAVE STATUS\G查看从服务器状态,如下所示,也可用show processlist \G查看当前复制状态:

Slave_IO_Running: Yes #IO线程正常运行

Slave_SQL_Running: Yes #SQL线程正常运行

实现半同步复制:

主节点:

从节点:

四、测试

在master上创建数据库和数据表,观察slave数据库中的数据,是否和master同步。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值