温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

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

发布时间:2021-06-25 14:02:51 来源:亿速云 阅读:181 作者:chen 栏目:大数据

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

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

docker pull mysql:5.6

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

前期准备工作

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

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

cd /data/mysql/mysql3307
docker 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

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

cd /data/mysql/mysql3308
docker 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

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

cd /data/mysql/mysql3309
docker 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

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

cd /data/mysql/mysql3310
docker 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

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

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

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

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

# 编辑iptables
vim /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

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

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

3.配置主从集群

master:端口为3307的mysql

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

  • 配置master     

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

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

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 affected
mysql> grant replication slave,replication client on *.* to 'slave_user'@'%';
Query OK, 0 rows affected
mysql>

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

  • 配置slave的my.cnf文件

# 切换到mysql3308配置文件目录
cp /data/mysql/mysql3308/conf
touch my.cnf
vim 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 set

mysql>

进入各个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}}' mysql3307
172.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 affected
mysql>

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

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

  • 测试主从复制

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

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

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI