配置环境:
- 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