千家信息网

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

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,本篇内容介绍了"Docker怎么在一台服务器上安装和配置Mysql集群"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读
千家信息网最后更新 2026年11月01日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安全错误 数据库的锁怎样保障安全 善班互联网科技 互联网与未来科技 睿民互联网科技 万达互联网科技 互联网科技股有哪些 互联网 科技馆 互联网汽车科技小镇 北京大学互联网科技怎么样 小米互联网科技园设置 互联网企业和科技型企业 河南住房之家互联网科技 滨湖区互联网智能科技产品有哪些 科技互联网海报 山东星卡互联网科技有限公司官网 每天都有哪些好的互联网科技 郑州欣桑互联网科技有限公司 科技互联网行业投资研究 陕西九四连强互联网科技有限公司 中国科技和美国互联网 科技发展第三阶段互联网时代 互联网 科技服务平台 四个字互联网科技公司取名 互联网巨头投资的硬核科技 海南科技产业互联网平台 小米互联网科技园设置 速维有品互联网信息科技(苏州)有限公司 乌鲁木齐新华智原互联网科技学校 合肥互联网科技公司公章图片 广东工业互联网大赛深圳学泰科技 云南省自由互联网科技有限公司
0