MySQL 數據庫主從同步
主從介紹
- MySQL主從又叫做Replication, AB複製.就是A主機與B主機做主從後,在A上寫數據,另一臺機器B也會跟着同步寫入數據,保持實時同步.
- MySQL主從是基於binlog實現,主必須開啓binlog.
- 主從步驟:
- 主 將操作記錄到binlog
- 從將主的binlog同步到本機寫在relaylog裏.
- 從根據relaylog裏面的sql語句按照順序執行
- 主上有一個log dump線程,用來和從的I/O線程傳遞binlog
- 從上有兩個線程,其中I/O線程用來同步主的binlog並升恆relaylog,另外一個sql線程來吧relaylog裏面的sql語句按順序執行
配置
前言
- 兩臺主機上的MySQL版本需要一致
- MySQL 都會有一個uuid,如果是複製或者同一個鏡像的MySQL,uuid可能一致,需要修改
- uuid 寫在 auto.cnf 文件,一般路徑在
/var/lib/mysql/auto.cnf
,可以通過find / -name auto.cnf
查找
- uuid 寫在 auto.cnf 文件,一般路徑在
主庫配置
- 編輯mysql配置文件,一般是在
/etc/mysql/my.cnf
, 可以通過ps -ef|grep mysql
查找MySQL服務信息log-bin=mysql-bin # 非必需 server-id=1 # 必需,與從庫 id 不能一致
- 創建用於同步數據的賬戶
# 用戶名repl , 從庫ip 192.... 密碼:123456 CREATE USER 'repl'@'192.168...' IDENTIFIED BY '123456'; GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192....'; FLUSH PRIVILEGES;
- 查看bin-log 是否開啓
# 登錄mysql mysql> show variables like 'log_bin%';
- 查看 master狀態,結果參數後面從庫需要用到
show master status;
從庫配置
- 修改master 相關參數
# 登錄mysql # 主庫ip: 192... 用戶: repl 密碼:123456 都與主庫上面創建的一致 change master to master_host='192....', master_user='repl', master_password='123456', master_log_file='mysql-bin.000001', master_log_pos=514;
- 啓動/停止 slave 服務
# 登錄MySQL start/stop slave;
- 查看從庫狀態
# 登錄MySQL show slave status\G;
顯示yes ,表示配置成功