Docker 容器搭建mysql 集群(主从数据库)

这篇具有很好参考价值的文章主要介绍了Docker 容器搭建mysql 集群(主从数据库)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

1.背景        

2.设备及软件版本

3.开始搭建(这里不介绍安装docker及mysql)

3.1创建主数据库容器(master)

3.2查看容器是否创建成功

3.3进入修改容器下的/etc/my.cnf文件

3.3.1先拷贝my.cnf到容器外修改完再覆盖容器原来的my.cnf文件

3.4重启mysql容器使配置文件生效

3.5查看是否启动

3.6进入容器

3.7进入mysql

3.8创建一个新的账户test(用来下面从数据库访问主数据库)

3.9查看当前主数据库binglog日志状态 

4.创建从数据库(slave)(下面类似命令就不解释了)

4.1创建从数据库

4.2修改/etc/my.cof文件(参考上面主数据库的方式修改)

4.3重新启动从数据库容器

4.4进入容器

4.5进入mysql

4.6准备从数据库连接主数据库内容

4.6.1获取主数据库容器的ip地址

4.6.2用上面参数替换下面命令中的参数

4.7开启主从复制

4.8查看是否开启

5.完结撒花。


1.背景        

        脑子抽风想研究一下 Docker 容器 搭建mysql集群。

2.设备及软件版本

  1. 电脑:Mac bookPro 2021 M1 14寸,系统:MOS 13.0.1 (22A400)
  2. Docker:Docker version 20.10.17, build 100c701
  3. mysql:mysql 5.7

3.开始搭建(这里不介绍安装docker及mysql)

3.1创建主数据库容器(master)

Docker 容器搭建mysql 集群(主从数据库)创建容器代码: 

docker run -id \
--name=mysql_master \
-p 3307:3306 \
-v $PWD/master/conf:/etc/mysql/conf.d \
-v $PWD/master/logs:/logs \
-v $PWD/master/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql:5.7

创建容器代码介绍:

docker run -id \                        
--name=mysql_master \
-p 3307:3306 \
-v $PWD/master/conf:/etc/mysql/conf.d \
-v $PWD/master/logs:/logs \
-v $PWD/master/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql:5.7

介绍:
-id : 是 -i, -d 的组合写法(也可以写成:-di)
• -i:保持容器运行。通常与 -t 同时使用。加入it这两个参数后,容器创建后自动进入容器中,退出容器后,容器自动关闭。 

• -t:为容器重新分配一个伪输入终端,通常与 -i 同时使用。 

• -d:以守护(后台)模式运行容器。创建一个容器在后台运行,需要使用docker exec 进入容器。退出后,容器不会关闭。
• --name=mysql_master:容器的别名。
• -p 3307:3306**:将容器的 3306 端口映射到宿主机的 3307 端口。
• -v $PWD/conf:/etc/mysql/conf.d**:将主机当前目录下的 conf/my.cnf 挂载到容器的 /etc/mysql/my.cnf。配置目录。
• -v $PWD/logs:/logs**:将主机当前目录下的 logs 目录挂载到容器的 /logs。日志目录。
• -v $PWD/data:/var/lib/mysql** :将主机当前目录下的data目录挂载到容器的 /var/lib/mysql 。数据目录。
• -e MYSQL_ROOT_PASSWORD=123456:**初始化 root 用户的密码。
• 上面提到的“$PWD”是获取当前目录下路径

3.2查看容器是否创建成功

Docker 容器搭建mysql 集群(主从数据库)

查看docker当前运行容器代码

docker ps

3.3进入修改容器下的/etc/my.cnf文件

3.3.1先拷贝my.cnf到容器外修改完再覆盖容器原来的my.cnf文件

Docker 容器搭建mysql 集群(主从数据库)

 Docker 容器搭建mysql 集群(主从数据库)

 拷贝命令:

docker cp 0a70ced7b5e1:/etc/my.cnf /Users/hicheer/

注意事项:命令中的“0a70ced7b5e1”改为自己的容器id,“/Users/hicheer/”改为自己要拷贝的位置

原文件内容:

Docker 容器搭建mysql 集群(主从数据库)

修改后文件内容:

Docker 容器搭建mysql 集群(主从数据库)

添加的代码:

log-bin=mysql-bin
server-id=1

注意事项:

  1. 一定要添加到 [mysqld] 下面 
  2. server-id=1(一定要唯一,如果有其他mysql容器配置了server-id=1,修改server-id为其他值)

将修改后的文件覆盖回去:

Docker 容器搭建mysql 集群(主从数据库)

命令:

