Docker環境MySQL主從部署

一、環境準備

拉取mysql鏡像mysql

docker pull mysql

準備兩個mysql配置文件sql

# 主庫配置文件my-master.cnf
[mysqld]
log-bin = mysql-bin
server-id = 1

# 從庫配置文件my-slave.cnf
[mysqld]
server-id = 2

啓動兩個容器,端口配置
Host:3307,數據庫master:3306
Host:3308,數據庫slave:3306docker

docker run -d -e MYSQL_ROOT_PASSWORD=root \
 --name mysql-master \
  -v /root/mysql/my-master.cnf:/etc/mysql/my.cnf \
  -p 3307:3306 mysql

docker run -d -e MYSQL_ROOT_PASSWORD=root \
 --name mysql-slave \
  -v /root/mysql/my-slave.cnf:/etc/mysql/my.cnf \
  -p 3308:3306 mysql

環境已準備好。shell

具體參數以下:數據庫

ipide

本機Host:172.18.134.10測試

master容器:172.17.0.2線程

slave容器:172.17.0.3code

登陸數據庫命令server

# 本機 -> master
mysql -h172.18.134.10 -P3307 -uroot -proot

# 本機 -> slave
mysql -h172.18.134.10 -P3308 -uroot -proot

二、主庫配置

新建一個用戶專門用來同步master,

CREATE USER 'backup'@'%' IDENTIFIED BY '123456';

給backup用戶分配備份的權限

GRANT REPLICATION SLAVE ON *.* to 'backup'@'%' identified by '123456';

主庫配置完成。

查看主庫狀態:

show master status;

記住查詢結果,後面會用。

File: mysql-bin.000003

Position: 688

三、從庫配置

從庫經過IO線程鏈接master,因此須要指定master的信息,包括host, port, user, password

change master to master_host='172.17.0.2', 
    master_port=3306, 
    master_user='backup', 
    master_password='123456', 
    master_log_file='mysql-bin.000003', 
    master_log_pos=688;
start slave;

查看從庫狀態,

show slave status\G

若是輸出,

Slave_IO_State: Waiting for master to send event
                  Master_Host: 172.17.0.2
                  Master_User: root
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000003
          Read_Master_Log_Pos: 688
               Relay_Log_File: 6b0f3668aa62-relay-bin.000002
                Relay_Log_Pos: 913
        Relay_Master_Log_File: mysql-bin.000003
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes

則說明鏈接成功。

四、測試

在master上操做,更改都會顯示在slave上。

相關文章
相關標籤/搜索