我的编程空间,编程开发者的网络收藏夹
学习永远不晚

MySQL主主(双主)数据同步

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

MySQL主主(双主)数据同步

1. 两台mysql都可以读写,互为主备,默认只是用一台(masterA)负责数据的写入,另一台(masterB)备用;
2. masterA是masterB的主库,masterB又是masterA的主库,他们互为主从;

不足之处:
1. masterB可能处于抑制空闲状态(可以用他当从库,负责部分查询);
2. 主库后面提供服务的从库要等masterB先同步完了数据后才能去masterB上去同步数据,肯能会造成一定程度的同步延迟;

搭建环境

系统:CentOS7
数据库版本:5.6.36
masterA地址:192.168.188.2
masterB地址:192.168.188.3
安装目录:/usr/local/mysql/
数据目录:/data/mysql/
A与B机器都安装好了MySQL,数据库与表都提前同步好;

防火墙配置

iptables

添加mysql同学端口(默认3306)

vim /etc/sysconfig/iptables                //编辑iptables文件,也可以用iptables命令来添加,不过要保存命令
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT        //添加允许3306端口通过
service iptables restart            //重启iptables服务

关闭selinux

vim /etc/selinux/config                //编辑SELinux配置文件
SELINUX=disabled                //修改值为disabled为关闭

服务器设置

masterA设置(192.168.188.2)

vim /etc/my.cnf                //编辑my.cnf文件
server-id=2 //增加server-id为2,一般为自己ip
log_bin=test01 //设置log_bin名为test01
/etc/init.d/mysqld restart        //重启mysql服务
mysql -uroot -p123456            //登录mysql,不要照抄,-u后面是账号,-p后面是密码
grant replication slave on *.* to 'repl'@'192.168.188.3' identified by '123456';        //创建mysql账号repl,只容许指定ip访问,也可以指定ip范围192.168.188.%,其中%为通配符,表示所有;
flush privileges;            //刷新授权表信息
flush tables with read lock;    //锁定数据库表暂时无法写服务;
show master status;        //查看binlog文件值与pos值
stop slave;            //关闭同步

masterB设置(192.168.188.3)

vim /etc/my.cnf
server-id=3                        //增加server-id为3,一般为自己ip
log_bin=test02                    //设置log_bin名为test02
/etc/init.d/mysqld restart    //重启mysql服务
mysql -uroot -p123456        //登录mysql
grant replication slave on *.* to 'repl'@'192.168.188.2' identified by '123456';              //创建用户,允许192.168.188.2登录本机器
flush privileges;                //刷新授权表
stop slave;                        //关闭同步
show master status;        //查看binlog文件值与pos值
change master to master_host='192.168.188.2', master_user='repl', master_password='123456', master_log_file='test01.000001', master_log_pos=664383;        //这里注意log_file与pos值都要对应对应A的show master status;值
start slave;        //开启同步

masterA设置

change master to master_host='192.168.188.3', master_user='repl', master_password='123456', master_log_file='test02.000001', master_log_pos=664343;     //这里log_file与pos值写的必须是B上show master status;的值
start slave;                    //开启同步
unlock tables;                //解锁写

测试主主

在A的test数据库下建立t1表,B上查询后有t1表,证明B能同步A修改的数据;
在B的test数据库下建立t2表,A上查询,有t2表,证明A能同步到B修改后的数据;

masterA设置

mysql -uroot -p123456                //登录mysql
mysql> use test;                //切换到数据库test
mysql> show tables;            //查看当前数据库的所有表,这里没有一个表
Empty set (0.00 sec)
mysql> create table t1(`id` int(4),`name` char(40));            //插入一个表t1
mysql> show tables;       //查看当前数据库的表
+----------------+
| Tables_in_test |
+----------------+
| t1             |
+----------------+
1 row in set (0.00 sec)

masterB

mysql -uroot -p123456                //登录mysql
use test;                //切换到数据库test
mysql> show tables;            //查询同步到数据库test下出现了t1表,证明B能同步A的数据;
+----------------+
| Tables_in_test |
+----------------+
| t1             |
+----------------+
1 row in set (0.00 sec)
create table t2(`id` int(4),`name` char(40));            //新建一个t2表,如果A能同步到,就证明A能同步到B

切换masterA(省略了登录与切换数据库的命令)

mysql> show tables;    //查询A的test数据库下所有的表
+----------------+
| Tables_in_test |
+----------------+
| t1             |
| t2             |
+----------------+
2 rows in set (0.00 sec)

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

MySQL主主(双主)数据同步

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

mysql主从同步

#!/bin/bash . /etc/rc.d/init.d/functions if [ $# -ne 0 ];then    echo "Usage:sh `basename $0`"    exit 1 fi #MASTER VARIABLES #bin
mysql主从同步
2017-01-13

MySQL 主从同步

一、概述     原理图如下:     功能: BinLog:二进制文件,存储MasterDB(主数据库)中修改数据的内容,存储内容的格式有Statement,Row,Mixed。 Relay Log:功能作用与Binlog一样,不同点在于当日志内的内
MySQL 主从同步
2018-11-12
2024-04-02

MYSQL数据库怎么设置主从同步

本篇文章为大家展示了MYSQL数据库怎么设置主从同步,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。1、配置主数据库主master : 192.168.1.132从slave : 192.168.1.
2023-06-29

编程热搜

目录