docker cp /Users/hicheer/my.cnf 0a70ced7b5e1:/etc/

 注意事项:

  1. 这次是拷贝回去文件,记得把位置颠倒一下

3.4重启mysql容器使配置文件生效

Docker 容器搭建mysql 集群(主从数据库)

停止命名:

docker stop 0a70ced7b5e1

注意事项:命令中的“0a70ced7b5e1”改为自己的容器id

Docker 容器搭建mysql 集群(主从数据库)

 启动命令:

docker start 0a70ced7b5e1

3.5查看是否启动

Docker 容器搭建mysql 集群(主从数据库)

3.6进入容器

 Docker 容器搭建mysql 集群(主从数据库)

进入容器命令:

docker exec -it 0a70ced7b5e1 /bin/bash

 注意事项:代码中间的“0a70ced7b5e1”改为自己的容器id

3.7进入mysql

Docker 容器搭建mysql 集群(主从数据库)

进入mysql命令

mysql -uroot -p123456

注意:命令中"-u"后面的是账户,“-p”后面的是密码

3.8创建一个新的账户test(用来下面从数据库访问主数据库)

Docker 容器搭建mysql 集群(主从数据库)

创建账户命令:

grant replication slave on *.* to 'test'@'%' identified by '123456'; flush privileges;

创建的账户信息:

账户:test,密码:123456

3.9查看当前主数据库binglog日志状态 

Docker 容器搭建mysql 集群(主从数据库)

查看命令:

show master status;

 注意事项:

  1. 这里主要看看两个参数:“File” 与 “Position” 记住并复制到记事本上,等下要用。
  2. 其他参数有没有值都无所谓

4.创建从数据库(slave)(下面类似命令就不解释了)

4.1创建从数据库

Docker 容器搭建mysql 集群(主从数据库)

创建命令:

docker run -id \
--name=mysql_slave \
-p 3308:3306 \
-v $PWD/slave/conf:/etc/mysql/conf.d \
-v $PWD/slave/logs:/logs \
-v $PWD/slave/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql:5.7

 查看是否创建成功:

Docker 容器搭建mysql 集群(主从数据库)

4.2修改/etc/my.cof文件(参考上面主数据库的方式修改)

修改后的内容:

Docker 容器搭建mysql 集群(主从数据库)

 添加的代码:

log-bin=mysql-bin
server-id=2

4.3重新启动从数据库容器

Docker 容器搭建mysql 集群(主从数据库)

命令:

docker stop ba369b71c60f; docker start ba369b71c60f;

4.4进入容器

Docker 容器搭建mysql 集群(主从数据库)

 进入命令:

docker exec -it ba369b71c60f /bin/bash

4.5进入mysql

Docker 容器搭建mysql 集群(主从数据库)

4.6准备从数据库连接主数据库内容

  1. 获取主数据库容器的ip地址,端口号(主意⚠️:这里的端口好是默认的3306,并不是主数据库的3307)
  2. 刚才保存的两个参数:“File” 与 “Position”
  3. 刚才创建的账户:test,密码:123456

4.6.1获取主数据库容器的ip地址

Docker 容器搭建mysql 集群(主从数据库)

获取端口命令:

docker inspect -f '{{.Name}} - {{.NetworkSettings.IPAddress }}' $(docker ps -aq)

4.6.2用上面参数替换下面命令中的参数

change master to master_host='你的IP', master_user='test账户名', master_password='test账户密码', master_port=默认端口号, master_log_file='你保存的File参数值', master_log_pos=你保存的Position参数值, master_connect_retry=30;

连接主数据实例:

Docker 容器搭建mysql 集群(主从数据库)

4.7开启主从复制

Docker 容器搭建mysql 集群(主从数据库)

命令:

start slave;

 注意我这边启动报错了!!!

先停掉主从复制,命令:

stop slave;

重新设置开启主从复制,命令:

reset slave;

开启主从复制,命令:

start slave;

Docker 容器搭建mysql 集群(主从数据库)

4.8查看是否开启

命令:

show slave status\G

Docker 容器搭建mysql 集群(主从数据库)

 注意:只要这两个参数不是YES(有些是TRUE),都是有问题的

5.完结撒花。

下面有mysql工具试一下吧,无论是写命令,还是直接在表里面添加数据都是可以同步的。文章来源地址https://www.toymoban.com/news/detail-478091.html

