MySQL 数据库双向镜像、循环镜像(复制)

在MySQL数据库镜像的贴子中,主数据库A 的数据镜像到从数据库B,是单向的,Zen Cart网店的数据读写都必须在数据库A进行,结果会自动镜像到数据库B中。但是对数据库B的直接操作,不会影响数据库A。

对于双向数据库镜像,就是数据库A的数据变化要镜像到数据库B中,同时数据库B里的修改也要同时复制到数据库A里。

  对于循环数据库镜像,就是多个数据库A、B、C、D等,对其中任一个数据库的修改,都要同时镜像到其它的数据库里。

应用:同一个Zen Cart网店的数据库和程序,可以放置在不同的主机上,在任一台主机上新增的订单、客户资料,都会同时加入其它的主机数据库里。

  要实现双向或循环数据库镜像,首先要解决的就是防止数据库中自动递增(AUTO_INCREMENT)字段的冲突,以免多数据库各自生成一样的增量值。

  下面以三台主机循环镜像为例,A是B的主镜像,B是C的主镜像,C是A的主镜像。三台主机上MySQL设置文件 /etc /my.cnf 中分别加入下面的参数:

# 主机一:美国主机 A, IP: 100.101.102.201 
[mysqld] 
server-id = 10 
log-bin = mysql-bin 
log-slave-updates 
replicate-same-server-id = 0 
auto_increment_increment = 10 
auto_increment_offset = 1 
master-host = 100.101.102.203 
master-user = repl_user 
master-password = repl_password 
report-host = 100.101.102.201

# 主机二:中国主机 B, IP: 100.101.102.202 
[mysqld] 
server-id = 20 
log-bin = mysql-bin 
log-slave-updates 
replicate-same-server-id = 0 
auto_increment_increment = 10 
auto_increment_offset = 2 
master-host = 100.101.102.201 
master-user = repl_user 
master-password = repl_password 
report-host = 100.101.102.202

# 主机三:本地主机 C, IP: 100.101.102.203 
[mysqld] 
server-id = 30 
log-bin = mysql-bin 
log-slave-updates 
replicate-same-server-id = 0 
auto_increment_increment = 10 
auto_increment_offset = 3 
master-host = 100.101.102.202 
master-user = repl_user 
master-password = repl_password 
report-host = 100.101.102.203

简单说明: 
server-id:数据库标识,每个数据库标识必须唯一; 
replicate-same-server-id:设置为0,防止数据循环更新; 
auto_increment_increment:这是循环镜像里最重要的参数之一,表示自动增量为10,这将允许最多10台数据库加入这个循环镜像的阵列,而自动递增字段不会重复。 
auto_increment_offset:这是循环镜像里最重要的参数之一,表示偏移值,每个数据库的偏移值必须唯一,且在1和auto_increment_increment之间。 
master-host:主数据库服务器的IP; 
master-user:用于连接主数据库的镜像用户名; 
master-password:用于连接主数据库的镜像密码; 
report-host:提供给主数据库用于反向连接的IP,因为主数据库有时无法正确判断从服务器的IP,所以这里最好填上从服务器自己的IP地址。

另外,有时只需要镜像某些数据库,可以在 my.cnf 中加入: 
replicate-do-db = db_name1 
replicate-do-db = db_name2 
replicate-do-db = db_name3

这样就仅仅镜像db_name1/db_name2/db_name3

如果只是某些数据库不要镜像,可以在 my.cnf 中加入: 
replicate-ignore-db=db_name1 
replicate-ignore-db=db_name2 
replicate-ignore-db=db_name3

这样镜像时就忽略 db_name1/db_name2/db_name3 这三个数据库。

时间: 2024-10-09 09:40:35

MySQL 数据库双向镜像、循环镜像(复制)的相关文章

windows下 MySQL数据库双向同步 配置步骤

      最近在项目中遇到了要实现服务器上MySql数据双向同步,在网上找了很多资料,但是大部分都是在liux系统下配置的, 而且都是互相转载,没有一个详细的步骤,于是决定写一个windows系统下的完整配置,与大家分享,如有不足之处, 请大家指正.   工具/原料 两台服务器,操作系统均为window2012 数据中心版,其中一台服务器为A,IP地址为:192.168.1.2,另外一台为B,IP地址为:192.168.1.3 mysql  的版本最好保持一致,大版本号一定要一致,小更新不影响

mysql数据库备份并且实现远程复制

