RXC方案与Replication方案的对比:

RXC采用同步复制,事务在所有集群节点要么同时提交,要么不提交

Replication采用异步复制,无法保证数据的一致性

RXC镜像下载

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配置文件(启动容器时指定映射)

touch /home/soft/haproxy/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.7haproxy

docker exec-it h1 bash

haproxy-f /usr/local/etc/haproxy/haproxy.cfg

为集群添加haproxy的专用账号

CREATE USER 'haproxy'@'%' IDENTIFIED BY '';

error:Percona-XtraDB-Cluster prohibits use of ALTER command on a table(base_test.station_cmcu) that residesin non-transactional storage engine (except switching totransactional engine)with pxc_strict_mode = ENFORCING or MASTER

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_id51priority100advert_int1authentication {

auth_type PASS

auth_pass123456}

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

dockerrm 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 --user root node1 bash

apt-get update

apt-get install percona-xtrabackup-24innobackupex--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.4pxc4----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.5pxc5----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

log127.0.0.1 local5 info#守护进程运行

daemon

defaults

log global

mode http

#日志格式

option httplog

#日志中不记录负载均衡的心跳检测记录

option dontlognull

#连接超时(毫秒)

timeout connect5000#客户端超时(毫秒)

timeout client50000#服务器超时(毫秒)

timeout server50000#监控界面

listen admin_stats

#监控界面的ip:port

bind0.0.0.0:8888#访问协议

mode http

#URI相对地址

stats uri/dbs

#统计报告格式

stats realm Global\ statistics

#登陆账户信息

stats auth pascall:zj1424603784

#数据库负载均衡

listen proxy-mysql

#访问的ip:port

bind0.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_1172.18.0.2:3306 check weight 1 maxconn 2000server MySQL_2172.18.0.3:3306 check weight 1 maxconn 2000server MySQL_3172.18.0.4:3306 check weight 1 maxconn 2000server MySQL_4172.18.0.5:3306 check weight 1 maxconn 2000server MySQL_5172.18.0.6:3306 check weight 1 maxconn 2000#使用keepalive检测死链

option tcpka

注:安装好Percona XtraDB Cluste(PXC)群集后,它在启动时和运行时执行许多验证。

可以使用以下模式:

DISABLED:不要执行严格的模式验证并正常运行。

PERMISSIVE:如果vaidation失败,请记录警告并继续正常运行。

ENFORCING:如果启动期间验证失败,请暂停服务器并抛出错误。如果验证在运行时失败,则拒绝操作并抛出错误。

MASTER:ENFORCING除了不执行显式表锁定的验证之外 。此模式可与群集一起使用,其中写入操作与单个节点隔离。

默认情况下,PXC严格模式设置为ENFORCING

Percona XtraDB Cluster目前仅支持对使用事务存储引擎(XtraDB或InnoDB)的表进行复制。

对于使用非事务性存储引擎(MyISAM,MEMORY,CSV等)的表,不应允许以下语句:

进行写入到表数据操作语句(例如,INSERT,UPDATE,DELETE,等等)

管理报表: CHECK,OPTIMIZE,REPAIR,和ANALYZE

TRUNCATE TABLE 和 ALTER TABLE

根据所选模式,会发生以下情况:

DISABLED 启动时,不执行验证。在运行时,允许所有操作。

PERMISSIVE 启动时,不会执行任何验证。在运行时,允许所有操作,但在不支持的表上执行不需要的操作时会记录警告。

ENFORCING 要么 MASTER 。启动时,不执行验证。在运行时,拒绝对不受支持的表执行的任何不良操作,并记录错误。

SQL补充:

SELECT @@global.sql_mode

set @@global.sql_mode='STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';

