MySQL数据库 主主同步配置

前提:

MySQL版本:5.7.44

系统版本:Centos 7.8

已安装好MySQL数据库,未安装看《Centos下安装MySQL数据库》

IP地址
master-A192.168.10.11
master-B192.168.10.12

配置

1. 创建用户并设置权限

(1)master-A

create user 账户名 identified by '密码';
grant replication slave on *.* to '账户名'@'master-B的IP' identified by '密码';

(2)master-B跟上面操作一样

create user 账户名 identified by '密码';
grant replication slave on *.* to '账户名'@'master-A的IP' identified by '密码';

2.  master-A和master-B创建数据库(已有可以忽略)

create database 数据库名  character  set utf8;

3. 配置文件

vim /etc/my.cnf

 需要注意的点

[mysqld]
server-id                      = 1                     #[必须]服务器唯一ID,每台服务器需不同
log-bin                        = /home/mysql/mysql-bin #[必须]启用二进制文件
binlog_format                  = mixed                 #[不是必须]二进制文件启用混合模式
expire-logs-days               = 14                    #[不是必须]二进制文件过期时间,单位是天
sync-binlog                    = 1                     #[不是必须]当每进行1次事务提交之后,MySQL将进行一次磁盘同步指令来将binlog_cache中的数据强制写入磁盘

# MASTER DB #
binlog-do-db                   = test,androidpnserver                        #[不是必须]只将对应的数据库变动写入二进制文件。如果有多个数据库可用逗号分隔,或者使用多个binlog-do-db选项
binlog-ignore-db               = mysql,information_schema,performance_schema #[必须]不需要记录二进制日志的数据库。如果有多个数据库可用逗号分隔,或者使用多个binlog-do-db选项。一般为了保证主主同步不冲突,会忽略mysql数据库。
auto-increment-increment       = 10                                          #[必须]
auto-increment-offset          = 1                                           #[必须]
#做主主备份的时候,因为每台数据库服务器都可能在同一个表中插入数据,如果表有一个自动增长的主键,那么就会在多服务器上出现主键冲突。
#解决这个问题的办法就是让每个数据库的自增主键不连续。上面两项说的是,假设需要将来可能需要10台服务器做备份,将auto-increment-increment设为10。而auto-increment-offset=1表示这台服务器的序号。从1开始,不超过auto-increment-increment。

# SLAVE DB #
replicate-do-db                = test,androidpnserver                        #[不是必须]只同步对应的数据库。如果有多个数据库可用逗号分隔,或者使用多个replicate-do-db选项
replicate-ignore-db            = mysql,information_schema,performance_schema #[必须]不需要同步的数据库。如果有多个数据库可用逗号分隔,或者使用多个replicate-ignore-db选项。一般为了保证主主同步不冲突,会不同步mysql数据库。
relay_log                      = /home/mysql/relay-bin                       #[不是必须]开启中继日志,复制线程先把远程的变化复制到中继日志中,再执行。
log-slave-updates              = ON                                          #[必须]中继日志执行之后将变化写入自己的二进制文件

slave-skip-errors              = all                                         #[不是必须]跳过所有的sql语句失败

 (1)master-A

(2)master-B 

(3)2台服务器都重启

systemctl restart mysqld

4. 配置master

(1)两边先锁表,防止新的数据写入。同时查看master状态

         记住 File 和 Position ,下面会用到
flush tables with read lock;   #锁表
show master status;            #查看master状态
          master-A

         master-B

(2)master-A

change master to master_host='master-B的IP',
master_user='master-B创建的账户名',
master_password='对应账户密码',
master_log_file='master-B的File',    
master_log_pos=master-B的Position;   

(3)master-B

change master to master_host='master-A的IP',
master_user='master-A创建的账户名',
master_password='对应账户密码',
master_log_file='master-A的File',    
master_log_pos=master-A的Position;  

5. 启动服务

(1)2台数据库都启动主从 

unlock tables;     #把表解开
start slave;

(2) 查看连接情况

show slave status \G
      出现2个YES则成功

6. 测试

(1)在master-A的test库中插入数据

       在 master-B中查看,能看到数据则成功

           反过来测试,在B中插入数据在A中看
           能看到则成功

 (2)A修改B的数据,B修改A的数据

都能修改成功

主主同步配置完成

参考链接:

MySQL配置主主同步

  • 6
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
配置 MySQL 数据库主从同步的大体步骤如下: 1. 在主数据库上创建一个用于复制的用户,并授予其 REPLICATION SLAVE 权限。 2. 在从数据库配置主服务器的连接信息。 3. 在从数据库上启动复制进程。 下面是详细步骤: 1. 在主数据库上创建一个用于复制的用户,并授予其 REPLICATION SLAVE 权限。 在主数据库上创建一个用于复制的用户,例如: ``` CREATE USER 'repl'@'%' IDENTIFIED BY 'password'; GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%'; ``` 这将创建一个名为 `repl` 的用户,并将其密码设置为 `password`。然后,将 `REPLICATION SLAVE` 权限授予该用户,以便从服务器可以使用该用户进行连接和同步。 2. 在从数据库配置主服务器的连接信息。 在从数据库上打开 MySQL 配置文件 `my.cnf`,并添加以下内容: ``` [mysqld] server-id=2 log-bin=mysql-bin binlog-do-db=database_name # 需要同步数据库名 relay-log=relay-log ``` 其中,`server-id` 指定了从服务器的唯一 ID,`log-bin` 指定了二进制日志文件的名称和位置,`binlog-do-db` 指定了需要同步数据库名,`relay-log` 指定了中继日志文件的名称和位置。 在配置文件中添加完这些内容后,保存并关闭文件。 3. 在从数据库上启动复制进程。 在从数据库上启动 MySQL,并使用以下命令连接到主数据库: ``` CHANGE MASTER TO MASTER_HOST='master_host', MASTER_USER='repl', MASTER_PASSWORD='password', MASTER_LOG_FILE='mysql-bin.000001', # 主数据库上的二进制日志文件名 MASTER_LOG_POS=106; # 主数据库上的二进制日志文件位置 ``` 其中,`MASTER_HOST` 指定了主数据库的 IP 地址或域名,`MASTER_USER` 和 `MASTER_PASSWORD` 指定了在主数据库上创建的用于复制的用户和密码,`MASTER_LOG_FILE` 和 `MASTER_LOG_POS` 指定了主数据库上的二进制日志文件名和位置。 然后,启动从服务器的复制进程: ``` START SLAVE; ``` 至此,MySQL 数据库主从同步已经配置完成。你可以通过 `SHOW SLAVE STATUS\G` 命令来查看从服务器的复制状态。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

两拆

谢谢你的观看和喜欢

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值