项目申请了两台数据库服务器,为了保持数据同步,就搞了个数据同步,以此文记录以备后续使用:
首先声明:
服务器操作系统都是CentOS6.1、mysql版本号一致,为了减少出现其他问题的可能性,故做此环境搭配。
数据库服务器A,ip地址:192.168.6.108
数据库服务器B,ip地址:192.168.6.200
当然 首先要备份一台数据最新的数据库,然后等设置同步完毕之后都还原成相同的数据!
先做B同步A数据库的数据功能:
暂时称A为主机Master、B为从机Slave
A主机Master
1、修改mysql数据库conf文件,修改/etc/my.conf
在
# Replication Master Server (default)
# binary logging is required for replication
之后增加
server-id = 1 #自带就有的话就不用添加 看一下my.conf上下文 binlog-do-db=mydb_name #需要同步的数据库名称 binlog-ignore-db=mysql #需要忽略的数据库名
2、重启mysql
(CentOS是serice mysqld restart 其他系统的自行重启 若不知请谷歌、度娘)
3、创建一个MySQL帐号为同步专用
用root用户登陆mysql
mysql> grant replication slave,reload,super on *.* to backup@192.168.5.200 identified by 'backup';
mysql> flush privileges;
ps:我这里是创建了一个backup用户密码也是backup的mysql数据库用户,用于同步。@后面指定该账户允许远程登录的ip,也就是B从机的ip地址
B从机Slave
1、同样的修改mysql数据库conf文件,修改/etc/my.conf
在
# Replication Master Server (default)
# binary logging is required for replication
之后增加
server-id = 2 #自带就有的话就不用添加 看一下my.conf上下文 master-host=192.168.5.108 #此处是需要备份的主机ip 这里填的是A主机的ip master-user=backup #此处是备份的账号 master-password=backup #此处是备份账号的密码 master-port=3306 #数据库端口号 没改就填默认的3306 replicate-ignore-db=mysql #需要忽略的数据库名 replicate-do-db=mydb_name #需要同步的数据库名称
启动同步
在主服务器A上,mysql命令下(root用户登陆mysq)
mysql> show master status;
eg:
+一一一一一一一一一一+一一一一一一+一一一一一一一一+一一一一一一一一一一+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+一一一一一一一一一一+一一一一一一+一一一一一一一一+一一一一一一一一一一+
| mysql-bin.000012 | 106 | mydb_name | mysql |
+一一一一一一一一一一+一一一一一一+一一一一一一一一+一一一一一一一一一一+
从服务器B上,mysql命令下(同样用root用户登陆mysq)
mysql> slave stop;
mysql> change master to master_log_file='mysql-bin.000012',master_log_pos=106;
mysql> slave start;
ps:
master_log_file就是在主服务器mysql下show master status;显示的File列的值
master_log_pos就是在主服务器mysql下show master status;显示的Position列的值
还是在从服务器B的mysql命令下
用show slave status \G;看一下从服务器的同步情况
mysql>show slave status \G;
有如下两项的值都是YES就表示已经在同步
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
否则就是同步失败,当然了,失败的原因有N种,自己慢慢谷歌、度娘,这里只把我自己的操作步骤记录。
设置MySQL双向同步
其实设置双向同步就是把上面的步骤重复一下,只是A和B服务器的操作反过来,A变成从服务器、B变成主服务器!
1、修改B服务器的my.conf,添加
binlog-do-db=mydb_name #需要同步的数据库名称 binlog-ignore-db=mysql #需要忽略的数据库名
2、重启B服务器的mysql (service mysqld restart)
3、登陆mysql,
mysql> grant replication slave,reload,super on *.* to backup@192.168.5.108 identified by 'backup';
mysql> flush privileges;
ps:创建一个backup用户,密码也是backup的mysql数据库用户,用于同步。@后面指定该账户允许远程登录的ip,也就是A从机的ip地址。
4、修改A服务器的my.cnf,添加
master-host=192.168.5.200 #此处是需要备份的主机ip 这里填的是A主机的ip master-user=backup #此处是备份的账号 master-password=backup #此处是备份账号的密码 master-port=3306 #数据库端口号 没改就填默认的3306 replicate-ignore-db=mysql #需要忽略的数据库名 replicate-do-db=mydb_name #需要同步的数据库名称
5、重启A服务器的mysql(service mysqld restart)
6、在主服务器B MySQL命令符下:
mysql> show master status;
eg:
+一一一一一一一一一一+一一一一一一+一一一一一一一一+一一一一一一一一一一+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+一一一一一一一一一一+一一一一一一+一一一一一一一一+一一一一一一一一一一+
| mysql-bin.000014 | 188 | mydb_name | mysql |
+一一一一一一一一一一+一一一一一一+一一一一一一一一+一一一一一一一一一一+
7、在服务器A MySQL命令符下:
mysql> slave stop;
mysql> change master to master_log_file='mysql-bin.000014',master_log_pos=188;
mysql> slave start;
8、还是在从服务器A的mysql命令下
用show slave status \G;看一下从服务器的同步情况
mysql>show slave status \G;
有如下两项的值都是YES就表示已经在同步
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
然后还原数据至最新数据库!
至此 双向同步配置完毕!
ps:因为是基于操作日志备份,所以设置同步前请把数据库先备份,然后用用一份备份还原数据库,之后数据就可以保持一致!
相关推荐
Mysql5.5数据库双向同步
这是关于linux下Mysql数据库单双向同步详细配置文档,已经经过试验验证。
mysql,两个数据库,实现实时数据同步,对于需要实现mysql同步的用户非常有用
拥有它,烦人的数据库同步将迎刃而解 mysql双向主主同步关键性文档
Mysql两个数据库表之间双向数据同步方案.docx
1.1 环境搭建 准备两台Windows NT ...分别在A、B节点上登陆mysql 数据库,创建同步帐户并赋予同步权限,如下: A节点操作: 运行cmd, cd进入iKEY版本安装目录下的iKEY\mysql\bin下,然后执行mysql –uroot –p12345
linux下实现mysql同步,达到表级同步
帮助需要配置mysql同步却又不熟悉方法的人,即使小白也能通过文档快速操作,实现mysql数据库的双向同步,并配置keepalvied实现虚ip自动切换。
数据库的双主双写并双向同步场景,主要考虑数据完整性、一致性和避免冲突。对于同一个库,同一张表,同一个记录中的同一字段的两地变更,会引发数据一致性判断冲突,尽可能通过业务场景设计规避。双主双写并同步复制...
MySQL数据库实现双活是指在多个数据中心中安装有相同的MySQL服务,实现两个数据中心之间的数据库同步,达到数据双向同步的效果,保证数据的高可用性和容灾性。避免主从同步的延迟在双主复制的基础上,需要进行一些...
windows下mysql双向同步备份实现方法以下的文章主要讲述的是在windows环境下实现MySQL数据库的主从同步备份的正确操作方案,我在一些相关的网站看见关于windows环境下实现MySQL数据库的主从同步备份的操作步骤描述,...
● 支持双向同步 ● 支持二进制字段 ● 秒级实时同步 ● 高可靠无遗漏 能长期无人值守同步,即使发生断网、断电等故障,也只影响当时;一旦故障解除,同步就会自动恢复,且不会遗漏数据。 ● 异常提醒通知
SQLite DBSync是开源嵌入式数据库SQLite的数据同步引擎,实现了SQLite与SQLite数据库之间以及SQLite与异构数据库Oracle、MySQL、SQLServer之间的增量的、双向的数据同步功能。在文章中对SQLite DBSync 的体系结构、...
通过mysql自带的数据同步机制,可以方便的实现mysql数据库的数据同步。如果需要实现双向同步,则从A-B配置单向同步后,再从B-A配置一遍即可。
主服务器:centos 5.2 mysql 5.1.35 源码 IP:192.168.1.22 从服务器:centos 5.2 mysql 5.1.35 源码 IP:192.168.1.33 配置: 一、主服务器 1.1、创建一个复制用户,具有replication slave 权限。 mysql>grant ...
mysql linix 主备同步 写数据库 读数据库
实现了mysql数据库的单向数据同步,和双向数据同步
支持指定双向同步 支持主流的关系型数据库:mysql,db2,postgresql,oracle,sqlserver 本程序由java编写,基于1.8版本,方便打包移植。本程序的最大用处就是生成集市或数仓所需要的基础层数据源。 简单的预期一定...
通过BDB可以快速建立数据库模型、并随时与实体数据库进行双向同步。 同时它还可以为您的应用程序创建数据库自动安装(或自动升级)程序、 以及实现不同数据库平台间数据库迁移等。 <br>此外、在BDB中提供...
通过BDB可以快速建立数据库模型、并随时与实体数据库进行双向同步。 同时它还可以为您的应用程序创建数据库自动安装(或自动升级)程序、 以及实现不同数据库平台间数据库迁移等。 此外、在BDB中提供了对开发语言的...