热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

dockerhubmysql主从_详解用Docker构建MySQL主从环境

前言本篇文章记录我使用docker-compose以及dockerfile来构建基于binlog的MySQL主从环境。如果你严格按照文中的步骤进行配置,相信很快就可以

前言

本篇文章记录我使用 docker-compose 以及 dockerfile 来构建基于 binlog 的 MySQL 主从环境。如果你严格按照文中的步骤进行配置,相信很快就可以搭建好一个基础的 MySQL 主从环境。

介绍

ec9bc04de61c1ea4a7bbb9125eefe79a.png

MySQL 主从同步分为 3 个步骤:

master 节点将数据的更新记录写到 binary log 中。

slave 节点开启 IO 线程连接 master 节点,请求获取指定 binary log 文件的指定位置之后的日志。

master 节点的 binary log dump 线程将指定的 binary log 信息推送给 slave 节点。

slave 节点的 IO 线程接收到消息后,将日志内容写入 relay log 文件。

slave 节点的 SQL 线程检测到 relay log 新增了内容,马上解析 relay log 文件生成相应的 SQL 语句,并将这些 SQL 语句重放到数据库,保证主从数据一致性。

配置

创建目录结构

首先先搞定目录结构,我的目录结构如下,如果想按照自己的想法来组建目录,在下文中的 docker-compose.yaml 文件与 Dockerfile 文件要注意修改文件路径。

b472807a314901ce24ec49d20eae1f0a.png

配置 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=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

配置 slave 节点的 cluster.cnf 文件以及 Dockerfile 文件

[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

运行上述命令进行容器创建,如果构建时间过长,可以考虑更换镜像源,例如下面几个国内优质镜像源:

网易: http://hub-mirror.c.163.com

阿里云&#xff1a; http://< ;你的ID>.mirror.aliyuncs.com

中国科学技术大学&#xff1a; http://docker.mirrors.ustc.ed...

构建完成之后&#xff0c;使用 docker ps 命令查看一下容器是否正常运行&#xff0c;出现如下情形则可以认为已经构建成功。

bbaa2d517ac34d438b214a6506c5a9dd.png

配置 slave 节点

87635c408a93bca00c1d5c499e0e757c.png

首先使用 docker 命令进入到 mysql-master 容器中&#xff0c;再登录到 mysql 输入 show master status 命令获取主库状态&#xff0c;这里我们要关心两个参数 File 以及 Position &#xff0c;之后配置从库会用到这两个参数。

d524a0edb0909a1b336eafe25eeb7d16.png

接下来使用 docker 命令进入 mysql-slave 容器&#xff0c;再登录到 mysql 输入以下语句进行与 mysql-master 连接。

CHANGE MASTER TO

MASTER_HOST&#61;&#39;mysql-master&#39;,

MASTER_USER&#61;&#39;root&#39;,

MASTER_PASSWORD&#61;你设置的密码,

MASTER_LOG_FILE&#61;上一步得到的 File 参数,

MASTER_LOG_POS&#61;上一步得到的 Position 参数;

输入完成后再键入 start slave 命令启动 slave 服务。启动之后输入 show slave status \G 命令查看 slave 节点状态&#xff0c;出现如下情形可认为配置成功。

97d555e8c870db011ea730ee41e9f35d.png

测试主从节点同步状态

0521ea4c94c01f5db7d83e8a1c433dbd.png

登录到 mysql-master 节点&#xff0c;创建一个全新的库&#xff0c;创建成功之后&#xff0c;切换到 mysql-slave 节点&#xff0c;输入 show databases; 命令&#xff0c;查看是否成功同步&#xff0c;出现如下情形则配置成功。其他操作可以自己尝试&#xff0c;这里不再做演示。

d88d939a1deb99358529c9e85f48f702.png

总结

这是我自己尝试搭建 MySQL 主从架构所记录的步骤&#xff0c;到此这篇关于详解用Docker构建MySQL主从环境的文章就介绍到这了,更多相关Docker构建MySQL主从内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家&#xff01;



推荐阅读
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • 基于PgpoolII的PostgreSQL集群安装与配置教程
    本文介绍了基于PgpoolII的PostgreSQL集群的安装与配置教程。Pgpool-II是一个位于PostgreSQL服务器和PostgreSQL数据库客户端之间的中间件,提供了连接池、复制、负载均衡、缓存、看门狗、限制链接等功能,可以用于搭建高可用的PostgreSQL集群。文章详细介绍了通过yum安装Pgpool-II的步骤,并提供了相关的官方参考地址。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • 安装mysqlclient失败解决办法
    本文介绍了在MAC系统中,使用django使用mysql数据库报错的解决办法。通过源码安装mysqlclient或将mysql_config添加到系统环境变量中,可以解决安装mysqlclient失败的问题。同时,还介绍了查看mysql安装路径和使配置文件生效的方法。 ... [详细]
  • Nginx使用(server参数配置)
    本文介绍了Nginx的使用,重点讲解了server参数配置,包括端口号、主机名、根目录等内容。同时,还介绍了Nginx的反向代理功能。 ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 原文地址:https:www.cnblogs.combaoyipSpringBoot_YML.html1.在springboot中,有两种配置文件,一种 ... [详细]
  • 本文介绍了Oracle数据库中tnsnames.ora文件的作用和配置方法。tnsnames.ora文件在数据库启动过程中会被读取,用于解析LOCAL_LISTENER,并且与侦听无关。文章还提供了配置LOCAL_LISTENER和1522端口的示例,并展示了listener.ora文件的内容。 ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • 后台获取视图对应的字符串
    1.帮助类后台获取视图对应的字符串publicclassViewHelper{将View输出为字符串(注:不会执行对应的ac ... [详细]
author-avatar
kevin2502896577
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有