docker 下的 Mysql 主从复制

本贴最后更新于 2171 天前,其中的信息可能已经时移俗易

Docker 环境 +MySQL 主从复制 + 双机热备
测试环境介绍
server01:master CentOS 7.6 x86_64bit
hostname:test12.liufu.com
172.16.100.12——>docker19.03.1+mysql5.7+keepalive
server02:slave CentOS 7.6 x86_64bit
hostname:test13.liufu.com
172.16.100.13——>docker19.03.1+mysql5.7+keepalive
一、Docker 环境搭建
1、升级环境:yum update
2、获取 docker 源:
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo https://download.docker.com/linux/xentos/docker-ce.repo
3、更新 yum 源缓存:yum update -y
4、安装 docker:yum install -y docker-ce
5、启动 docker:systemctl start docker.service
6、验证 docker 是否安装成功:docker info
二、Docker 中 MySQL 实例创建
1、获取 mysql5.7 镜像:docker pull mysql:5.7

2、查看镜像:docker images |grep mysql

3、创建 mysql 容器
1)创建要挂载的文件夹
cd /var/lib/mysql
mkdir conf data logs
2)运行容器
[root@test12 ~]#docker run --name mysql_5.7 -e MYSQL_ROOT_PASSWORD=password -d -i -p 3306:3306 -v /var/lib/mysql/data:/var/lib/mysql/ -v /var/lib/mysql/conf:/etc/mysql/mysql.conf.d -v /var/lib/mysql/logs:/logs mysql:5.7

注:命令说明
-name mysql_5.7 容器名称
-e MYSQL_ROOT_PASSWORD=password 数据库登陆密码 password
-p 3306:3306 端口映射到宿主机
-v /var/lib/mysql/data:/var/lib/mysql/ 将主机/var/lib/mysql/data 挂载到容器的/etc/mysql/
-v /var/lib/mysql/conf:/etc/mysql/mysql.conf.d
-v /var/lib/mysql/logs:/logs 将主机/var/lib/mysql/logs 挂载到容器的 logs
3)查看容器:docker ps

4)进入 mysql 容器:docker exec -it mysql-5.7 /bin/bash

三、Mysql 配置文件修改
1、宿主机进入挂载的配置文件目录:cd /var/lib/mysql/conf
vim my.cnf
[mysqld]选项下添加如下内容

2、重启 docker 中的 MySQL 实例

3、登陆数据库:mysql -h 127.0.0.1 -uroot -ppassword

4、数据库用户权限设置
mysql> grant all privileges on . to root@'%' identified by "password";
mysql> grant all privileges on . to root@'localhost' identified by "password";

mysql> flush privileges; #刷新数据库

mysql> show grants; #查看权限

四、主从复制配置
1、master 主机配置
登陆主数据库:mysql -uroot -ppassword
mysql> flush tables with read lock; #数据库锁表,不让数据写入
mysql> show master status;

mysql> unlock tables; #从启动好后,记得要解除锁定
Master 数据库到此配置完毕
2、slave 从机配置
修改 my.cnf 配置文件,并重启数据库(修改位置与主数据库一致)

登陆 slave 数据库:mysql -uroot -ppassword
mysql> stop slave;

mysql>change master to master_host='172.16.100.12',
master_port=3306,
master_user='root',
master_password='password',
master_log_file='mysql-bin01.000007',
master_log_pos=889;

mysql>start slave;
mysql>show slave status\G;

五、主从复制测试
1、master 中创建库(docker-test)和表,并在表中插入数据,观察 slave 是否同步
master 主机 slave 从机
创建数据库:docker-test
查看创建的库是否同步

创建表
查看创建的表是否同步

修改表名
查看表名是否重命名

表中写入数据
查看表中数据是否同步

2.master 中删除一条,修改一条测试表(test001)中的一条数据,观察 slave 是否同步
master 主机 slave 从机
test001 表中删除第 2 行,并修改第 3 行的两个数据
查看表中数据是否同步

注:主从复制完成

  • Docker

    Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的操作系统上。容器完全使用沙箱机制,几乎没有性能开销,可以很容易地在机器和数据中心中运行。

    498 引用 • 934 回帖 • 1 关注
  • MySQL

    MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 公司。MySQL 是最流行的关系型数据库管理系统之一。

    694 引用 • 537 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...

