mysql支持主主关系,是通过同步bin-log来实现数据同步,如mysqlA与mysqlB是主主关系,mysqlA的数据是通过同步mysqlA的bin-log来将数据同步到mysqlB,相反mysqlB的数据是通过同步mysqlB的bin-log来将数据同步到mysqlA。根据这一原理,如果双写mysqlA和mysqlB,可能产生数据冲突而造成数据不一致,因此在使用时需要避免双写造成的数据冲突问题。
对bin-log的了解可参照下面链接:
http://www.doc88.com/p-337769944580.html
好了,下面进行配置mysql主主关系。
例如有mysqlA(192.168.1.100)和mysqlB(192.168.1.101),需将它们配置主主关系。可以将一过程分解为两个子过程:(1)将mysqlA配成mysqlB的从库;(2)将mysqlB配成mysqlA的从库。可见,过程(2)是过程(1)的逆过程。
一、mysqlA配成mysqlB的从库
(1)登陆mysqlB(192.168.1.101)
(2)首先创建一个mysql账号作为同步用,然后赋与同步权限;
mysql>INSERT INTO mysql.user(Host,User,Password) VALUES("localhost","user_00",password("1234"));
mysql>GRANT REPLICATION SLAVE ON *.* TO 'user_00'@192.168.1.100 IDENTIFIED BY '1234'
mysql>FLUSH PRIVILEGES;
(3)编辑mysql的配置文件my.cnf(一般位置是/etc/my.cnf),添加下面项
log-bin=bin-log # 打开binlog
server-id = 1 # 标识mysqlB
auto_increment_increment = 2
auto_increment_offset = 1
binlog-do-db=discuz # 需要同步的DB
binlog-ignore-db=mysql # 不需要同步的DB
slave-skip-errors=all # 跳过错误,继续执行复制
上面其中auto_increment_increment = 2和auto_increment_offset = 1用于解决主主模式时自增加字段的数据冲突,它表示auto_increment字段产生的数值是:1, 3, 5, 7, …等奇数ID。
(4)重启mysqlB
#sudo service mysql restart
(5)查看master status
mysql>show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000003 | 106 | discuz | |
+------------------+----------+--------------+------------------+
(6)登陆mysqlA(192.168.1.100)
(7)编辑mysqlA的配置文件my.cnf,添加下面项
server-id = 2 #标识mysqlA
auto_increment_increment = 2
auto_increment_offset = 2
replicate-ignore-db=mysql
replicate-do-db=discuz
(8)重启mysqlA
#sudo service mysql restart
(9)从机mysqlA指定需要同步的主机mysqlB位置和binlog位置(该信息由步骤(5)提供)
mysql>slave stop;
mysql>change master to master_host='192.168.1.101', master_user='user_00', master_password='1234', master_port=3366, master_log_file='mysql-bin.000003', master_log_pos=106;
mysql>slave start;
(10)查看slave的同步状态
mysql>show slave status;
如果显示信息中 Slave_IO_Running: Yes Slave_SQL_Running: Yes,都为Yes,则说明mysqlA成功为mysqlB的从库,即主从关系建立。
二、mysqlB配成mysqlA的从库
此过程是过程一的逆过程。因此将上面的过程里的mysqlA和mysqlB对换一下操作,并略改下(3)、(7)(9)步骤:
(3)改为:只添加下面项
log-bin=bin-log # 打开binlog
binlog-do-db=discuz # 需要同步的DB
binlog-ignore-db=mysql # 不需要同步的DB
slave-skip-errors=all # 跳过错误,继续执行复制
(7)改为:只添加下面项
replicate-ignore-db=mysql
replicate-do-db=discuz
(9)改为:(其中master_log_file和master_log_pos由步骤(5)显示的信息提供)
mysql>slave stop;
mysql>change master to master_host='192.168.1.100', master_user='user_00', master_password='1234', master_log_file='mysql-bin.000003', master_log_pos=106;
mysql>slave start;
最后查看slave状态,此时slave是mysqlB,即在mysqlB是输入如下命令:
mysql>show slave status;
同样如果显示信息中 Slave_IO_Running: Yes Slave_SQL_Running: Yes,都为Yes,则说明mysqlB成功为mysqlA的从库,即主从关系建立。
至此,mysqlA和mysqlB的主主关系建立完成。它们互相同步的DB是discuz。
分享到:
相关推荐
本教程使用简洁易懂的文字详细说明了MYSQL数据库建立主从备份的全过程,旨在使MYSQL初学者在拿到这份文档也能配置MYSQL数据库的主从关系
Keepalived+Mysql互为主从高可用安装配置
MySQL参数优化对于新手来讲,是比较难懂的东西,其实这个参数优化,是个很复杂的东西,对于不同的网站,及其在线量,访问量,帖子数量,网络情况,以及机器硬件配置都有关系,优化不可能一次性完成,需要不断的观察...
MySQL 教程 MySQL 是最流行的关系型数据库管理系统,在 WEB 应用方面 MySQL 是最好的 RDBMS(Relational Database Management System:关系数据库 MySQL8.0数据库的一般配置 Linux环境的配置文件
Keepalived+mysql双主来实现MySQL-HA,我们必须保证两台MySQL数据库的数据完全一样,基本思路是两台MySQL互为主从关系,通过Keepalived配置虚拟IP,实现当其中的一台MySQL数据库宕机后,应用能够自动切换到另外一台...
MySQL配置文件中文详解,优化调试必备。内存设置、日志设置、主从复制设置、redo log和binlog的关系设置、Innodb设置
MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle旗下产品。MySQL是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的RDBMS (Relational Database Management System,关系...
通过zip文件解压安装MySQL时需要的配置文件my.ini。 MySQL是一种关系数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
MySQL是一个可用于各种流行操作系统平台的关系数据库系统,它具有客户机/服务器体系结构的分布式数据库管理系统。 本书分为三部分,分别介绍了MySQL的基础知识、配置和管理。第一部分介绍了MySQL的一般信息、...
MySQL 是一种广泛使用的关系型数据库管理系统,常被用于开发 Web 应用程序和数据分析。 ## 步骤一:下载 MySQL 1. 前往 MySQL 官方网站(https://dev.mysql.com/downloads/mysql/)并下载适用于您操作系统的 MySQL...
MySQL是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的RDBMS (Relational Database Management System,...
MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。 MySQL所使用的 SQL 语言是用于访问数据库的最常用...
这个是MySQL5.5再contos6下的安装方法 MySQL 是目前最流行的关系型数据库管理系统,在 WEB 应用方面 MySQL 也是目前最好的 RDBMS 应用软件之一。随着淘宝去IOE(去除IBM小型机、Oracle数据库及EMC存储设备)化的推进,...
MySQL Proxy应用入门 2 MySQL Proxy配置选项 MySQL Proxy应用入门 3 使用MySQL Proxy MySQL UDF Mysql Proxy安装配置测 MySQL5 5 Semi synchronous Replication(半同步复制) mysqlslap MySQL压力测试工具 mysql ...
MySQL是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的RDBMS (Relational Database Management System,...
MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle公司旗下的产品。由于 MySQL 性能高、成本低、可靠性好,已经成为目前非常流行的开源数据库,因此 MySQL 被广泛地应用在中小型网站中...
MySQL是一种流行的开源关系型数据库管理系统(RDBMS),用于存储和检索数据。以下是MySQL的安装和配置的基本步骤。请注意,这里提供的步骤可能因操作系统和MySQL版本而异,因此请确保查阅相关文档以获取最新的信息。...
MySQL的双机热备份是基于MySQL内部复制功能,建立在两台或者多台以上的服务器之间,通过它们之间的主从关系,是插入主数据库的数据同时也插入到从数据库上,这实现了动态备份当前数据库的功能。下面细说一下主从热...
使用DBMover可以灵活定义Mysql和Oracle之间表和字段的对照关系,也可以在DBMover创建一个查询,把查询结果当作源表转入到Oracle中。 Dbmover for Mysql to Oracle 可以定时,定周期自动运行。 支持 Oracle 8i 以后...