本篇文章记录我使用 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 主从架构所记录的步骤,若是有卡在哪一步,能够留言与我交流。😊😊😊阿里云