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集群"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!