MySQL数据库双向镜像、循环镜像(复制)
2023-06-13 09:14:28 时间
对于双向数据库镜像,就是数据库A的数据变化要镜像到数据库B中,同时数据库B里的修改也要同时复制到数据库A里。
对于循环数据库镜像,就是多个数据库A、B、C、D等,对其中任一个数据库的修改,都要同时镜像到其它的数据库里。
应用:同一个ZenCart网店的数据库和程序,可以放置在不同的主机上,在任一台主机上新增的订单、客户资料,都会同时加入其它的主机数据库里。
要实现双向或循环数据库镜像,首先要解决的就是防止数据库中自动递增(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这三个数据库。
对于循环数据库镜像,就是多个数据库A、B、C、D等,对其中任一个数据库的修改,都要同时镜像到其它的数据库里。
应用:同一个ZenCart网店的数据库和程序,可以放置在不同的主机上,在任一台主机上新增的订单、客户资料,都会同时加入其它的主机数据库里。
要实现双向或循环数据库镜像,首先要解决的就是防止数据库中自动递增(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这三个数据库。
相关文章
- MySQL SQL 导入:简单快捷的数据库操作(mysqlsql导入)
- MySQL数据库:应用模型深入分析(mysql数据库模型)
- MySQL:优化大数据处理性能(mysql大数据处理优化)
- AIDE简化MySQL数据库连接(AIDE连接mysql)
- MySQL官网安装:快速开启您的数据库之旅(官网下载mysql)
- MySQL数据库主从复制:确保数据安全性(mysql数据库主从复制)
- 解决MySQL修改密码无法成功的问题(mysql不能修改密码)
- 步步为营:如何连接MySQL数据库(连接mysql数据库代码)
- Mysql数据库重要索引备份与恢复(mysql备份索引)
- MySQL中日期运算的技巧(mysql日期运算)
- MySQL实现高性能分页:优化数据库查询与响应速度(mysql高性能分页)
- MySQL跳板机:安全高效的数据库连接方式(mysql跳板机)
- MySQL网络数据库开发:让网络更迅速(mysql网络数据库开发)
- MySQL如何查找重复数据?(mysql查找数据重复)
- 数据库DOS环境下连接远程MySQL数据库(dos连接远程mysql)
- MySQL数据导入报错解决方案(mysql 导入 报错)
- MySQL数据库文件存储之位置探究(mysql数据库文件存放位置)
- 突破性能,让MySQL超越豆瓣(高性能mysql豆瓣)
- MySQL的host存储位置解决您的数据库连接疑惑(mysql中host在哪)
- MySQL数据库简单而快速的数据写入(c mysql数据库写入)
- MySQL 函数编写全攻略(mysql中函数编写)
- MySQL 数据库三范式详解及面试技巧(mysql三范式面试)
- Mysql和Xmind交互提高数据库管理效率(mysql xmind)
- MySQL 上一步是什么25字小百科带你了解 MySQL 数据库的启动和连接过程(mysql 上一步)
- MySQL数据库不推荐使用root账户进行操作(mysql不是root)
- MySQL一星期后,你需要知道什么(mysql 一星期之后)