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
创建用于同步的用户
- 主从节点均需创建
- 创建同步用户,用户名自定义,密码需要符合密码规则,并授予用户
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';
- 从节点执行以下命令,命令中的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';
查看配置状态
- 主从节点均需执行以下命令,并记录下
File
和Position
的值。
mysql> show master status;
执行同步命令
- 主节点执行以下命令,
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;
查看同步状态
- 主从节点均需执行,SlaveIORunning 和 SlaveSQLRunning 都是Yes说明主从复制已经开启
mysql> show slave status \G;
测试
- 在主库中新增数据,查看从库是否马上显示
- 在主库中删除数据,查看从库是否马上删除
- 在主库中更新数据,查看从库是否马上更新
- 在从库中新增数据,查看主库是否马上显示
- 在从库中删除数据,查看主库是否马上删除
- 在从库中更新数据,查看主库是否马上更新
评论
0 评论