MySQL主从架构之Master-Master互为主备
前言
通常,为了简化逻辑,master会设置为只读,正常只通过slave进行读写。 若要两边都写,为了避免自增id冲突,一般会设置奇偶错开,即一台的自增ID均为奇数,另一台均为偶数。
基本原理
首先,slave开启log_bin二进制日志,这里面记录了数据的修改日志,这是同步的基础。
然后,master配置slave的连接信息,监听slave的修改日志message。
最后,slave一旦有修改,立即向master发送通知,然后master接收到log_bin日志,进行相关数据操作。实现数据同步。
master-master和master-slave的区别只是互为master和slave。仅此而已。
具体操作
1.两台相同版本的mysql服务器。为了简便,我是在win下复制两份mysql在同一台机器上执行。一台端口3307 m1,另一台3308 m2。(这里是slave同步master的数据,和前言刚好相反)
2.修改m1,m2配置文件my.ini,在linux下当然是my.conf。配置如下
m1
[mysqld]
port =
server-id = 1
log_bin = E:/np/mysql32_2/log_bin/mysql_log_bin #开启log_bin
binlog_do_db = a #开启log_bin的数据库
m2
[mysqld]
port =
server-id =
log_bin = E:/np/mysql32_2/log_bin/mysql_log_bin #开启log_bin
binlog_do_db = a #开启log_bin的数据库
注:其实如果是master-slave模式,m2配置里面的log_bin和binlog_do_db都不需要。这里我们配置的是master-master。
3.启动两个数据库,首先配置m1为m2的master
进入m1>显示master的状态
show master status
输出结果如下:
mysql_log_bin.000007 796 a
证明主库已经做好准备。
进入m2>绑定master为m1,其中master_log_file为上述master的File值mysql_log_bin.000007
change master to master_host='localhost',master_user='root',master_password='',master_port=,master_log_pos=,master_log_file='mysql_log_bin.000007'
m2>继续执行,查看绑定的结果
show slave status
可以看到Slave_IO_Running | Slave_SQL_Running两个值都是NO,证明还没启动同步
m2>继续执行,启动同步
start slave;
可以看到Slave_IO_Running | Slave_SQL_Running两个值都是YES,启动成功。
至此,我们已经配置好了mysql主从同步。接下来,如法炮制,在m1上绑定m2为master。就完成了互为主备的mysql同步。
关闭或者取消同步
暂时关闭, 暂时不向master同步数据
stop slave
彻底取消向master的同步
stop slave;
change master to master_host=' '; --注意里面是一个空格,而不是什么都木有。
测试
随意更改两个库的表数据,能同步,证明配置成功。
注意问题
1.我发现重启数据库,该配置仍然生效而且不用start slave。同步自动开启了,估计是把配置信息持久化了。
2.未开始同步之前,必须保持两个库的数据完全一致,不然会导致不一致的表的数据无法同步。
3.出现2的问题,,手动把数据改成一致,然后再更改数据,同步立马回复正常。
MySQL主从架构之Master-Master互为主备的更多相关文章
- Mysql主从架构报错-Fatal error: The slave I/O thread stops because master and slave have equal MySQL server UUIDs; these UUIDs must be different for replication to work...
在搭建Mysql主从架构过程中,由于从服务器是克隆的主服务器系统,导致主从mysql uuid相同, Slave_IO无法启动,报错如下: The slave I/O thread stops bec ...
- MySQL主从架构之Master-Slave主从同步
MySQL复制 MySQL复制是指将主库上的DDL和DML操作通过二进制日志传到从库上,使主库和从库上的数据保持同步 复制原理: 主服务器将更新写入二进制日志文件,并维护文件的一个索引来跟踪日志循环. ...
- MySQL 主从架构配置详解
无论是哪一种数据库,数据的安全都是至关重要的,因此熟练掌握数据库的安全备份功能,是作为开发人员,特别是后端开发人员的一项必备技能.MySQL 数据库内建的复制功能,可以帮助我们对数据进行异地备份,读写 ...
- 使用Innobackupex快速搭建(修复)MySQL主从架构
MySQL的主从搭建大家有很多种方式,传统的mysqldump方式是很多人的选择之一.但对于较大的数据库则该方式并非理想的选择.使用Xtrabackup可以快速轻松的构建或修复mysql主从架构.本文 ...
- MySQL主从架构配置
MySQL主从架构配置有两台MySQL数据库服务器master和slave,master为主服务器,slave为从服务器,初始状态时,master和slave中的数据信息相同,当master中的数据发 ...
- Mysql主从架构
Mysql主从架构 1. 克隆虚拟机 克隆的虚拟机的网络适配,使得虚拟机可以进入局域网 vi /etc/sysconfig/network-scripts/ifcfg-eth0 删除 HWADDR所在 ...
- 关于mysql主从架构master宕机后,请求转移问题解决办法
mysql架构:一主一从 问题一:有两台mysql数据库,已做好主从.如果运行某一天master服务器mysql故障导致前端请求无法处理怎么办? 答:将前端需要数据库处理的请求转移到slave机上. ...
- 高性能Mysql主从架构的复制原理及配置详解
温习<高性能MySQL>的复制篇. 1 复制概述 Mysql内建的复制功能是构建大型,高性能应用程序的基础.将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台 ...
- 转:高性能Mysql主从架构的复制原理及配置详解
温习<高性能MySQL>的复制篇. 1 复制概述 Mysql内建的复制功能是构建大型,高性能应用程序的基础.将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台 ...
随机推荐
- Hadoop的mapreduce开发过程,我遇到的错误集锦(持续更新)
1.Text包导错了. 将import com.sun.jersey.core.impl.provider.entity.XMLJAXBElementProvider.Text; 改为import o ...
- pigcms 标签读不出
错误:{pigcms:jc['portrait']} 正确:{pigcms:$jc['portrait']}
- asp.net 未能写入输出文件--“拒绝访问”的解决办法
概述 将网部署在IIS 7 上,访问本地磁盘路径的时候,提示"**文件拒绝访问". 解决办法 将需要访问的文件夹赋于IIS_IUSRS完全控制的权限即可,不用添加NET ...
- POJ1155 TELE(树形DP)
题目是说给一棵树,叶子结点有负权,边有正权,问最多能选多少个叶子结点,使从叶子到根的权值和小于等于0. 考虑数据规模表示出状态:dp[u][k]表示在u结点为根的子树中选择k个叶子结点的最小权值 最后 ...
- ural 1272. Non-Yekaterinburg Subway
1272. Non-Yekaterinburg Subway Time limit: 1.0 secondMemory limit: 64 MB A little town started to co ...
- TYVJ P1013 找啊找啊找GF Label:动态规划
做题记录:2016-08-15 22:19:04 背景 MM七夕模拟赛 描述 "找啊找啊找GF,找到一个好GF,吃顿饭啊拉拉手,你是我的好GF.再见.""诶,别再见啊.. ...
- hdu Random Sequence
这道题是道规律极强的题...真佩服在赛场上快速找到规律的人. d[i] a[i] res[i] 0 1.000000 C ...
- XSS的高级利用部分总结 -蠕虫
XSS的高级利用部分总结 -蠕虫,HTTP-only,AJAX本地文件操作,镜象网页本帖最后由 racle 于 2009-5-30 09:19 编辑 XSS的高级利用总结 -蠕虫,HTTPONLY,A ...
- Linux环境下实现管道通信-问题
#include <unistd.h> #include <sys/types.h> #include <sys/wait.h> #include <errn ...
- 使用Eclipse自带Web Service插件(Axis1.4)生成Web Service服务端/客户端
创建一个名字为math的Java web工程,并将WSDL文件拷入该工程中 将Axis所需的jar包拷贝至WebRoot\WEB-INF\lib目录下,这些jar包会自动导入math工程中 一,生成W ...