docker手动搭建MySQL_Docker搭建mysql集群相关推荐

  1. mysql集群搭建(使用docker 一主一从)

    mysql集群搭建 my.cnf 配置文件配置 在 /etc/mysql/my.cnf 中 (拿一个举例) (docker中需要先进入开启的容器,docker exec -it 容器名称 /bin/b ...

  2. 后端搭建MySQL_Docker前后端分离实战之搭建MYSQL集群

    这门慕课实战对想了解Docker的人很有帮助.感谢神思者l大佬 renren-fast 后台:SpringBoot+SSM+Shiro+swagger(API调试)+Redis+JWT(单点登录) L ...

  3. mysql 集群_MySQL之PXC集群搭建

    一.PXC 介绍 1.1 PXC 简介 PXC 是一套 MySQL 高可用集群解决方案,与传统的基于主从复制模式的集群架构相比 PXC 最突出特点就是解决了诟病已久的数据复制延迟问题,基本上可以达到实 ...

  4. 使用Docker搭建Elasticsearch6.8.6集群及设置集群用户密码

    本文基于Docker镜像搭建Elasticsearch集群,集群搭建完成后设置集群用户密码,主要包含以下内容: 修改系统参数 安装docker和docker-compose 编写yml配置文件 获取集 ...

  5. kubernetes怎么读_Kubernetes之有状态应用实践-搭建MySQL集群

    零.前情纪要 上一遍文章Kubernetes集群搭建已经带大家成功搭建了Kubernetes集群,可能有不少人在搭建过程中对很多概念性的东西还是很模糊,接下来这篇文章将通过带领大家一起搭建一个高可用的 ...

  6. 【Docker之Swarm详细讲解Swarm集群搭建管理节点工作节点Raft一致性协议overlay网络Docker结合Swarm部署WordPress个人博客实战】

    一.知识回顾 之前的内容都帮你整理好了,在这里哟! [0.Docker相关目录文章整理,可自行查看,包含多节内容] [1.Docker详细安装部署&阿里镜像地址配置] [2.Docker架构& ...

  7. swarm mysql集群_Docker Swarm集群搭建教程

    接下来通过实例演示一下如何使用 Swarm 来创建安全的集群. 实例中包含 3 个管理节点和 3 个工作节点,如下图所示,可以根据需要自行调整管理节点和工作节点的数量.名称和 IP. 每个节点都需要安 ...

  8. mysql集群搭建与总结

    文章目录 1. 主从复制集群 1.1 搭建主从复制 1.2 主从复制验证 1.3 主从数据不一致的解决方案(pt-table-sync) 1.4 主从复制的原理 2. 主主复制集群 3.pxc集群 3 ...

  9. rancher安装mysql_四、rancher搭建Mysql集群化部署,做到同步备份

    一.Rancher基础镜像查找: 1.基础镜像操作地址:https://hub.docker.com/r/library/mariadb/ 2.选择自己需要的镜像进行搜索,里面有对应版本:也有最新的如 ...

  10. haproxy keepalived_详解mycat+haproxy+keepalived搭建高可用负载均衡mysql集群

    概述 目前业界对数据库性能优化普遍采用集群方式,而oracle集群软硬件投入昂贵,mysql则比较推荐用mycat去搭建数据库集群,下面介绍一下怎么用mycat+haproxy+keepalived搭 ...

最新文章

  1. 谷歌新深度学习系统可以促进放射科医生的发展
  2. Node - 异步IO和事件循环
  3. WWW软件全球使用排名
  4. hybrid7 宝马active_【图】宝马ActiveHybrid7系 动力节能完美结合_汽车之家
  5. 星战7将映 追忆那些年存储你身边大数据
  6. 富文本编辑器:Typora(编辑与预览一体化)
  7. php中将excel写入mysql数据库的示例
  8. pandas 替换数字列中的字符串
  9. 20-10-032-安装-KyLin-2.6.1-单机版安装(MAC官网下载)
  10. Linux基础命令---检查密码文件pwck
  11. 在DevStack中使用Systemd
  12. 【数据库】数据库系统工程师(软考中级)——学习过程总结
  13. 单因素试验固定效应模型方差分析
  14. 上海市第三届上海市青少年算法竞赛(小学组)线上同步赛 数洞洞
  15. linux时间转excel,linux时间戳转换【操作模式】
  16. 苹果手机屏幕镜像搜索不到电视_用手机开热点投屏需要流量吗?
  17. mac 卸载java 9
  18. 编程入门知识c语言,C语言编程学习入门基础知识有哪些?
  19. SpringBoot整合WebSocket实现聊天室系统
  20. C++实现走迷宫算法(1)

热门文章

  1. 微信小程序:实用多功能工具箱微信小程序源码
  2. 两位数乘法速算(无意中发现)
  3. 《Archi银行集团:结合BIAN参考模型、ArchiMate®建模符号和 TOGAF®框架》中文版官网正式发布
  4. Word里面输入英文时全是大写
  5. matlab中比对字符串是否完全一致_MATLAB字符串比较总结
  6. Excel 2010 快速跳转至首行、末行 及 某数据上下段批量选取
  7. Linux系列---Jexus安装(内附超链接,其他linux环境搭建)
  8. 小米面试Java开发工程师(实习)
  9. SpringCloud Alibaba 2021微服务实战三十二 集成RocketMQ实现分布式事务
  10. 阿里云RDS 批处理定时导出备份 并压缩归档