本文来自网络,具体待测,谨慎上生产。
系统环境: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;
测试
- 在主库中新增数据,查看从库是否马上显示
- 在主库中删除数据,查看从库是否马上删除
- 在主库中更新数据,查看从库是否马上更新
- 在从库中新增数据,查看主库是否马上显示
- 在从库中删除数据,查看主库是否马上删除
- 在从库中更新数据,查看主库是否马上更新
THE END
- 最新
- 最热
只看作者