MySQL主從複製

最近在增強數據庫方面的知識,這篇文章就記錄一下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_runningslave_io_running同時爲yes時,就大功告成~

相關文章
相關標籤/搜索