到了这里,关于Docker 容器搭建mysql 集群(主从数据库)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Mysql主从数据库搭建(一主两从)

    目录 1、服务器规划 2、主从同步流程 3、主从搭建 3.1、master节点上配置文件修改 3.2、master节点创建同步用户和权限 3.3、slave1和slave2节点配置文件修改 3.4、slave1和slave2节点执行同步任务 3.5、解决虚拟机克隆导致mysql所有服务器uuid都一样的问题 4、bin-log相关说明 5、主从同步注

    2024年02月11日
    浏览(46)
  • 实现↝Mysql数据库主从复制搭建与同步

    一般数据库都是读取压力大于写数据压力,主从复制即为了实现数据库的负载均衡和读写分离。通过将Mysql的某一台主机的数据复制到其它主机(slaves)上,主服务器只负责写,而从服务器只负责读。 如生产环境中,使用redis数据库作为缓存数据库,用户访问业务数据时,先

    2024年02月10日
    浏览(55)
  • Mysql数据库--实现主从复制搭建与同步

    一般数据库都是读取压力大于写数据压力,主从复制即为了实现数据库的负载均衡和读写分离。通过将Mysql的某一台主机的数据复制到其它主机(slaves)上,主服务器只负责写,而从服务器只负责读。 如生产环境中,使用redis数据库作为缓存数据库,用户访问业务数据时,先

    2024年02月08日
    浏览(61)
  • MySQL8.0+数据库GTID主从模式搭建

    参见: MySQL数据库8.0+版本部署安装-CSDN博客 部署环境[例]: 主库:192.168.179.153:3306 从库:192.168.179.154:3306 主从库开启GTID模式 // 主从库均修改,修改从库配置文件,在[mysqld]下添加如下配置 $ vim /etc/my.cnf gtid_mode = on enforce_gtid_consistency = on 需检查server-id配置,为主从架构中的所有

    2024年02月04日
    浏览(66)
  • Mysql数据库搭建互为主从mysqlB的配置文件

    [client] port=3306 socket=/var/lib/mysql/mysql.sock [mysqld] port=3306 socket=/var/lib/mysql/mysql.sock datadir=/var/lib/mysql pid-file=/var/lib/mysql/mysql.pid log-error=/var/log/mysql.err server-id=2 #偶数ID auto_increment_offset=2 auto_increment_increment=2 #打开二进制功能,MASTER主服务器必须打开此项 log-bin=mysql-bin binlog-format=MIXED

    2024年02月15日
    浏览(50)
  • 使用Docker构建的MySQL主从架构:高可用性数据库解决方案

    MySQL主从架构,我们已经在vmware虚拟机上实践过了,接下来我们一起探讨在docker中如何使用MySQL主从架构。 🏠个人主页:我是沐风晓月 🧑个人简介:大家好,我是沐风晓月,阿里云社区博客专家😉😉 💕 座右铭: 先努力成长自己,再帮助更多的人 ,一起加油进步🍺🍺🍺

    2024年02月08日
    浏览(88)
  • 基于docker容器部署MySQL数据库

    一,概要.... 2 二,环境准备.... 3 2.1,docker部署.... 3 三,使用docker部署mysql 6 3.1、创建数据存放目录.... 6 3.2、创建bridge网络并指定IP区间.... 6 3.3、Docker安装MySQL. 6 3.4、自定义配置.... 7 四,MySQL简单的配置.... 9 4.1、在容器 mysql 中开启一个交互模式的终端.... 9 4.2、mysql登录....

    2024年02月04日
    浏览(77)
  • Mysql Docker 容器重启后数据库数据丢失分析

    项目复用nacos的mysql数据库且msyql容器已存在,之前已新建好数据库并插入数据。本次需要更新数据库表结构和数据。重启myql导致数据库数据丢失。 另外,本次事故是昨天发生未及时记录,日志不够详细。 本次需要更新数据库表结构和数据,通过dbviewer操作失败报 异常,部分

    2024年02月01日
    浏览(60)
  • Docker容器MySQL数据库的备份与还原,以及每天定时自动备份.

    根据自己需要,我这个是Debian的5.7版本的镜像。 这个地方一定要注意: 有些版本的docker镜像里面移除了MySQL自带的工具。包括Mysqlbinlog,Mysqlcheck等。所以即使你开启了binlog,也是没有办法还原数据的,这里要注意一下镜像的选择。 mkdir三个文件夹,方便持久化。 /home/mysql/c

    2024年02月05日
    浏览(69)
  • 数据库应用:Redis主从复制、哨兵、cluster集群

    目录 一、理论 1.Redis高可用 2.Redis主从复制 3.部署Redis主从复制 4.Redis哨兵模式 5.部署Redis哨兵模式 6.Redis集群模式 7.部署Redis集群 二、实验 1.部署Redis主从复制 2.部署Redis哨兵模式 3.部署Redis集群 三、问题 1.开启Redis群集失败 四、总结 (1)概念 在web服务器中,高可用是指服务

    2024年02月15日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包