Linux-6.5下 MariaDB-10 半同步复制数据的配置解析
2014-05-31 17:49
633 查看
我们先来看下MYSQL异步复制的概念:
MySQL本身支持单向的、异步的复制。异步复制意味着在把数据从一台机器拷贝到另一台机器时有一个延时 – 最重要的是这意味着当应用系统的事务提交已经确认时数据并不能在同一时刻拷贝/应用到从机。通常这个延时是由网络带宽、资源可用性和系统负载决定的。然而,使用正确的组件并且调优,复制能做到接近瞬时完成。
当主库有更新的时候,主库会把更新操作的SQL写入二进制日志(Bin log),并维护一个二进制日志文件的索引,以便于日志文件轮回(Rotate)。在从库启动异步复制的时候,从库会开启两个I/O线程,其中一个线程连接主库,要求主库把二进制日志的变化部分传给从库,并把传回的日志写入本地磁盘。另一个线程则负责读取本地写入的二进制日志,并在本地执行,以反映出这种变化。较老的版本在复制的时候只启用一个I/O线程,实现这两部分的功能。
其次来看下MySQL同步复制的概念:
同步复制可以定义为数据在同一时刻被提交到一台或多台机器,通常这是通过众所周知的“两阶段提交”做到的。虽然这确实给你在多系统中保持一致性,但也由于增加了额外的消息交换而造成性能下降。
默认情况下MySQL的复制是异步的,Master上所有的更新操作写入Binlog之后并不确保所有的更新都被复制到Slave之上。异步操作虽然效率高,但是在Master/Slave出现问题的时候,存在很高数据不同步的风险,甚至可能丢失数据。
MySQL5.5引入半同步复制功能的,我这里是MariaDB-10的,目的是为了保证在master出问题的时候,至少有一台Slave的数据是完整的。在超时的情况下也可以临时转入异步复制,保障业务的正常使用,直到一台salve追赶上之后,继续切换到半同步模式。
下面是部署的实现:
一、主节点配置:
1、停止服务:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/03/da30e5664c3884ff87f70be588d72c7b.png)
2、修改配置文件:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/03/65716eaa5fd332edc8cc6dae9bfd2c9e.png)
3、创建目录、修改属组:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/03/c231938fbe7a7ad62c05174e39cc1f92.png)
4、启动服务、端口:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/03/99b9db7b64ad8e8a5d24f6751b60f87e.png)
5、查看是否存在master、slave的插件:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/03/5ee8ad9972d8d3955406aed9096e1060.png)
6、授权用户
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/03/af8e09bff5205eebd15f433eb69c73ee.png)
7、安装master的插件:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/03/4e59b713785c5f1cfbe5cc489627721b.png)
8、查看master插件是否安装成功:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/03/2f7f28293263db86152554582ee9cefe.png)
9、启动master节点:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/03/d8fe9032fb9068edee5bf047295dcfef.png)
10、将超时间设置为两秒即可:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/03/fb189dea697c0da7e2e35e711ea8ab9e.png)
11、查看master是否启动:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/03/56ea68712d88736b9e8f9c2c28825ecb.png)
<
4000
br />
二、从节点配置:
1、停止服务:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/03/e303c3236ef3733378b46c6d11b1bccf.png)
2、修改配置文件:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/03/3fe764fb3f93fc5ea5b2af1779e0789a.png)
3、创建目录、修改属组:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/03/725c62c1e63434ef833e83cb853ac650.png)
4、启动服务:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/03/672ff5c1376a366877e5ec98a3fe14fe.png)
5、连入mysql,查看事件状态:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/03/44b817c39b9c3561ca38a22f6c963331.png)
6、查看验证(此时是没有文件的):
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/03/10d3830425363a6787c28153731e997b.png)
7、设置连接主服务器:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/03/9c0f5ae9094dcb98dbed15574ba73baf.png)
8、查看当前用户:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/03/7987683edb70410812c8a572d09afff3.png)
9、安装slave插件:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/03/e9de7674f49aa6cd750b6f2a91bc1a6a.png)
10、查看slave是否安装成功:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/03/4b942ff1290a57cc7f207399ce3e0a49.png)
11、启动slave节点:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/03/64f096685c96e61c0eb9656bfb00a1d6.png)
12、查看slave是否启动成功:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/03/8afe9c93659cd6f3c354b40f698f3781.png)
三、master插入数据,slave测试是否同步:
1、master插入数据:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/03/ce45c3343f685b803c3a0182196ca6cc.png)
2、先停止IO线程,在启动IO线程:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/03/1c60ae1839620d7762d9cf1212c50361.png)
3、查看当前是异步还是半同步:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/03/abee8408ca5ca8da3bee61c6f190e0b8.png)
4、查看slave是否以同步数据:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/03/14c40bcf5773219c4ad2cde8f0fcfafb.png)
5、一般来说,不建议把半同步的设定写在配置文件中,我们还不如手动修改合适呢。一旦某次等待超时,会自动降级为异步;
OK!!!
MySQL本身支持单向的、异步的复制。异步复制意味着在把数据从一台机器拷贝到另一台机器时有一个延时 – 最重要的是这意味着当应用系统的事务提交已经确认时数据并不能在同一时刻拷贝/应用到从机。通常这个延时是由网络带宽、资源可用性和系统负载决定的。然而,使用正确的组件并且调优,复制能做到接近瞬时完成。
当主库有更新的时候,主库会把更新操作的SQL写入二进制日志(Bin log),并维护一个二进制日志文件的索引,以便于日志文件轮回(Rotate)。在从库启动异步复制的时候,从库会开启两个I/O线程,其中一个线程连接主库,要求主库把二进制日志的变化部分传给从库,并把传回的日志写入本地磁盘。另一个线程则负责读取本地写入的二进制日志,并在本地执行,以反映出这种变化。较老的版本在复制的时候只启用一个I/O线程,实现这两部分的功能。
其次来看下MySQL同步复制的概念:
同步复制可以定义为数据在同一时刻被提交到一台或多台机器,通常这是通过众所周知的“两阶段提交”做到的。虽然这确实给你在多系统中保持一致性,但也由于增加了额外的消息交换而造成性能下降。
默认情况下MySQL的复制是异步的,Master上所有的更新操作写入Binlog之后并不确保所有的更新都被复制到Slave之上。异步操作虽然效率高,但是在Master/Slave出现问题的时候,存在很高数据不同步的风险,甚至可能丢失数据。
MySQL5.5引入半同步复制功能的,我这里是MariaDB-10的,目的是为了保证在master出问题的时候,至少有一台Slave的数据是完整的。在超时的情况下也可以临时转入异步复制,保障业务的正常使用,直到一台salve追赶上之后,继续切换到半同步模式。
下面是部署的实现:
一、主节点配置:
1、停止服务:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/03/da30e5664c3884ff87f70be588d72c7b.png)
2、修改配置文件:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/03/65716eaa5fd332edc8cc6dae9bfd2c9e.png)
3、创建目录、修改属组:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/03/c231938fbe7a7ad62c05174e39cc1f92.png)
4、启动服务、端口:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/03/99b9db7b64ad8e8a5d24f6751b60f87e.png)
5、查看是否存在master、slave的插件:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/03/5ee8ad9972d8d3955406aed9096e1060.png)
6、授权用户
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/03/af8e09bff5205eebd15f433eb69c73ee.png)
7、安装master的插件:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/03/4e59b713785c5f1cfbe5cc489627721b.png)
8、查看master插件是否安装成功:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/03/2f7f28293263db86152554582ee9cefe.png)
9、启动master节点:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/03/d8fe9032fb9068edee5bf047295dcfef.png)
10、将超时间设置为两秒即可:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/03/fb189dea697c0da7e2e35e711ea8ab9e.png)
11、查看master是否启动:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/03/56ea68712d88736b9e8f9c2c28825ecb.png)
<
4000
br />
二、从节点配置:
1、停止服务:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/03/e303c3236ef3733378b46c6d11b1bccf.png)
2、修改配置文件:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/03/3fe764fb3f93fc5ea5b2af1779e0789a.png)
3、创建目录、修改属组:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/03/725c62c1e63434ef833e83cb853ac650.png)
4、启动服务:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/03/672ff5c1376a366877e5ec98a3fe14fe.png)
5、连入mysql,查看事件状态:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/03/44b817c39b9c3561ca38a22f6c963331.png)
6、查看验证(此时是没有文件的):
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/03/10d3830425363a6787c28153731e997b.png)
7、设置连接主服务器:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/03/9c0f5ae9094dcb98dbed15574ba73baf.png)
8、查看当前用户:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/03/7987683edb70410812c8a572d09afff3.png)
9、安装slave插件:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/03/e9de7674f49aa6cd750b6f2a91bc1a6a.png)
10、查看slave是否安装成功:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/03/4b942ff1290a57cc7f207399ce3e0a49.png)
11、启动slave节点:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/03/64f096685c96e61c0eb9656bfb00a1d6.png)
12、查看slave是否启动成功:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/03/8afe9c93659cd6f3c354b40f698f3781.png)
三、master插入数据,slave测试是否同步:
1、master插入数据:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/03/ce45c3343f685b803c3a0182196ca6cc.png)
2、先停止IO线程,在启动IO线程:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/03/1c60ae1839620d7762d9cf1212c50361.png)
3、查看当前是异步还是半同步:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/03/abee8408ca5ca8da3bee61c6f190e0b8.png)
4、查看slave是否以同步数据:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/03/14c40bcf5773219c4ad2cde8f0fcfafb.png)
5、一般来说,不建议把半同步的设定写在配置文件中,我们还不如手动修改合适呢。一旦某次等待超时,会自动降级为异步;
OK!!!
相关文章推荐
- 基于MariaDB-10 半同步复制数据的配置解析
- Linux-6.5下 基于MariaDB-10的 主从复制配置解析
- Linux-6.5下 基于MariaDB-10的 主从复制配置解析
- Linux-6.5下 基于MariaDB-10 GTID多线程 的配置解析
- Linux-6.5下 基于MariaDB-10的 GTID多线程 的配置解析
- Linux-6.5下 MariaDB-10基于LVM快照的备份数据 详解
- Linux-6.5下 MariaDB-10基于percona-XtraBackup备份工具的原理及配置详解
- Linux-6.5下 MariaDB-10基于LVM快照的备份数据 详解
- CentOS-6.5下 MariaDB-10基于XtraBackup备份工具的原理及配置详解
- linux 数据同步 rsync 原理讲解及配置说明
- Linux下指定mysql数据库数据配置主主同步的实例
- 深入解析半同步与异步的MySQL主从复制配置
- Linux下rsync的安装与配置远程服务器数据同步
- Linux下配置rsync同步备份数据
- Apache + Tomcat + Linux 集群和均衡负载 (Session 同步复制) 配置实
- centos6.5下postgresql9.4.3同步流复制的standby安装与配置
- 阿里云 linux rsync 数据同步亲自配置成功过,现在已经运行中
- Linux-6.5下 基于cmake28来编译安装mysql服务配置解析
- mariadb-10实现半同步复制及SSL安全复制
- Linux下MySQL主从同步复制详细配置