參考資料
- 有關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