1. 程式人生 > 其它 >MySQL主從複製配置(基於docker)

MySQL主從複製配置(基於docker)

MySQL主從配置

版本

採用MySQL 5.7 進行配置,由於本地已經搭建了docker環境,故使用docker進行配置

MySQL服務配置

主服務和從服務my.cnf中新增binary log和server id 配置

主庫配置

[mysqld]
skip-name-resolve
user=root
character-set-server=utf8
default_authentication_plugin=mysql_native_password sql_mode=ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
lower_case_table_names=1 #忽略表名大小寫
# 主從配置
server-id=1001
log-bin=mysql-bin

從庫配置

[mysqld]
skip-name-resolve
user=root
character-set-server=utf8
default_authentication_plugin=mysql_native_password sql_mode=ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
lower_case_table_names=1 #忽略表名大小寫
# 主從配置
server-id=1002
log-bin=mysql-bin

注意server-id不能相同

啟動docker服務

docker 啟動指令碼
這裡新建了一個docker啟動指令碼,方便下次啟動:

docker run -p 3307:3306  --restart=always  --privileged=true --name mysql57_01 -v /Users/wanghai/data/docker/mysql/mysql57_01/data:/var/lib/mysql -v /Users/wanghai/data/docker/mysql/mysql57_01/conf/my.cnf:/etc/mysql/my.cnf -e MYSQL_ROOT_PASSWORD="123456" -d mysql:5.7
docker run -p 3308:3306  --restart=always  --privileged=true --name mysql57_02 -v /Users/wanghai/data/docker/mysql/mysql57_02/data:/var/lib/mysql -v /Users/wanghai/data/docker/mysql/mysql57_02/conf/my.cnf:/etc/mysql/my.cnf -e MYSQL_ROOT_PASSWORD="123456" -d mysql:5.7

注意區分埠號和配置檔案路徑

配置同步賬號

服務啟動後連線使用客戶端連線主庫,執行如下語句進行賬號建立並授權

# 建立從庫連線賬號
CREATE USER 'slave'@'%' IDENTIFIED BY '123456';
# 賬號授權
GRANT replication SLAVE ON *.* TO 'slave'@'%' IDENTIFIED BY '123456';
# 重新整理許可權,使配置生效
FLUSH PRIVILEGES;

啟用主從同步

客戶端連線從庫服務,執行如下語句開啟同步

# 從庫開啟同步
CHANGE MASTER TO
MASTER_HOST='192.168.0.200',
MASTER_PORT=3307,
MASTER_USER='slave',
MASTER_PASSWORD='123456',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS= 2891;

# 啟動複製
START SLAVE;

# 檢視同步從庫狀態
SHOW SLAVE STATUS;

具體引數根據自己的主庫配置來修改,其中master_log_file和master_log_pos是通過主庫執行SHOW MASTER STATUS獲取的

SHOW MASTER STATUS

測試配置結果

在主庫執行如下指令碼進行測試:

CREATE DATABASE dbtest;
USE dbtest;
CREATE TABLE t_table1 ( id LONG, NAME VARCHAR ( 100 ) );
INSERT INTO t_table1 VALUES ( 1, 'Test' );

檢視從庫同步結果

小結:

主從同步配置主要有三個步驟:

  1. 主從庫配置開啟bin log
  2. 主庫同步賬號配置
  3. 從庫啟動同步

本文來自部落格園,作者:WarmerSunny,轉載請註明原文連結:https://www.cnblogs.com/WarmerSunny/p/15416857.html