最近在增強數據庫方面的知識,這篇文章就記錄一下
MySQL
主從複製的一些步驟。mysql
正題sql
MySQL
主從複製的基本原理是靠Binlog
日誌實現的,主服務器將寫操做都記錄在該日誌中,而創建關係的從數據庫便會去讀取裏面的內容。數據庫
廢話少說,進入正題:bash
首先須要三個數據庫,這邊我用Docker
啓動了三個數據庫服務:服務器
MySQL
的配置文件添加以下配置:
server_id=1 # 服務id標識,須要與其餘服務器不一樣
log-bin=mysql-bin # 開啓binlog日誌
read-only=0 # 是否只讀
# 須要同步的庫
binlog-do-db=數據庫名字
binlog-do-db=數據庫名字
....
# 忽略同步的庫 忽略數據庫自帶的幾個庫
replicate-ignore-db=mysql
replicate-ignore-db=sys
replicate-ignore-db=information_schema
replicate-ignore-db=performance_schema
複製代碼
從機數據庫配置也和主服務器相似,主寫從讀:ui
server_id=2 # 服務id標識,須要與其餘服務器不一樣
log-bin=mysql-bin # 開啓binlog日誌
read-only=1 # 是否只讀
# 須要同步的庫
binlog-do-db=數據庫名字
binlog-do-db=數據庫名字
....
# 忽略同步的庫 忽略數據庫自帶的幾個庫
replicate-ignore-db=mysql
replicate-ignore-db=sys
replicate-ignore-db=information_schema
replicate-ignore-db=performance_schema
複製代碼
另外一臺從機配置同樣,只須要更對應的服務id標識便可,修改完記得須要重啓MySQL
服務,接下來就須要在主服務器中設置一個對外開放的帳號,提供給從機使用:spa
# 建立用戶
CREATE USER '用戶名'@'%' IDENTIFIED WITH mysql_native_password BY '密碼';
# 受權
GRANT REPLICATION SLAVE ON *.* TO '用戶名'@'%';
複製代碼
能夠查看主機狀態,把File
屬性和Position
記錄下來,後續須要使用:日誌
show master status; # 查看主機狀態
複製代碼
接下來就能夠去配置從機了,在從機的MySQL
中直接輸入一下語句:code
CHANGE MASTER TO
MASTER_HOST='主機IP',
MASTER_USER='建立的用戶名',
MASTER_PASSWORD='密碼',
MASTER_LOG_FILE='主機的File屬性值',
MASTER_LOG_POS=Position屬性值,
master_port=主機端口;
複製代碼
在使用start slave;
進行主從同步orm
執行完以上語句能夠使用show slave status\G;
查看從機狀態,當看到slave_sql_running
和slave_io_running
同時爲yes
時,就大功告成~