推荐标签 标签

  • FreeMarker

    FreeMarker 是一款好用且功能强大的 Java 模版引擎。

    23 引用 • 20 回帖 • 473 关注
  • TGIF

    Thank God It's Friday! 感谢老天,总算到星期五啦!

    292 引用 • 4495 回帖 • 665 关注
  • Maven

    Maven 是基于项目对象模型(POM)、通过一小段描述信息来管理项目的构建、报告和文档的软件项目管理工具。

    188 引用 • 319 回帖 • 237 关注
  • Notion

    Notion - The all-in-one workspace for your notes, tasks, wikis, and databases.

    10 引用 • 77 回帖
  • Dubbo

    Dubbo 是一个分布式服务框架,致力于提供高性能和透明化的 RPC 远程服务调用方案,是 [阿里巴巴] SOA 服务化治理方案的核心框架,每天为 2,000+ 个服务提供 3,000,000,000+ 次访问量支持,并被广泛应用于阿里巴巴集团的各成员站点。

    60 引用 • 82 回帖 • 620 关注
  • Sandbox

    如果帖子标签含有 Sandbox ,则该帖子会被视为“测试帖”,主要用于测试社区功能,排查 bug 等,该标签下内容不定期进行清理。

    442 引用 • 1238 回帖 • 597 关注
  • 安装

    你若安好,便是晴天。

    132 引用 • 1184 回帖 • 1 关注
  • MyBatis

    MyBatis 本是 Apache 软件基金会 的一个开源项目 iBatis,2010 年这个项目由 Apache 软件基金会迁移到了 google code,并且改名为 MyBatis ,2013 年 11 月再次迁移到了 GitHub。

    173 引用 • 414 回帖 • 356 关注
  • 京东

    京东是中国最大的自营式电商企业,2015 年第一季度在中国自营式 B2C 电商市场的占有率为 56.3%。2014 年 5 月,京东在美国纳斯达克证券交易所正式挂牌上市(股票代码:JD),是中国第一个成功赴美上市的大型综合型电商平台,与腾讯、百度等中国互联网巨头共同跻身全球前十大互联网公司排行榜。

    14 引用 • 102 回帖 • 314 关注
  • OpenCV
    15 引用 • 36 回帖 • 1 关注
  • Vditor

    Vditor 是一款浏览器端的 Markdown 编辑器,支持所见即所得、即时渲染(类似 Typora)和分屏预览模式。它使用 TypeScript 实现,支持原生 JavaScript、Vue、React 和 Angular。

    377 引用 • 1865 回帖 • 2 关注
  • Follow
    4 引用 • 12 回帖 • 11 关注
  • 旅游

    希望你我能在旅途中找到人生的下一站。

    101 引用 • 905 回帖 • 2 关注
  • OAuth

    OAuth 协议为用户资源的授权提供了一个安全的、开放而又简易的标准。与以往的授权方式不同之处是 oAuth 的授权不会使第三方触及到用户的帐号信息(如用户名与密码),即第三方无需使用用户的用户名与密码就可以申请获得该用户资源的授权,因此 oAuth 是安全的。oAuth 是 Open Authorization 的简写。

    36 引用 • 103 回帖 • 35 关注
  • OkHttp

    OkHttp 是一款 HTTP & HTTP/2 客户端库,专为 Android 和 Java 应用打造。

    16 引用 • 6 回帖 • 95 关注
  • AngularJS

    AngularJS 诞生于 2009 年,由 Misko Hevery 等人创建,后为 Google 所收购。是一款优秀的前端 JS 框架,已经被用于 Google 的多款产品当中。AngularJS 有着诸多特性,最为核心的是:MVC、模块化、自动化双向数据绑定、语义化标签、依赖注入等。2.0 版本后已经改名为 Angular。

    12 引用 • 50 回帖 • 518 关注
  • PWL

    组织简介

    用爱发电 (Programming With Love) 是一个以开源精神为核心的民间开源爱好者技术组织,“用爱发电”象征开源与贡献精神,加入组织,代表你将遵守组织的“个人开源爱好者”的各项条款。申请加入:用爱发电组织邀请帖
    用爱发电组织官网:https://programmingwithlove.stackoverflow.wiki/

    用爱发电组织的核心驱动力:

    • 遵守开源守则,体现开源&贡献精神:以分享为目的,拒绝非法牟利。
    • 自我保护:使用适当的 License 保护自己的原创作品。
    • 尊重他人:不以各种理由、各种漏洞进行未经允许的抄袭、散播、洩露;以礼相待,尊重所有对社区做出贡献的开发者;通过他人的分享习得知识,要留下足迹,表示感谢。
    • 热爱编程、热爱学习:加入组织,热爱编程是首当其要的。我们欢迎热爱讨论、分享、提问的朋友,也同样欢迎默默成就的朋友。
    • 倾听:正确并恳切对待、处理问题与建议,及时修复开源项目的 Bug ,及时与反馈者沟通。不抬杠、不无视、不辱骂。
    • 平视:不诋毁、轻视、嘲讽其他开发者,主动提出建议、施以帮助,以和谐为本。只要他人肯努力,你也可能会被昔日小看的人所超越,所以请保持谦虚。
    • 乐观且活跃:你的努力决定了你的高度。不要放弃,多年后回头俯瞰,才会发现自己已经成就往日所仰望的水平。积极地将项目开源,帮助他人学习、改进,自己也会获得相应的提升、成就与成就感。
    1 引用 • 487 回帖 • 3 关注
  • webpack

    webpack 是一个用于前端开发的模块加载器和打包工具,它能把各种资源,例如 JS、CSS(less/sass)、图片等都作为模块来使用和处理。

    42 引用 • 130 回帖 • 251 关注
  • SQLite

    SQLite 是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。SQLite 是全世界使用最为广泛的数据库引擎。

    4 引用 • 7 回帖 • 2 关注
  • NGINX

    NGINX 是一个高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 NGINX 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,第一个公开版本 0.1.0 发布于 2004 年 10 月 4 日。

    315 引用 • 547 回帖
  • PostgreSQL

    PostgreSQL 是一款功能强大的企业级数据库系统,在 BSD 开源许可证下发布。

    22 引用 • 22 回帖 • 1 关注
  • 程序员

    程序员是从事程序开发、程序维护的专业人员。

    593 引用 • 3533 回帖 • 1 关注
  • OnlyOffice
    4 引用 • 19 关注
  • 数据库

    据说 99% 的性能瓶颈都在数据库。

    346 引用 • 760 回帖
  • 微软

    微软是一家美国跨国科技公司,也是世界 PC 软件开发的先导,由比尔·盖茨与保罗·艾伦创办于 1975 年,公司总部设立在华盛顿州的雷德蒙德(Redmond,邻近西雅图)。以研发、制造、授权和提供广泛的电脑软件服务业务为主。

    8 引用 • 44 回帖 • 2 关注
  • 博客

    记录并分享人生的经历。

    273 引用 • 2389 回帖
  • BookxNote

    BookxNote 是一款全新的电子书学习工具,助力您的学习与思考,让您的大脑更高效的记忆。

    笔记整理交给我,一心只读圣贤书。

    1 引用 • 1 回帖