时间:2021-05-19
前言
本篇文章记录我使用 docker-compose 以及 dockerfile 来构建基于 binlog 的 MySQL 主从环境。如果你严格按照文中的步骤进行配置,相信很快就可以搭建好一个基础的 MySQL 主从环境。
介绍
MySQL 主从同步分为 3 个步骤:
配置
创建目录结构
首先先搞定目录结构,我的目录结构如下,如果想按照自己的想法来组建目录,在下文中的 docker-compose.yaml 文件与 Dockerfile 文件要注意修改文件路径。
配置 docker-compose 模版文件
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配置 master 节点的 cluster.cnf 文件以及 Dockerfile 文件
[mysqld]server_id=100binlog-ignore-db=mysqllog-bin=replicas-mysql-binbinlog_cache_size=1Mbinlog_format=mixedslave_skip_errors=1062# 我的 MySQL 为 8.x,需要如下配置default_authentication_plugin=mysql_native_passwordcharacter-set-server=utf8mb4collation-server=utf8mb4_unicode_ciFROM mysql:latestADD ./mysql/master/cluster.cnf /etc/mysql/conf.d/cluster.cnfENV MYSQL_ROOT_PASSWORD=password配置 slave 节点的 cluster.cnf 文件以及 Dockerfile 文件
[mysqld]server_id=101binlog-ignore-db=mysqlbinlog_cache_size=1Mbinlog_format=mixedslave_skip_errors=1062relay_log=replicas-mysql-relay-binlog_slave_updates=1read_only=1# 我的 MySQL 为 8.x,需要如下配置default_authentication_plugin=mysql_native_passwordcharacter-set-server=utf8mb4collation-server=utf8mb4_unicode_ciFROM mysql:latestADD ./mysql/slave/cluster.cnf /etc/mysql/conf.d/cluster.cnfENV MYSQL_ROOT_PASSWORD=password创建容器
docker-compose up -d mysql-master mysql-slave运行上述命令进行容器创建,如果构建时间过长,可以考虑更换镜像源,例如下面几个国内优质镜像源:
网易: http://hub-mirror.c.163.com
阿里云: http://< ;你的ID>.mirror.aliyuncs.com
中国科学技术大学: http://docker.mirrors.ustc.ed...
构建完成之后,使用 docker ps 命令查看一下容器是否正常运行,出现如下情形则可以认为已经构建成功。
配置 slave 节点
首先使用 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; 命令,查看是否成功同步,出现如下情形则配置成功。其他操作可以自己尝试,这里不再做演示。
总结
这是我自己尝试搭建 MySQL 主从架构所记录的步骤,到此这篇关于详解用Docker构建MySQL主从环境的文章就介绍到这了,更多相关Docker构建MySQL主从内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
jenkins构建Docker镜像实例详解前言:jenkins有Docker镜像,而之前我们说过使用jenkins打包Docker镜像,那么可否用jenkins
MySQL主从配置及原理,供大家参考,具体内容如下一、环境选择:1.Centos6.52.MySQL5.7二、什么是MySQL主从复制MySQL主从复制是其最重
环境:macos_cetalina_10.15.1、mysql8.0.18、docker_2.0.0.31、docker仓库搜索mysql?1dockersea
在掌握了docker的基本命令之后,我也是想着去用docker做一点实际的配套环境,就拿自己最常用的lnmp环境来做测试。配套环境运行的顺序依次是mysql->
本文介绍了用docker搭建laravel和vue项目的开发环境,分享给大家,具体如下:在这篇文章中我们将通过docker在个人本地电脑上构建一个快速、轻量级、