配置环境:

  • Centos7
  • Mysql 5.7.36

Master部署

一.my.cnf配置

设置server_id,注意要唯一
  • server_id=121
复制过滤:也就是指定哪个数据库不用同步(mysql库一般不同步)
binlog-ignore-db=mysql
binlog-ignore-db=sys
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schem
开启二进制日志功能,可以随便取,最好有含义(关键就是这里了)
  • log-bin=mysql-bin
为每个session 分配的内存,在事务过程中用来存储二进制日志的缓存
  • binlog_cache_size=16M
主从复制的格式(mixed,statement,row,默认格式是statement)
  • binlog_format=mixed
二进制日志自动删除/过期的天数。默认值为0,表示不自动删除。
  • expire_logs_days=30

跳过主从复制中遇到的所有错误或指定类型的错误,避免slave端复制中断。

如:1062错误是指一些主键重复,1032错误是因为主从数据库数据不一致

  • slave_skip_errors=1062
控制binlog的写入频率。每执行多少次事务写入一次
  • 这个参数性能消耗很大,但可减小MySQL崩溃造成的损失,为0表示不控制
  • sync_binlog = 1
  • innodb_flush_log_at_trx_commit = 1
重启mysql

二.创建用户

#主要是要授予用户REPLICATION SLAVE权限和REPLICATION CLIENT权限

mysql> CREATE USER 'slave'@'%' IDENTIFIED BY 'SlavePassword';
mysql> GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';
````

### Slave部署

#### 一.my.cnf配置

> **设置server_id,注意要唯一**

server_id=122


> **复制过滤:也就是指定哪个数据库不用同步(mysql库一般不同步)**

binlog-ignore-db=mysql
binlog-ignore-db=sys
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schem


> **开启二进制日志功能,以备Slave作为其它Slave的Master时使用**

log_bin=mysql-slave1-bin


> **为每个session 分配的内存,在事务过程中用来存储二进制日志的缓存**

binlog_cache_size=16M


> **主从复制的格式(mixed,statement,row,默认格式是statement)**

binlog_format=mixed


> **二进制日志自动删除/过期的天数。默认值为0,表示不自动删除。**

expire_logs_days=30


> **跳过主从复制中遇到的所有错误或指定类型的错误,避免slave端复制中断。**

- 如:1062错误是指一些主键重复,1032错误是因为主从数据库数据不一致

slave_skip_errors=1062


> **relay_log配置中继日志**

relay_log=mysql-relay-bin


> **log_slave_updates表示slave将复制事件写进自己的二进制日志主要为了作为其他的master**

log_slave_updates=ON


> **防止改变数据(除了特殊的线程)**

read_only=1(为了使备机随时转正,所以这里允许写)


> **MySQL主从复制的时候,当Master和Slave之间的网络中断,但是Master和Slave无法察觉的情况下(比如防火墙或者路由问题)。Slave会等待slave_net_timeout设置的秒数后,才能认为网络出现故障,然后才会重连并且追赶这段时间主库的数据,默认60**

slave_net_timeout=20


> **如果启用,此变量将在服务器启动后立即启用自动中继日志恢复。**

relay_log_recovery = ON


> **该变量确定从站在中继日志中的位置是写入FILE还是写入表**

relay_log_info_repository = TABLE


> 重启mysql

### 完成Master和Slave链接

1.登录master数据库

mysql > show master status;


![image.png](https://static.avday.cn/avday/upload/2022/01/3137655668.png)

2.登录slave数据库

mysql > change master to master_host='ip地址',master_port=3306,master_user='slave',master_password='密码', master_log_file='mysql-bin.000007',master_log_pos=1503;
mysql > start slave;
mysql > show slave status \G


![image.png](https://static.avday.cn/avday/upload/2022/01/1398127509.png)

> 检查下面属性状态:

- Slave_IO_Running:YES
- Slave_SQL_Running:YES
Last modification:January 19, 2022
如果觉得我的文章对你有用,请随意赞赏