首页 / DOCKER / Docker搭建mysql集群
Docker搭建mysql集群
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Docker搭建mysql集群,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4493字,纯文字阅读大概需要7分钟。
内容图文
RXC方案与Replication方案的对比:
- RXC采用同步复制,事务在所有集群节点要么同时提交,要么不提交
- Replication采用异步复制,无法保证数据的一致性
RXC镜像下载
- docker官方仓库:https://hub.docker.com
docker pull percona/percona-xtradb-cluster
docker创建内部网段
docker network create --subnet=172.18.0.0/24 net1
docker卷:容器中的PXC节点映射数据目录的解决办法
name:v1,v2,v3,v4,v5
docker volume create --name v1
- docker卷查看
docker inspect v1
创建PXC容器
name: node1,node2,node3,node4,node5
ip:172.18.0.2,172.18.0.3,172.18.0.4,172.18.0.5,172.18.0.6
port:3306,3307,3308,3309,3310
docker run -d -p 3306:3306-v v1:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=root --privileged --name=node1 --net=net1 --ip 172.18.0.2 pxc
docker run -d -p 3307:3306-v v2:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=root -e CLUSTER_JOIN=node1 --privileged --name=node2 --net=net1 --ip 172.18.0.3 pxc
数据库负载均衡
- 使用Haproxy做负载均衡,请求被均匀分发给每个节点,单节点负载低,性能好
- 安装Haproxy镜像
docker pull haproxy
- 创建Haproxy配置文件(启动容器时指定映射)
- 配置参考:https://zhangge.net/5125.html
touch /home/soft/haproxy.cfg
...
- 创建Haproxy容器
docker run -it -d -p 4001:8888 -p 4002:3306 -v /home/soft/haproxy:/usr/local/etc/haproxy --name h1 --privileged --net=net1 --ip 172.18.0.7 haproxy docker exec -it h1 bash haproxy -f /usr/local/etc/haproxy/haproxy.cfg
web监控:http://114.115.154.152:4001/dbs
Keepalived实现双机热备
- 一个虚拟ip
- 多个keepalived(用于强虚拟ip)
- 安装Keepalived
- Keepalived必须安装在Haproxy所在的容器内(虚机为ubantu)
docker exec -it h1 bash apt-get update apt-get install keepalived
- keepalived配置文件(/etc/keepalived/keepalived.conf)
apt-get install vim
vim /etc/keepalived/keepalived.conf
- MASTER:主服务;BACKUP:备服务
- eth0:网卡设备,用于与宿主ip映射
- priority:权重
- advert_int:心跳检测时间间隔(秒)
- virtual_ipaddress:公用虚拟ip
vrrp_instance VI_1 { state MASTER interface eth0 virtual_router_id 51 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 123456 } virtual_ipaddress { 172.18.0.201 } }
service keepalived start
在宿主中:ping 172.18.0.201
数据库备份(热备份)
- MySQL常见的热备份:LVM和XtraBackup(推荐)
- 创建一个docker卷
docker volume create backup
- 停止并删除一个节点(随意:node1)
docker stop node1 docker rm node1
- 创建PXC节点(node1)
docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=root -e CLUSTER_JOIN=node2 -v v1:/var/lib/mysql -v backup:/data --privileged --name=node1 --net=net1 --ip 172.18.0.2 pxc
- PXC全量备份步骤(手动触发)(PXC容器中安装XtraBackup)
- 以后自动增量备份
- 进入容器,以管理员的身份
docker exec -it --name root node1 bash
apt-get update apt-get install percona-xtrabackup-24 innobackupex --user=root --password=root /data/backup/full
- PXC全量恢复(进入容器内部执行)
rm -rf /var/lib/mysql/* innobackupex --user=root --password=root --apply-back /data/backup/full/2018-04-15_05-09-07/ innobackupex --user=root --password=root --copy-back /data/backup/full/2018-04-15_05-09-07/
注意:RXC不能直接使用容器中的目录。
3----3.docker run -d -p 3308:3306 -v v3:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=root -e CLUSTER_JOIN=node1 --privileged --name=node3 --net=net1 --ip 172.18.0.4 pxc 4----4.docker run -d -p 3309:3306 -v v4:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=root -e CLUSTER_JOIN=node1 --privileged --name=node4 --net=net1 --ip 172.18.0.5 pxc 5----5.docker run -d -p 3310:3306 -v v5:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=root -e CLUSTER_JOIN=node1 --privileged --name=node5 --net=net1 --ip 172.18.0.6 pxc
global #工作目录 chroot /usr/local/etc/haproxy #日志文件吗,使用rsyslog服务中local5日志设备(/var/log/local5),等级info log 127.0.0.1 local5 info #守护进程运行 daemon defaults log global mode http #日志格式 option httplog #日志中不记录负载均衡的心跳检测记录 option dontlognull #连接超时(毫秒) timeout connect 5000 #客户端超时(毫秒) timeout client 50000 #服务器超时(毫秒) timeout server 50000 #监控界面 listen admin_stats #监控界面的ip:port bind 0.0.0.0:8888 #访问协议 mode http #URI相对地址 stats uri /dbs #统计报告格式 stats realm Global\ statistics #登陆账户信息 stats auth pascall:zj1424603784 #数据库负载均衡 listen proxy-mysql #访问的ip:port bind 0.0.0.0:3306 #网络协议 mode tcp #负载均衡算法(轮询算法) #轮询算法:roundrobin #权重算法:static-rr #最少连接算法:leastconn #请求源IP算法:source balance roundrobin #日志格式 option tcplog #在Mysql中创建一个没有权限的haproxy用户,密码空 option mysql-check user haproxy server MySQL_1 172.18.0.2:3306 check weight 1 maxconn 2000 server MySQL_2 172.18.0.3:3306 check weight 1 maxconn 2000 server MySQL_3 172.18.0.4:3306 check weight 1 maxconn 2000 server MySQL_4 172.18.0.5:3306 check weight 1 maxconn 2000 server MySQL_5 172.18.0.6:3306 check weight 1 maxconn 2000 #使用keepalive检测死链 option tcpka
原文:https://www.cnblogs.com/pascall/p/9749770.html
内容总结
以上是互联网集市为您收集整理的Docker搭建mysql集群全部内容,希望文章能够帮你解决Docker搭建mysql集群所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。