前言
前段时间写了一篇关于mysql双主复制的文章,在这个的基础上我们来做个高可用的实践。
前期准备,需要安装好docker、docker-compose的运行环境。
mysql如何实现双主复制?我们用docker来个做实践。-CSDN博客
一、安装haproxy
1、创建haproxy目录,执行如下命令。
mkdir -p /docker/haproxy/{haproxy-data,haproxy-sockets}
cd /docker/haproxy
2、编写haproxy配置,执行如下命令。
vim haproxy.cfg
# haproxy.cfg
global
log /dev/log local0
log /dev/log local1 notice
# chroot /var/lib/haproxy
stats socket /run/haproxy/admin.sock mode 660 level admin expose-fd listeners
stats timeout 30s
user haproxy
group haproxy
daemon
defaults
log global
mode http
# option httplog
option dontlognull
timeout connect 5000
timeout client 50000
timeout server 50000
frontend mysql_frontend
bind *:3306
mode tcp
default_backend mysql_backend
backend mysql_backend
mode tcp
balance roundrobin
option mysql-check
server mysql_node1 mysql-mm-1:3306 check
server mysql_node2 mysql-mm-2:3306 check
3、编写yaml文件,内容如下;version替换成自己的docker-compose版本。
vim docker-compose.yml
version: '2.2.2'
services:
haproxy:
image: haproxy:2.1
container_name: haproxy
volumes:
- "./haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg"
- "./haproxy-sockets:/run/haproxy"
- "./haproxy-data:/var/lib/haproxy"
networks:
- dbnet
networks:
dbnet:
name: dbnet
driver: bridge
4、启动haproxy,执行如下命令。
docker-compose up -d
5、检查服务是否正常运行,执行如下命令。
docker-compose ps -a
返回如下内容,说明服务已正常启动,正在运行。
6、如果服务未正常启动,可以执行如下命令获取错误信息。
docker logs haproxy
7、至此,haproxy安装完成并且已正常运行。
二、测试验证
1、在两条mysql主机都运行的情况下,连接数据库,执行如下命令。
mysql -uroot -hhaproxy -p
如果配置正常,可以正常登录,返回如下内容。
2、往users表新增一条数据,执行如下SQL。
insert into mydb.users(id,age,name)values("3","10","yiyi");
3、查看结果,执行如下SQL。
select * from mydb.users;
返回如下内容说明数据已插入。
4、现在关闭一台mysql主机(mysql-mm-1),执行如下命令。
docker stop mysql-mm-1
然后重新登录数据库、新增、查看,执行上述1-3的流程。
5、重新启动mysql-mm-1数据库,执行如下命令。
docker start mysql-mm-1
6、然后再关闭另外一台mysql主机(mysql-mm-2),执行如下命令。
docker stop mysql-mm-2
然后重新登录数据库、新增、查看,执行上述1-3的流程。
7、最后重新启动mysql-mm-2数据库,执行如下命令。
docker start mysql-mm-2
8、至此,mysql高可用的测试验证已完成。
总结
在准备好两台双主复制的mysql情况下,其实安装一个网络负载均衡器即可以实现mysql的高可用,本文中使用的是haproxy。
大体步骤也很简单
1、安装haproxy。
2、测试验证。
最后因本人能力有限,有什么不对的地方望各位大佬指出好让我改进,大家多多包含,谢谢大家。
标签:haproxy,mm,如下,高可用性,mysql,docker,执行 From: https://blog.csdn.net/zhangbin1988/article/details/136842741