千家信息网

Docker怎么在一台服务器上安装和配置Mysql集群

发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,本篇内容介绍了"Docker怎么在一台服务器上安装和配置Mysql集群"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读
千家信息网最后更新 2025年12月02日Docker怎么在一台服务器上安装和配置Mysql集群

本篇内容介绍了"Docker怎么在一台服务器上安装和配置Mysql集群"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

1.从docker hub下载mysql5.6的镜像

docker pull mysql:5.6

2.使用mysql5.6镜像运行4台mysql服务,用端口号区分

前期准备工作

# 在本机创建四个目录,分别用了存储4台mysql服务的数据,日志以及配置文件mkdir /data/mysqlcd /data/mysqlmkdir mysql3307 mysql3308 mysql3309 mysql3310cd mysql3307mkdir conf logs datacp -r conf/ data/ logs/ ../mysql3308cp -r conf/ data/ logs/ ../mysql3309cp -r conf/ data/ logs/ ../mysql3310

创建并运行4台mysql容器,每台服务器的root密码都是liuhaizhuang

cd /data/mysql/mysql3307docker run -p 3307:3306 --name mysql3307 \-v $PWD/conf:/etc/mysql/conf.d \-v $PWD/logs:/logs \-v $PWD/data:/var/lib/mysql \-e MYSQL_ROOT_PASSWORD=liuhaizhuang \-d mysql:5.6

cd /data/mysql/mysql3308docker run -p 3308:3306 --name mysql3308 \-v $PWD/conf:/etc/mysql/conf.d \-v $PWD/logs:/logs \-v $PWD/data:/var/lib/mysql \-e MYSQL_ROOT_PASSWORD=liuhaizhuang \-d mysql:5.6

cd /data/mysql/mysql3309docker run -p 3309:3306 --name mysql3309 \-v $PWD/conf:/etc/mysql/conf.d \-v $PWD/logs:/logs \-v $PWD/data:/var/lib/mysql \-e MYSQL_ROOT_PASSWORD=liuhaizhuang \-d mysql:5.6

cd /data/mysql/mysql3310docker run -p 3310:3306 --name mysql3310 \-v $PWD/conf:/etc/mysql/conf.d \-v $PWD/logs:/logs \-v $PWD/data:/var/lib/mysql \-e MYSQL_ROOT_PASSWORD=liuhaizhuang \-d mysql:5.6

到此4台mysql服务器容器已经全部创建且启动!

如果想远程链接这4台mysql,需要防火墙开启3307,3308,3309,3310

# 编辑iptablesvim /etc/sysconfig/iptables# 加上如下4行 退出保存-A INPUT -p tcp -m state --state NEW -m tcp --dport 3307 -j ACCEPT-A INPUT -p tcp -m state --state NEW -m tcp --dport 3308 -j ACCEPT-A INPUT -p tcp -m state --state NEW -m tcp --dport 3309 -j ACCEPT-A INPUT -p tcp -m state --state NEW -m tcp --dport 3310 -j ACCEPT

重启防火墙,到此远程可以链接上新装的4台mysql了

systemctl restart iptables.service

说明已经全部链接上!下一步就可以配置主从复制了

3.配置主从集群

master:端口为3307的mysql

slaves:端口为3308,3309,3310的mysql

  • 配置master

# 切换到mysql3307的配置文件目录cd /data/mysql/mysql3307/conf# 新增my.cnf文件且加上如下内容touch my.cnfvim my.cnf

server-id:同一局域网内要唯一就可以

log-bin:开启二进制日志功能,后面的名称可以随便取

重启mysql3307对应的容器

docker restart mysql3307
  • 在master数据库创建数据同步用户;且授予同步用户 replication slave 和 replication client 权限;用于主从同步数据

mysql> create user 'slave_user'@'%' identified by 'liuhaizhuang';Query OK, 0 rows affectedmysql> grant replication slave,replication client on *.* to 'slave_user'@'%';Query OK, 0 rows affectedmysql>

  • 配置slave的my.cnf文件

# 切换到mysql3308配置文件目录cp /data/mysql/mysql3308/conftouch my.cnfvim my.cnf
[mysqld]# 保证局域网内唯一server-id=2# 开启二进制,以防作为其他salve的master使用log-bin=mysql3308-bin# 配置中继日志relay_log=mysql3308-relay-bin# 让slave只读,只参数值限制普通用户,root用户还是可以增删改read_only=1

重启mysql3308对应的容器

docker restart mysql3308

接下来以此类推配置mysql3309和mysql3310从库

  • 链接master和slave

进入mysql3307命令行,执行show master status;查看File和Position字段的值,后面要使用到

mysql> show master status;+----------------------+----------+--------------+------------------+-------------------+| File                 | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |+----------------------+----------+--------------+------------------+-------------------+| mysql3307-bin.000001 |      434 |              |                  |                   |+----------------------+----------+--------------+------------------+-------------------+1 row in setmysql>

进入各个slave命令行,分别执行如下命令:

change master to master_host='172.18.0.5', master_user='slave_user', master_password='liuhaizhuang', master_port=3306, master_log_file='mysql3307-bin.000001', master_log_pos= 434, master_connect_retry=30;

参数说明:

master_host : master的地址,指的是容器的独立ip,可以通过docker inspect --format='{{.NetworkSettings.IPAddress}}' 容器名称|容器id查询容器的ip

[root@VM_0_10_centos ~]# docker inspect --format='{{.NetworkSettings.IPAddress}}' mysql3307172.18.0.5[root@VM_0_10_centos ~]#

master_port:master的端口号,指的是容器的端口号

master_user:用于数据同步的用户

master_password:用于同步的用户的密码

master_log_file:指定 slave 从哪个日志文件开始复制数据,即上文中提到的 file 字段的值

master_log_pos:从哪个 position 开始读,即上文中提到的 position 字段的值

master_connect_retry:如果连接失败,重试的时间间隔,单位是秒,默认是60秒

mysql> change master to master_host='172.18.0.5', master_user='slave_user', master_password='liuhaizhuang', master_port=3306, master_log_file='mysql3307-bin.000001', master_log_pos= 434, master_connect_retry=30;Query OK, 0 rows affectedmysql>

进入slave命令使用start slave;开启主从复制过程;查询主从同步状态命令是:show slave status;

  • 测试主从复制

在master新见一个数据库,然后观察其他几个从库是否自动同步数据

"Docker怎么在一台服务器上安装和配置Mysql集群"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!

配置 容器 数据 同步 服务 主从 文件 用户 命令 服务器 日志 链接 集群 内容 口号 字段 目录 接下来 上文 二进制 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 软件开发项目经理工作年龄 2019网络安全宣传活动 电脑怎么打开服务器的桌面 数据库设计校园信息管理系统 pop3服务器是用来 象棋数据库能存多少局 网络安全总结性话语 数据库成绩计算 石泉中小学网络安全宣传 灵丘现代化网络安全创新服务 电话拉黑会显示服务器错误 商丘市网络技术公司招聘 软件开发会不会对发量有影响 网络安全信息收集的方法有 网络安全法几几年实施 海南省网络技术应用期末试题 联想服务器硬盘坏了 山东恒邦网络技术一卡通 软件开发的本质困难 无锡创新管理软件开发 技术开发包含软件开发的 公安局网络安全教育培训会 广东西格玛网络技术有限公司 创想世界网络技术有限公司 dns服务器的根提示 做一个简单的数据库 战地5无法连接线上服务器 津东华软件开发有限公司 中办网络安全工作责任制 我的世界服务器地基方块怎么拿
0