MySQL 双向主从配置

系统环境:CentOS Linux release 7.9.2009 (Core)
MySQL版本:5.37
主节点:192.168.10.11
从节点:192.168.10.12

修改配置文件

  • 主从节点均需配置
# vim /etc/my.cnf
  • 主节点配置
# 为当前服务取一个唯一的 id
server-id = 1

# 这个参数表示启用 binlog 功能,并指定 binlog 的存储目录
log-bin = mysql-bin

binlog_format = ROW

# 设置一个 binlog 文件的最大字节
# 设置最大 100MB
max_binlog_size = 104857600

# 设置了 binlog 文件的有效期(单位:天)
expire_logs_days = 7

# 忽略写入binglog日志的库
binlog-ignore-db = mysql,information_schema,performance_schema

# 写缓存多少次,刷一次磁盘,默认 0 表示这个操作由操作系统根据自身负载自行决定多久写一次磁盘
# 1 表示每一条事务提交都会立即写磁盘,n 则表示 n 个事务提交才会写磁盘
sync_binlog = 0

# 从库的写操作记录到bin-log
log-slave-updates = 1 

# 字段变化增量值
auto-increment-increment = 2 

# 初始字段ID为1, (备用库为2)
auto-increment-offset = 1 

slave-skip-errors = all
  • 从节点配置
# 为当前服务取一个唯一的 id
server-id = 2

# 这个参数表示启用 binlog 功能,并指定 binlog 的存储目录
log-bin = mysql-bin

binlog_format = ROW

# 设置一个 binlog 文件的最大字节
# 设置最大 100MB
max_binlog_size = 104857600

# 设置了 binlog 文件的有效期(单位:天)
expire_logs_days = 7

# 忽略写入binglog日志的库
binlog-ignore-db = mysql,information_schema,performance_schema

# 写缓存多少次,刷一次磁盘,默认 0 表示这个操作由操作系统根据自身负载自行决定多久写一次磁盘
# 1 表示每一条事务提交都会立即写磁盘,n 则表示 n 个事务提交才会写磁盘
sync_binlog = 0

# 从库的写操作记录到bin-log
log-slave-updates = 1 

# 字段变化增量值
auto-increment-increment = 2 

# 初始字段ID为1, (备用库为2)
auto-increment-offset = 2 

slave-skip-errors = all

image.png

创建用于同步的用户

  • 主从节点均需创建
  • 创建同步用户,用户名自定义,密码需要符合密码规则,并授予用户 REPLICATION SLAVE 权限和 REPLICATION CLIENT 权限,用于在主从库之间同步数据
  • 主节点执行以下命令,命令中的IP地址为从节点的IP地址
mysql> CREATE USER 'slavedb'@'192.168.10.12' IDENTIFIED BY 'Abc123..456';
mysql> GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slavedb'@'192.168.10.12';

image.png

  • 从节点执行以下命令,命令中的IP地址为主节点的IP地址
mysql> CREATE USER 'slavedb'@'192.168.10.11' IDENTIFIED BY 'Abc123..456';
mysql> GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slavedb'@'192.168.10.11';

image.png

查看配置状态

  • 主从节点均需执行以下命令,并记录下FilePosition的值。
mysql> show master status;

image.png

image.png

执行同步命令

  • 主节点执行以下命令,master_host值为从节点的IP地址,master_log_file值为从节点的File值,master_log_pos值为从节点的Position
mysql> change master to master_host='192.168.10.12', master_user='slavedb', master_password='Abc123..456', master_port=3306, master_log_file='mysql-bin.000001', master_log_pos=655;
mysql> start slave;
  • 从节点执行以下命令,master_host值为主节点的IP地址,master_log_file值为主节点的File值,master_log_pos值为主节点的Position
mysql> change master to master_host='192.168.10.11', master_user='slavedb', master_password='Abc123..456', master_port=3306, master_log_file='mysql-bin.000001', master_log_pos=655;
mysql> start slave;

image.png

image.png

查看同步状态

  • 主从节点均需执行,SlaveIORunning 和 SlaveSQLRunning 都是Yes说明主从复制已经开启
mysql> show slave status \G;

image.png

image.png

测试

  • 在主库中新增数据,查看从库是否马上显示
  • 在主库中删除数据,查看从库是否马上删除
  • 在主库中更新数据,查看从库是否马上更新
  • 在从库中新增数据,查看主库是否马上显示
  • 在从库中删除数据,查看主库是否马上删除
  • 在从库中更新数据,查看主库是否马上更新


标题:MySQL 双向主从配置
作者:Mune
地址:https://cnxiaobai.com/articles/2022/03/20/1647765158472.html

    评论
    0 评论
avatar

取消