一.实现ssh 远程登陆 机器环境: 192.167.33.108 clent 用户:crawler 192.167.33.77 server 用户:crawler 1.客户端 生成密钥 /home/crawler/.ssh/ssh-keygen 2. 查看密钥文件权限 ls -ld ~/.ssh; ls -l ~/.ssh 3.修改文件权限 chmod 700 /home/crawler/.ssh chmod 600 /home/crawler/.ssh/id_rsa 4.复制公钥到服务器端

后端分布式系列:分布式存储-MySQL 数据库双向同步复制

MySQL 复制问题的最后一篇,关于双向同步复制架构设计的一些设计要点与制约. 问题和制约 数据库的双主双写并双向同步场景,主要考虑数据完整性.一致性和避免冲突.对于同一个库,同一张表,同一个记录中的同一字段的两地变更,会引发数据一致性判断冲突,尽可能通过业务场景设计规避.双主双写并同步复制可能引发主键冲突,需避免使用数据库自增类主键方案.另外,双向同步潜在可能引发循环同步的问题,需要做回环控制. 如上图所示,复制程序写入时也会产生 binlog,如何识别由复制程序产生的 binlog 并将其过

centos lvs+keepalived+mysql实现mysql数据库热备主主复制-亲测ok

实验环境: linux:centos6.6 虚拟ip(vip):192.168.135.199 mysql master:192.168.20.193 mysql slave:192.168.20.195 (这里只是为了后文方便区分,一个叫master,一个叫slave,其实在主主复制中,都是master也都是slave,没有主从之分) mysql的版本: [[email protected] ~]# mysql -V mysql  Ver 14.14 Distrib 5.1.73, for r

Mysql数据库主从及主主复制配置演示

From : http://www.cnblogs.com/tae44/p/4682810.html 实验系统:CentOS 6.6_x86_64 实验前提:提前准备好编译环境,防火墙和selinux都关闭 实验说明:本实验共有2台主机,IP分配如拓扑 实验软件:mariadb-10.0.20 实验拓扑: 一.安装mysql 1.编译安装mariadb: tar xf mariadb-10.0.20-linux-x86_64.tar.gz -C /usr/local/ cd /usr/local

MYSQL数据库中的主从级联复制的实现

主服务ip:192.168.1.107 级联服务ip:192.168.1.110 从服务ip:192.168.1.106 一.主服务器设置: 1.修改配置文件 vim /etc/my.cnf server_id=1 设置主服务的id log_bin=/data/binlog/bin 开启并设置二进制日志文件路径,建议单独磁盘存放 bin_log_format=row 设置二进制日志记录方式为行记录方式,此记录更全面 innodb_file_per_table 每个表单独一个文件,查找起来更方便

MySQL建立双向主备复制服务器配置方法

1.环境描述 服务器A(主) 192.85.1.175 服务器B(从) 192.85.1.176 Mysql版本:5.1.61 系统版本:System OS:ubuntu 10.10 X86 (系统安装及数据环境搭建,省略) 2. 创建同步用户: 在服务B命令行执行 : grant replication slave on *.* to 'replication'@'%' identified by 'mysqlsync'; flush privileges; grant FILE,SELECT

MySql数据库双主(双向)同步实现数据库双主热备

MySql数据库双主(双向)同步实现数据库双主热备配置步骤有一点复杂,大家一定要看清楚每一步小细节哦,希望文章对各位会带来帮助呀. 之前写过一篇 mysql Master Slave主从同步(复制)配置,属于数据库备份级别的.现在的需求是,两台服务器上都装有数据库,为了防止某一服务器出现问题而影响业务的运行,需要准备两台服务器分别运行mysql,且需要两台服务器的数据是保持同步的.也就是现在要说的mysql双向同步,实现数据库主备模式. 基础环境 操作服务器系统:Ubuntu 12.04 64-

Mysql数据库主从同步(复制)热备份

随着大数据的发展,数据的安全问题日益凸显,往常不被重视的数据库维护变得必不可缺,数据的灾备变成个各大企业/个人站长业务运行中必须重视的环节.上一篇文章提到了自动化备份避灾的几种方案及选择,今天就来实践一下主从/双向异地热备份方案. Mysql数据库同步(复制)的概念,主从同步使得数据可以从一个服务器无缝迁移复制到另一台服务器.这个过程中一台服务器充当主服务器(master),另一台或另外多台充当从服务器(slave).复制进程I/O是异步进行的,所以服务器不需要一直保持关联的状态. Mysql数