参考资料
- 有关mysql的innodb_flush_log_at_trx_commit参数
https://blog.csdn.net/codepen/article/details/52160715 - Mariadb二进制日志binlog详解
https://www.cnblogs.com/skymyyang/p/7798670.html - 二进制日志相关命令
https://www.fujieace.com/mysql/bin-log.html
低级版配置
一个主服务器 一个从服务器
1.master配置
- 修改etc/my.cnf文件
[mysqld]
server-id=1
log_bin=master-bin
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema
binlog-ignore-db=test
innodb_flush_log_at_trx_commit=1
binlog_format=mixed
一定要加在[mysqld]之下
参数含义解释:
[mysqld] 服务端基本设置
server-id mysql实例的唯一标记
log_bin=master-bin 开启二进制日志
binlog-ignore-db 忽略的数据库二进制日志
binlog_format 设置二进制日志格式
innodb_flush_log_at_trx_commit innodb磁盘写入策略
- 添加备份账号
mysql> grant replication slave on *.* to 'backup'@'%' identified by '123456';
mysql> flush privileges;
replication slave 拥有该权限的用户才可以进行复制
- 重启mariadb
service mariadb restart
- 查看记录log_bin 和pos
2.slave配置
- 修改/etc/my.cnf文件
[mysqld]
server-id=2
relay-log-index=slave-relay-bin.index
relay-log=slave-relay-bin
relay_log_recovery=1
参数解释:
relay-log-index=slave-relay-bin.index 开启中继日志
relay-log=slave-relay-bin
relay_log_recovery 当slave从库宕机后,假如relay-log损坏了,导致一部分中继日志没有处理,则自动放弃所有未执行的relay-log,并且重新从master上获取日志,这样就保证了relay-log的完整性。默认情况下该功能是关闭的,将relay_log_recovery的值设置为 1时,可在slave从库上开启该功能,建议开启。
- 重启mariadb
- 配置slave相关参数
mysql> stop slave;
mysql> change master to
master_host='master IP',
master_user='backup',
master_password='123456',
master_log_file='master-bin.000001',
master_log_pos=245;
mysql> start slave;
参数解释
master_log_file 读取的是哪一个二进制日志
master_log_pos 二进制日志读取的地方(从哪个地方开始)
- 查看是否配置成功
mysql> show slave status\G