本篇文章記錄我使用 docker-compose 以及 dockerfile 來構建基於 binlog 的 MySQL 主從環境。若是你嚴格按照文中的步驟進行配置,相信很快就能夠搭建好一個基礎的 MySQL 主從環境。mysql
MySQL 主從同步分爲 5 個步驟:sql
首先先搞定目錄結構,個人目錄結構以下,若是想按照本身的想法來組建目錄,在下文中的 docker-compose.yaml 文件與 Dockerfile 文件要注意修改文件路徑。docker
version: "3" services: mysql-master: build: context: ./ dockerfile: mysql/master/Dockerfile container_name: mysql-master volumes: - ./mysql/master/data:/var/lib/mysql restart: always ports: - 3305:3306 links: - mysql-slave mysql-slave: build: context: ./ dockerfile: mysql/slave/Dockerfile container_name: mysql-slave volumes: - ./mysql/slave/data:/var/lib/mysql restart: always ports: - 3306:3306
[mysqld] server_id=100 binlog-ignore-db=mysql log-bin=replicas-mysql-bin binlog_cache_size=1M binlog_format=mixed slave_skip_errors=1062 # 個人 MySQL 爲 8.x,須要以下配置 default_authentication_plugin=mysql_native_password character-set-server=utf8mb4 collation-server=utf8mb4_unicode_ci
FROM mysql:latest ADD ./mysql/master/cluster.cnf /etc/mysql/conf.d/cluster.cnf ENV MYSQL_ROOT_PASSWORD=password
[mysqld] server_id=101 binlog-ignore-db=mysql binlog_cache_size=1M binlog_format=mixed slave_skip_errors=1062 relay_log=replicas-mysql-relay-bin log_slave_updates=1 read_only=1 # 個人 MySQL 爲 8.x,須要以下配置 default_authentication_plugin=mysql_native_password character-set-server=utf8mb4 collation-server=utf8mb4_unicode_ci
FROM mysql:latest ADD ./mysql/slave/cluster.cnf /etc/mysql/conf.d/cluster.cnf ENV MYSQL_ROOT_PASSWORD=password
docker-compose up -d mysql-master mysql-slave
運行上述命令進行容器建立,若是構建時間過長,能夠考慮更換鏡像源,例以下面幾個國內優質鏡像源:數據庫
構建完成以後,使用 docker ps
命令查看一下容器是否正常運行,出現以下情形則能夠認爲已經構建成功。bash
首先使用 docker 命令進入到 mysql-master 容器中,再登陸到 mysql 輸入 show master status
命令獲取主庫狀態,這裏咱們要關心兩個參數 File
以及 Position
,以後配置從庫會用到這兩個參數。
接下來使用 docker 命令進入 mysql-slave 容器,再登陸到 mysql 輸入如下語句進行與 mysql-master 鏈接。架構
CHANGE MASTER TO MASTER_HOST='mysql-master', MASTER_USER='root', MASTER_PASSWORD=你設置的密碼, MASTER_LOG_FILE=上一步獲得的 File 參數, MASTER_LOG_POS=上一步獲得的 Position 參數;
輸入完成後再鍵入 start slave
命令啓動 slave 服務。啓動以後輸入 show slave status \G
命令查看 slave 節點狀態,出現以下情形可認爲配置成功。測試
登陸到 mysql-master 節點,建立一個全新的庫,建立成功以後,切換到 mysql-slave 節點,輸入 show databases;
命令,查看是否成功同步,出現以下情形則配置成功。其餘操做能夠本身嘗試,這裏再也不作演示。ui
這是我本身嘗試搭建 MySQL 主從架構所記錄的步驟,若是有卡在哪一步,能夠留言與我交流。😊😊😊阿里雲