mysql主從同步(5.7)
阿新 • • 發佈:2022-04-06
一、環境準備
1.1 使用docker容器
準備兩個mysql的docker容器,並將對應的配置檔案對映到主機目錄中(或者不做對映,直接進入容器進行修改)。
1.2 使用實體機或虛擬機器
直接準備兩臺虛擬機器或者實體機,安裝上mysql資料庫
二、主從同步
2.1 配置主伺服器
2.1.1 修改主伺服器mysql配置檔案(my.cnf), 新增一下內容
[mysqld]
## 同一區域網中要注意唯一
server-id=1
## 開啟二進位制日誌檔案功能,可以自定義名稱(關鍵)
log-bin=mysql-bin
2.1.2 重啟mysql
2.1.2.1 docker容器
- 進入docker容器
docker exec -it mysql /bin/bash
- 執行命令
service mysql restart
- 退出容器
- 重啟容器
docker restart mysql
2.1.2.2 實體機或者虛擬機器安裝
service restart mysqld
2.1.3 檢視 skip_networking 狀態
確保在主伺服器上的 skip_networking 選項處於 OFF 關閉狀態,這是預設值。
如果是啟用的,則從資料庫服務與主資料庫通訊,並且複製失敗。
## 登入 mysql:mysql -u root -p "密碼" ## 檢視狀態 show variables like '%skip_networking%';
2.1.4 建立用於複製的使用者
CREATE USER 'repl'@'%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
2.2 配置從伺服器
2.2.1修改從伺服器mysql配置檔案(my.cnf),新增一下內容
[mysqld]
server-id=2
2.2.2 重啟mysql(和上面一致)
2.2.3 配置連線主資料庫的相關資訊
在從資料庫伺服器配置連線到主資料伺服器的相關資訊
## 登入到從資料庫 mysql -u root -p "密碼" ## 執行 ## xxx.xxx.xxx.xxx 主資料庫ip地址,分為兩種情況 ## 如果是同一臺伺服器上的兩個docker容器,則使用 docker inspect --format='{{.NetworkSettings.IPAddress}}' 容器名稱/容器ID; mysql > **CHANGE MASTER TO MASTER_HOST='XXX.XXX.XXX.XXX',MASTER_PORT=3306,MASTER_USER='repl',MASTER_PASSWORD='password';** ## 啟動從伺服器資料庫同步執行緒 mysql > start slave;
2.2.4 檢視同步狀態
show slave status \G;
2.3 測試
在主伺服器資料庫,建立一個數據庫,發現從伺服器資料庫中同步新建的相同的資料庫,就成功。
2.4 其他
如果還需要配置多餘的從伺服器資料庫,可以遵循上面的配置,新增一個配置就行。新建的從伺服器資料庫,會自動儲存主伺服器資料庫之前的資料。