测试环境
写道
服务器A:192.168.0.219
服务器B:192.168.0.8
A,B已设置为互为主从备份,测试数据库为test-xf
现test-xf库有数据表tb_mobile
服务器B:192.168.0.8
A,B已设置为互为主从备份,测试数据库为test-xf
现test-xf库有数据表tb_mobile
测试一:停掉某台mysql服务
A:sudo /etc/init.d/mysql stop xiaofei@xiaofei-desktop:~$ sudo /etc/init.d/mysql stop [sudo] password for xiaofei: Shutting down MySQL .. * 我停掉A服务器的mysql服务. 接着我向B服务器的tb_mobile表中插入新数据,然后再开启A服务器看状态如何. B库中tb_mobile表现在如图B_old,插入一条88888888的数据之如B_new
写道
现在A服务器是mysql的服务是停止的.如A_old
写道
我们重新启动A服务器的mysql服务;
xiaofei@xiaofei-desktop:~$ sudo /etc/init.d/mysql start
Starting MySQL
.. *
我们再进A服务器的test-xf库下的tb_mobile表中看看.如图:A_new
xiaofei@xiaofei-desktop:~$ sudo /etc/init.d/mysql start
Starting MySQL
.. *
我们再进A服务器的test-xf库下的tb_mobile表中看看.如图:A_new
写道
我们发现A服务器的数据已经自动同步了.同样,我停掉B的mysql服务后,往A插入数据,恢复B后,数据也已经自动同步了.
测试二:断网测试同时为测试表加上一个ID的自增字段
写道
有种预感,有了自增变量后,在双方不通的情况下,双方都有增加数据,恢复通讯后同步会出现问题.
我在断开本机网络之后.先在A(本机)插入一条数据,id=19
去到另一台机打开B查看此时还没有同步,我再B上插入一条数据,id就=20了,
这时放开网络后,二边都同步了,至于为什么B的自增ID已20开始,肯定是某些设置参数的原因.
刚才是插入奇数条数据(1条)测试,接着我插入偶数(2条)来测试一下.
断网之后,我先在B上插入二条数据,id=22,id=24
随后我去A上插入二条数据,id=21,id=23.
通讯之后,二边同步成功.
查找原因:
多次插入数据后发现.A自增id是奇数,step=1,B自增id是偶数,step=1.
比如:现在A,B二边数据一样,最大id=26.你在A插入一条数据后,id=27,再插入一条,id=29,以此类推...
当id=29后,你去B中插入数据,id=30,再插入id=32,以此类推....
是这么二个参数对自增字段起的作用..
A:
auto_increment_offset = 1
auto_increment_increment = 2
B:
auto_increment_offset = 2
auto_increment_increment = 2
auto_increment_offset和auto_increment_increment
auto_increment_increment和auto_increment_offset用于主-主服务器(master-to-master)复制,并可以用来控制AUTO_INCREMENT列的操作。两个变量均可以设置为全局或局部变量,并且假定每个值都可以为1到65,535之间的整数值。将其中一个变量设置为0会使该变量为1。
这两个变量影响AUTO_INCREMENT列的方式:auto_increment_increment控制列中的值的增量值,auto_increment_offset确定AUTO_INCREMENT列值的起点。
如果auto_increment_offset的值大于auto_increment_increment的值,则auto_increment_offset的值被忽略。例如:表内已有一些数据,就会用现在已有的最大的自增值做为初始值。
假如我们现在有四台机器那设置应该如下:
A:
auto_increment_offset = 1
auto_increment_increment = 4
B:
auto_increment_offset = 2
auto_increment_increment = 4
C:
auto_increment_offset = 3
auto_increment_increment = 4
D:
auto_increment_offset = 4
auto_increment_increment = 4
但是这样设置的话那id不是跳得很厉害 :)
我在断开本机网络之后.先在A(本机)插入一条数据,id=19
去到另一台机打开B查看此时还没有同步,我再B上插入一条数据,id就=20了,
这时放开网络后,二边都同步了,至于为什么B的自增ID已20开始,肯定是某些设置参数的原因.
刚才是插入奇数条数据(1条)测试,接着我插入偶数(2条)来测试一下.
断网之后,我先在B上插入二条数据,id=22,id=24
随后我去A上插入二条数据,id=21,id=23.
通讯之后,二边同步成功.
查找原因:
多次插入数据后发现.A自增id是奇数,step=1,B自增id是偶数,step=1.
比如:现在A,B二边数据一样,最大id=26.你在A插入一条数据后,id=27,再插入一条,id=29,以此类推...
当id=29后,你去B中插入数据,id=30,再插入id=32,以此类推....
是这么二个参数对自增字段起的作用..
A:
auto_increment_offset = 1
auto_increment_increment = 2
B:
auto_increment_offset = 2
auto_increment_increment = 2
auto_increment_offset和auto_increment_increment
auto_increment_increment和auto_increment_offset用于主-主服务器(master-to-master)复制,并可以用来控制AUTO_INCREMENT列的操作。两个变量均可以设置为全局或局部变量,并且假定每个值都可以为1到65,535之间的整数值。将其中一个变量设置为0会使该变量为1。
这两个变量影响AUTO_INCREMENT列的方式:auto_increment_increment控制列中的值的增量值,auto_increment_offset确定AUTO_INCREMENT列值的起点。
如果auto_increment_offset的值大于auto_increment_increment的值,则auto_increment_offset的值被忽略。例如:表内已有一些数据,就会用现在已有的最大的自增值做为初始值。
假如我们现在有四台机器那设置应该如下:
A:
auto_increment_offset = 1
auto_increment_increment = 4
B:
auto_increment_offset = 2
auto_increment_increment = 4
C:
auto_increment_offset = 3
auto_increment_increment = 4
D:
auto_increment_offset = 4
auto_increment_increment = 4
但是这样设置的话那id不是跳得很厉害 :)
测试三:当一台机器当掉后,另一台机器能否接任
写道
当掉A机,继续向A机写数据,会是什么情况?B机会不会接管,数据会不会写到B机?
**结果是不会,当掉一台机后,你继续往它写数据,只能是提示你不能连接.数据也无法写入.
**结果是不会,当掉一台机后,你继续往它写数据,只能是提示你不能连接.数据也无法写入.
写道
关于MySQL-HA,目前有多种解决方案,比如heartbeat、drbd、mmm、共享存储,但是它们各有优缺点。
heartbeat、drbd配置较为复杂,需要自己写脚本才能实现MySQL自动切换,对于不会脚本语言的人来说,这无疑是一种脑裂问题;
对于mmm,生产环境中很少有人用,且mmm 管理端需要单独运行一台服务器上,要是想实现高可用,就得对mmm管理端做HA,这样无疑又增加了硬件开支;
对于共享存储,个人觉得MySQL数据还是放在本地较为安全,存储设备毕竟存在单点隐患。
使用MySQL双master+keepalived是一种非常好的解决方案,在MySQL-HA环境中,MySQL互为主从关系,这样就保证了两台MySQL数据的一致性,
然后用keepalived实现虚拟IP,通过keepalived自带的服务监控功能来实现MySQL故障时自动切换。
heartbeat、drbd配置较为复杂,需要自己写脚本才能实现MySQL自动切换,对于不会脚本语言的人来说,这无疑是一种脑裂问题;
对于mmm,生产环境中很少有人用,且mmm 管理端需要单独运行一台服务器上,要是想实现高可用,就得对mmm管理端做HA,这样无疑又增加了硬件开支;
对于共享存储,个人觉得MySQL数据还是放在本地较为安全,存储设备毕竟存在单点隐患。
使用MySQL双master+keepalived是一种非常好的解决方案,在MySQL-HA环境中,MySQL互为主从关系,这样就保证了两台MySQL数据的一致性,
然后用keepalived实现虚拟IP,通过keepalived自带的服务监控功能来实现MySQL故障时自动切换。
参考:
http://kb.cnblogs.com/page/83944/
http://xiaolin0199.iteye.com/blog/2017997
相关推荐
* Mysql双机热备机制可以保证数据的一致性和高可用性 * 双机热备机制可以实现自动_failover和自动_ Switchback 知识点八:Mysql同步机制 * Mysql同步机制可以实现数据的实时同步 * Mysql同步机制可以保证数据的...
在Linux环境下,MySQL双机热备通常采用Master-Slave复制或Master-Master复制架构。Master-Slave复制中,主服务器(Master)处理所有写操作,并将这些更改记录到二进制日志(binlog)中。备服务器(Slave)通过网络...
### MySQL双机热备知识点详解 #### 一、双机热备概述 **MySQL双机热备**是一种通过配置使得两台MySQL服务器之间能够实时同步数据的技术方案,从而实现高可用性和故障转移的能力。该技术可以确保在一台服务器发生...
MySQL双机热备是一种高可用性(High Availability, HA)解决方案,旨在确保关键业务服务的连续性。它通过在两台服务器之间建立实时数据同步来实现,当主服务器发生故障时,备用服务器能够无缝接管服务,避免服务中断。...
### MySQL数据库双机备份知识点详解 #### 一、引言 在Windows环境下进行MySQL数据库的双机备份是一项重要的数据保护措施。本文将详细介绍如何通过MySQL自带的复制(Replication)功能来实现双机备份,确保数据的...
### MySQL主从双机同步详解 #### 知识点概览 MySQL的主从双机同步是一种常见的数据复制策略,用于实现数据冗余、负载均衡和灾难恢复。本篇文章将详细解析Linux环境下MySQL主从同步的配置过程,包括环境准备、用户...
6. 测试同步:在 B 服务器上批量插入大数据量表 AA(1872000)条,然后在 A 服务器上每秒钟更新 2500 条数据,测试双机热备份的效果。 注意: * 在 slave 服务器上,设置了同步用户帐号和同步数据库后,需要删除 ...
下面将详细介绍如何设置 MySQL 同步(双机热备)。 同步方式 MySQL 提供了两种同步方式:“主-从”和“主-主”。 主-从方式 1. 准备服务器 在设置 MySQL 同步之前,需要准备服务器,包括主服务器(Master)...
【MySQL数据库双机热备份实施方案】是指在两个服务器上配置MySQL数据库,以实现高可用性和数据安全性。在主服务器(Master)上进行的所有数据更改都会实时地、异步地复制到备用服务器(Slave)。这种配置被称为双机...
以下是对Mysql双机热备难点及重要环节的详细分析: 首先,我们需要了解MySQL版本和服务器的IP地址。在示例中,使用的MySQL版本是5.7.20,主服务器IP分别为192.168.71.139和192.168.71.141。 配置双机热备的关键...
change master to master_host='192.168.0.1',master_user='username',master_password='password',master_log_file='mysql-bin.000002',master_log_pos=1687; ``` 通过以上步骤,我们可以实现数据库备份测试,包括...
【标题】:Teleport双机部署与MySQL双主配置详解 【描述】:本文将详细介绍如何在两个服务器上实现Teleport的部署以及MySQL的双主配置。我们将使用两台主机,每台都运行MySQL、Nginx和Keepalived,以实现高可用性和...
15-通过手工测试MySQL的高可用切换mp4 16-MySQL双主高可用自动切换实战实现mp4 17-有关MySQL双主高可用my.cnf的配置注意事项讲解mp4 18-MySQL高可用切换的重要思想原理及故障排除思想、mp4 19-MySQL主从同步一键安装...
MySQL主主搭建与Keepalived实现双机热备是构建高可用数据库系统的关键技术,它确保了即使在一台服务器故障时,数据服务也能不间断运行。以下是对这一主题的详细解释: 1. **MySQL主主复制**: 主主复制是一种...
- **概述**:MySQL的异步复制允许数据从一个主实例(Master)异步地复制到一个或多个从实例(Slave)。复制过程主要由Master的IO进程、Slave的SQL和IO进程协同完成。 - **优点**:实施简单,成本较低,便于后期...