Docker部署PXC集群(Haproxy负载均衡、Keepalived高可用、XtraBackup数据备份)
1.PXC(Percona XtraDB Cluster)集群基本搭建
特别感谢
常见问题
环境的清理相关命令
本集群通过虚拟机搭建的 自己也尝试了很多次 如果有些问题无法解决
可以尝试清理环境 梳理清楚思路 重新搭建
以下是常用命令
#重启docker服务
systemctl restart docker
#docker 根目录
docker info | grep "Docker Root Dir"
# 删除所有dangling数据卷(即无用的Volume,僵尸文件)
docker volume rm $(docker volume ls -qf dangling=true)
# 删除所有dangling镜像(即无tag的镜像)
docker rmi $(docker images | grep "^<none>" | awk "{print $3}")
# 删除所有关闭的容器
docker ps -a | grep Exit | cut -d ' ' -f 1 | xargs docker rm
# 删除关闭的容器、无用的数据卷和网络
docker system prune
# 删除更彻底,可以将没有容器使用Docker镜像都删掉
docker system prune -a
# 查看日志
docker logs -f --tail 50 pxcnode01
集群搭起来后关闭某个节点起不来了 所有节点都关闭了
(1)查找grastate.dat 该文件主要描述GALERA保持的状态信息
cd / #在根目录下查找
find -name grastate.dat
(2)如果启动节点1位主节点 就修改节点1的grastate.dat文件 然后再重新启动所有子节点
vim /var/lib/docker/volumes/pxc-vm01/_data/grastate.dat
(3)启动haproxy
docker start hpx01
docker start hpx02
(4)启动Keepalived
service keepalived start
1.PXC(Percona XtraDB Cluster)集群基本搭建
速度慢 但能保证强一致性 适用于保存价值较高的数据
数据同步是双向的 在任一节点写入数据 都会同步到其他所有节点 在任何节点上都能同时读写
采用同步复制 向任一节点写入数据 只有所有节点都同步成功后 才会向客户端返回成功。事务在所有节点要么同时提交,要么不提交
(1)安装 docker pull percona/percona-xtradb-cluster
(2)重命名 docker tag percona/percona-xtradb-cluster:latest pxc
(3)删除源镜像标签 docker rmi percona/percona-xtradb-cluster
docker images
1.2创建网段 docker network create --subnet=172.188.0.0/24 hxjf-docker (如果有重复可以删除 docker network rm 名称)
查看 docker network inspect hxjf-docker
docker volume create --name pxc-vm01
docker volume create --name pxc-vm02
docker volume create --name pxc-vm03
docker volume create --name pxc-vm04
docker volume create --name pxc-vm05
查看 docker inspect pxc-vm01
# 第一个节点
(1)创建容器
docker run -d -p 3301:3306 -e MYSQL_ROOT_PASSWORD=root -e CLUSTER_NAME=PXC-CLUSTER -e XTRABACKUP_PASSWORD=root -v pxc-vm01:/var/lib/mysql -v backup:/data --privileged --name=pxcnode01 --net=hxjf-docker --ip 172.188.0.81 pxc
(2)验证
docker ps -a
docker exec -it pxcnode01 bash
mysql -u root -proot (这里我后来重新docker run MYSQL_ROOT_PASSWORD参数修改123456登录也不行 只能用root登录)
#以下二三四五节点 多了个 -e CLUSTER_JOIN=pxcnode01
# 第二个节点
docker run -d -p 3302:3306 -e MYSQL_ROOT_PASSWORD=root -e CLUSTER_NAME=PXC-CLUSTER -e XTRABACKUP_PASSWORD=root -e CLUSTER_JOIN=pxcnode01 -v pxc-vm02:/var/lib/mysql -v backup:/data --privileged --name=pxcnode02 --net=hxjf-docker --ip 172.188.0.82 pxc
# 第三个节点
docker run -d -p 3303:3306 -e MYSQL_ROOT_PASSWORD=root -e CLUSTER_NAME=PXC-CLUSTER -e XTRABACKUP_PASSWORD=root -e CLUSTER_JOIN=pxcnode01 -v pxc-vm03:/var/lib/mysql -v backup:/data --privileged --name=pxcnode03 --net=hxjf-docker --ip 172.188.0.83 pxc
# 第四个节点
docker run -d -p 3304:3306 -e MYSQL_ROOT_PASSWORD=root -e CLUSTER_NAME=PXC-CLUSTER -e XTRABACKUP_PASSWORD=root -e CLUSTER_JOIN=pxcnode01 -v pxc-vm04:/var/lib/mysql -v backup:/data --privileged --name=pxcnode04 --net=hxjf-docker --ip 172.188.0.84 pxc
# 第五个节点
docker run -d -p 3305:3306 -e MYSQL_ROOT_PASSWORD=root -e CLUSTER_NAME=PXC-CLUSTER -e XTRABACKUP_PASSWORD=root -e CLUSTER_JOIN=pxcnode01 -v pxc-vm05:/var/lib/mysql -v backup:/data --privileged --name=pxcnode05 --net=hxjf-docker --ip 172.188.0.85 pxc
# 查看 docker ps -a
2.解决SSL通信问题
2.1.1查看日志
查看日期发现其它pxcnode02 pxcnode03 pxcnode04 pxcnode05没有起来
docker ps -a
docker logs -f pxcnode03
2.1.2重新配置pxcnode01
(1)删掉第一个pxcnode01
docker stop pxcnode01
docker rm pxcnode01
docker ps -a

docker restart pxcnode01
(5)重启剩余节点
docker rm pxcnode02
docker rm pxcnode03
docker rm pxcnode04
docker rm pxcnode05
docker ps -a
#pxcnode02
docker run -d -p 3302:3306 -e MYSQL_ROOT_PASSWORD=root -e CLUSTER_NAME=PXC-CLUSTER -e XTRABACKUP_PASSWORD=root -e CLUSTER_JOIN=pxcnode01 -v pxc-vm02:/var/lib/mysql -v backup:/data -v conf02:/etc/mysql --privileged --name=pxcnode02 --net=hxjf-docker --ip 172.188.0.82 pxc
#pxcnode03
docker run -d -p 3303:3306 -e MYSQL_ROOT_PASSWORD=root -e CLUSTER_NAME=PXC-CLUSTER -e XTRABACKUP_PASSWORD=root -e CLUSTER_JOIN=pxcnode01 -v pxc-vm03:/var/lib/mysql -v backup:/data -v conf03:/etc/mysql --privileged --name=pxcnode03 --net=hxjf-docker --ip 172.188.0.83 pxc
#pxcnode04
docker run -d -p 3304:3306 -e MYSQL_ROOT_PASSWORD=root -e CLUSTER_NAME=PXC-CLUSTER -e XTRABACKUP_PASSWORD=root -e CLUSTER_JOIN=pxcnode01 -v pxc-vm04:/var/lib/mysql -v backup:/data -v conf04:/etc/mysql --privileged --name=pxcnode04 --net=hxjf-docker --ip 172.188.0.84 pxc
#pxcnode05
docker run -d -p 3305:3306 -e MYSQL_ROOT_PASSWORD=root -e CLUSTER_NAME=PXC-CLUSTER -e XTRABACKUP_PASSWORD=root -e CLUSTER_JOIN=pxcnode01 -v pxc-vm05:/var/lib/mysql -v backup:/data -v conf05:/etc/mysql --privileged --name=pxcnode05 --net=hxjf-docker --ip 172.188.0.85 pxc
#查看容器 docker ps -a 还是失败
(6)配置从节点

(7)重启从节点
docker start pxcnode02
docker start pxcnode03
docker start pxcnode04
docker start pxcnode05
(8)查看节点
启动正常 docker ps -aq
(1)修改配置文件
5个节点都需要操作 首先需要保证目前5个节点已经运行起来 然后修改节点的配置文件
在 [sst] 节点下增加配置
(2)生成CA密钥 服务证书 客户端证书
mkdir -p /etc/mysql/certs #创建目录 如果有不需要创建
cd /etc/mysql/certs #到此目录下生成相关文件
以下红色标识的命令需要输入Common Name 且输入名称不能相同 否咋证书不可使用
openssl genrsa 2048 > ca-key.pem
openssl req -new -x509 -nodes -days 3600 -key ca-key.pem -out ca.pem (输入common1)
openssl req -newkey rsa:2048 -days 3600 -nodes -keyout server-key.pem -out server-req.pem (输入common2)
openssl rsa -in server-key.pem -out server-key.pem
openssl x509 -req -in server-req.pem -days 3600 -CA ca.pem -CAkey ca-key.pem -set_serial 01 -out server-cert.pem
openssl req -newkey rsa:2048 -days 3600 -nodes -keyout client-key.pem -out client-req.pem(输入common3)
openssl rsa -in client-key.pem -out client-key.pem
openssl x509 -req -in client-req.pem -days 3600 -CA ca.pem -CAkey ca-key.pem -set_serial 01 -out client-cert.pem
openssl verify -CAfile ca.pem server-cert.pem client-cert.pem

[root@localhost certs]# openssl genrsa 2048 > ca-key.pem Generating RSA private key, 2048 bit long modulus ............+++ ..............................................................+++ e is 65537 (0x10001) [root@localhost certs]# openssl req -new -x509 -nodes -days 3600 -key ca-key.pem -out ca.pem You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [XX]: State or Province Name (full name) []: Locality Name (eg, city) [Default City]: Organization Name (eg, company) [Default Company Ltd]: Organizational Unit Name (eg, section) []: Common Name (eg, your name or your server's hostname) []:como^H^C [root@localhost certs]# openssl req -new -x509 -nodes -days 3600 -key ca-key.pem -out ca.pem You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [XX]: State or Province Name (full name) []: Locality Name (eg, city) [Default City]: Organization Name (eg, company) [Default Company Ltd]: Organizational Unit Name (eg, section) []: Common Name (eg, your name or your server's hostname) []:common1 Email Address []: [root@localhost certs]# openssl req -newkey rsa:2048 -days 3600 -nodes -keyout server-key.pem -out server-req.pem Generating a 2048 bit RSA private key .......................................................+++ ...............................................................................................+++ writing new private key to 'server-key.pem' ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [XX]: State or Province Name (full name) []: Locality Name (eg, city) [Default City]: Organization Name (eg, company) [Default Company Ltd]: Organizational Unit Name (eg, section) []: Common Name (eg, your name or your server's hostname) []:common2 Email Address []: Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []: [root@localhost certs]# openssl rsa -in server-key.pem -out server-key.pem writing RSA key [root@localhost certs]# openssl x509 -req -in server-req.pem -days 3600 -CA ca.pem -CAkey ca-key.pem -set_serial 01 -out server-cert.pem Signature ok subject=/C=XX/L=Default City/O=Default Company Ltd/CN=common2 Getting CA Private Key [root@localhost certs]# openssl req -newkey rsa:2048 -days 3600 -nodes -keyout client-key.pem -out client-req.pem Generating a 2048 bit RSA private key .............................................+++ ..........+++ writing new private key to 'client-key.pem' ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [XX]: State or Province Name (full name) []: Locality Name (eg, city) [Default City]: Organization Name (eg, company) [Default Company Ltd]: Organizational Unit Name (eg, section) []: Common Name (eg, your name or your server's hostname) []:common3 Email Address []: Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []: [root@localhost certs]# [root@localhost certs]# openssl rsa -in client-key.pem -out client-key.pem writing RSA key [root@localhost certs]# openssl x509 -req -in client-req.pem -days 3600 -CA ca.pem -CAkey ca-key.pem -set_serial 01 -out client-cert.pem Signature ok subject=/C=XX/L=Default City/O=Default Company Ltd/CN=common3 Getting CA Private Key [root@localhost certs]# [root@localhost certs]# openssl verify -CAfile ca.pem server-cert.pem client-cert.pem server-cert.pem: OK client-cert.pem: OK
(3)将证书拷贝到容器目录下
查看node.cnf权限
cd /var/lib/docker/volumes/conf01/_data/
ll -allh
修改certs文件夹权限 否则pxc将没有权限读取
cd /etc/mysql
chown -R 1001:1001 ./certs
ll -allh
查看证书是否成功拷贝到容器内

(4)重启容器
关闭5个节点


启动集群
进入pxcnode01
docker exec -it pxcnode01 /bin/bash
mysql -uroot -proot
创建数据库 hxkf
create database hxjf;
show databases;
向数据库hxjf新增一个表 并插入一条数据
use hxjg;
create table user_info (id int,name varchar(20) , age int );
ALTER TABLE `hxjf`.`user_info` CHANGE COLUMN `id` `id` INT NOT NULL ,ADD PRIMARY KEY (`id`);
insert into user_info (id,name,age) values(1,'',20);
进入pxcnode02 查看数据是否同步过来
docker exec -it pxcnode02 /bin/bash
mysql -uroot -p root
show databases;
#数据库已经同步过来了
mysql> use hxjf;
mysql> show tables;
mysql> select * from user_info;
#表和数据也已经同步过来了
3.安装Haproxy 实现高可用
3.1遇到的问题 (这只是问题 并是不安装过程 只是记录 安装从3.2开始)
如果在haproxy的配饰文件指定工作目录,docker就运行不起来
docker查看日志错误如下
网上说只要创建对应的目录即可,但是我查了很多资料都没有成功
于是我就只能注释配置文件 haproxy就可以运行了 暂时不知道为什么 如果有知道的感谢指出
3.2.1查询镜像
docker search haproxy
3.2.2拉取镜像
docker pull haproxy
3.2.3查询本地镜像
docker images
3.2.4修改配置文件
vim /home/nscoffee/docker/haproxy/haproxy.cfg

1 global 2 #工作目录 3 chroot /usr/local/etc/haproxy 4 #日志文件,使用rsyslog服务中local5日志设备(/var/log/local5),等级info 5 log 127.0.0.1 local5 info 6 #守护进程运行 7 daemon 8 defaults 9 log global 10 mode http 11 #日志格式 12 option httplog 13 #日志中不记录负载均衡的心跳检测记录 14 option dontlognull 15 #连接超时(毫秒) 16 timeout connect 5000 17 #客户端超时(毫秒) 18 timeout client 50000 19 #服务器超时(毫秒) 20 timeout server 50000 21 #监控界面 22 listen admin_stats 23 #监控界面的访问的IP和端口 24 bind 0.0.0.0:8888 25 #访问协议 26 mode http 27 #URI相对地址 28 stats uri /dbs 29 #统计报告格式 30 stats realm Global\ statistics 31 #登陆帐户信息 32 stats auth admin:admin 33 #数据库负载均衡 34 listen proxy-mysql 35 #访问的IP和端口 36 bind 0.0.0.0:3306 37 #网络协议 38 mode tcp 39 #负载均衡算法(轮询算法) 40 #轮询算法:roundrobin 41 #权重算法:static-rr 42 #最少连接算法:leastconn 43 #请求源IP算法:source 44 balance roundrobin 45 #日志格式 46 option tcplog 47 48 option mysql-check user root 49 server MySQL_1 172.188.0.81:3306 check weight 1 maxconn 2000 50 server MySQL_2 172.188.0.82:3306 check weight 1 maxconn 2000 51 server MySQL_3 172.188.0.83:3306 check weight 1 maxconn 2000 52 server MySQL_4 172.188.0.84:3306 check weight 1 maxconn 2000 53 server MySQL_5 172.188.0.85:3306 check weight 1 maxconn 2000 54 #使用keepalive检测死链 55 option tcpka
3.2.5运行容器
docker run -it -d -p 4001:8888 -p 4002:3306 -v /home/nscoffee/docker/haproxy:/usr/local/etc/haproxy --name hpx01 --privileged --net=hxjf-docker --ip 172.188.0.8 haproxy
docker ps -a
3.3.1查看hpx01日志 集群没有启动
docker logs hpx01
3.3.2启动集群(如果集群没有down掉 就不用重新集群)
修改配置文件为1
vim /var/lib/docker/volumes/pxc-vm01/_data/grastate.dat
docker start pxcnode01
docker start pxcnode02
docker start pxcnode03
docker start pxcnode04
docker start pxcnode05
docker ps -a
3.4.1登录mysql
docker exec -it pxcnode01 /bin/bash
mysql -u root -proot
3.4.2修改配置文件
vim /home/nscoffee/docker/haproxy/haproxy.cfg
3.4.3进入haproxy登录界面
http://192.168.188.180:4001/dbs
docker exec -it pxcnode01 /bin/bash
mysql -uroot -h192.168.188.180 -P4002 -proot
3.6.1 查看所有容器
docker ps -a
3.6.2关闭pxcnode4
docker stop pxcnode4
3.6.3 使用haproxy的登录mysql
docker exec -it pxcnode01 /bin/bash
mysql -uroot -h192.168.188.180 -P4002 -proot
use hxjf;
select * from user_info;
4.利用Keepalived实现双机热备
目前haproxy为单点服务,如果haproxy宕机,造成整个集群不可用,所以需要对haproxy节点进行集群部署
提高haproxy节点的高可用
核心原理
(1)keepalived: vrrp协议的软件实现,原生设计目的为了高可用ipvs服务
基于vrrp协议实现同一个ip地址在多台机器间的流转
为获得ip地址(vip)的机器生成ipvs规则(预先在配置文件中配置好)
为ipvs集群中的各节点做健康检查
为什么要采用双机热备
单节点Haproxy不具备高可用,必须要有冗余设计
双机就是两个请求处理程序,比如两个haproxy,当一个挂掉的时候,另外 一个可以顶上。热备我理解就是keepalive。在haproxy 容器中安装keepalive。
利用Keepalived实现双机热备
在Docker中启动两个Haproxy容器,每个容器中还需要安装Keepalived程序(以下简称KA)
两个KA会争抢虚拟IP,一个抢到后,另一个没抢到就会等待,抢到的作为主服务器,没抢到的作为备用服务器
两个KA之间会进行心跳检测,如果备用服务器没有受到主服务器的心跳响应,说明主服务器发生故障,那么备用服务器就可以争抢虚拟IP,继续工作
我们向虚拟IP发送数据库请求,一个Haproxy挂掉,可以有另一个接替工作
4.1.1使用root权限登录hpx01
docker exec -u 0 -it hpx01 /bin/bash
apt-get update
apt-get install keepalived
4.1.2在容器中安装vim
apt-get install vim
apt-get update
apt-get install vim
找到安装vim配置文件
vim /usr/share/vim/vim81/defaults.vim
找到并修改
set mouse-=a
4.1.3修改配置文件
vim /etc/keepalived/keepalived.conf

1 vrrp_instance VI_1 { 2 state MASTER # Keepalived的身份(MASTER主服务要抢占IP,BACKUP备服务器不会抢占IP)。 3 interface eth0 # docker网卡设备,虚拟IP所在 4 virtual_router_id 51 # 虚拟路由标识,MASTER和BACKUP的虚拟路由标识必须一致。从0~255 5 priority 100 # MASTER权重要高于BACKUP数字越大优先级越高 6 advert_int 1 # MASTER和BACKUP节点同步检查的时间间隔,单位为秒,主备之间必须一致 7 authentication { # 主从服务器验证方式。主备必须使用相同的密码才能正常通信 8 auth_type PASS 9 auth_pass 123456 10 } 11 virtual_ipaddress { # 虚拟IP。可以设置多个虚拟IP地址,每行一个 12 172.188.0.201 13 } 14 }
4.1.4启动Keepalived
service keepalived start
4.1.5宿主机ping虚拟ip 172.188.0.201
4.2.1创建并运行容器
docker run -it -d -p 4003:8888 -p 4004:3306 -v /home/nscoffee/docker/haproxy:/usr/local/etc/haproxy --name hpx02 --privileged --net=hxjf-docker --ip 172.188.0.9 haproxy
docker exec -u 0 -it hpx02 /bin/bash
4.2.2 配置文件(如果需要安装配置vim见4.1.2)

1 vrrp_instance VI_1 { 2 state MASTER # Keepalived的身份(MASTER主服务要抢占IP,BACKUP备服务器不会抢占IP)。 3 interface eth0 # docker网卡设备,虚拟IP所在 4 virtual_router_id 51 # 虚拟路由标识,MASTER和BACKUP的虚拟路由标识必须一致。从0~255 5 priority 100 # MASTER权重要高于BACKUP数字越大优先级越高 6 advert_int 1 # MASTER和BACKUP节点同步检查的时间间隔,单位为秒,主备之间必须一致 7 authentication { # 主从服务器验证方式。主备必须使用相同的密码才能正常通信 8 auth_type PASS 9 auth_pass 123456 10 } 11 virtual_ipaddress { # 虚拟IP。可以设置多个虚拟IP地址,每行一个 12 172.188.0.201 13 } 14 }
4.2.3启动
service keepalived start
4.3.1查看当前局域网IP分配情况
yum install nmap -y
nmap -sP 192.168.1.0/24
4.3.2安装keepalived
vim /etc/keepalived/keepalived.conf
(如果嫌配置不好找 可以把之前的删掉 我这里删掉了重新配置的 看个人rm /etc/keepalived/keepalived.conf)

1 vrrp_instance VI_1 { 2 state MASTER 3 #这里是宿主机的网卡,可以通过ip a查看当前自己电脑上用的网卡名是哪个 4 interface ens33 5 virtual_router_id 100 6 priority 100 7 advert_int 1 8 authentication { 9 auth_type PASS 10 auth_pass 1111 11 } 12 virtual_ipaddress { 13 #这里是指定的一个宿主机上的虚拟ip,一定要和宿主机网卡在同一个网段, 14 #我的宿主机网卡ip是192.168.188.180,所以指定虚拟ip是160 15 192.168.188.160 16 } 17 } 18 19 #接受监听数据来源的端口,网页入口使用 20 virtual_server 192.168.188.160 8888 { 21 delay_loop 3 22 lb_algo rr 23 lb_kind NAT 24 persistence_timeout 50 25 protocol TCP 26 #把接受到的数据转发给docker服务的网段及端口,由于是发给docker服务,所以和docker服务数据要一致 27 real_server 172.188.0.201 8888 { 28 weight 1 29 } 30 } 31 32 #接受数据库数据端口,宿主机数据库端口是3306,所以这里也要和宿主机数据接受端口一致 33 virtual_server 192.168.188.160 3306 { 34 delay_loop 3 35 lb_algo rr 36 lb_kind NAT 37 persistence_timeout 50 38 protocol TCP 39 #同理转发数据库给服务的端口和ip要求和docker服务中的数据一致 40 real_server 172.188.0.201 3306 { 41 weight 1 42 } 43 }
4.3.3启动Keepalived
service keepalived start
#service keepalived status
#service keepalived stop
4.3.4暂停PXC集群的方法
vi /etc/sysctl.conf
#文件中添加net.ipv4.ip_forword=1这个配置
systemctl restart network
查看用户名密码 登录监控界面
vim /home/nscoffee/docker/haproxy/haproxy.cfg
192.168.188.160:8888/dbs
并且建库都可同步
通过haproxy可以建立连接
直接连数据库的端口号
5.数据备份
冷备份是关闭数据库时候的备份方式,通常做法是拷贝数据文件
是简单安全的一种备份方式,不能在数据库运行时备份。
大型网站无法做到关闭业务备份数据,所以冷备份不是最佳选择
热备份是在系统运行状态下备份数据
MySQL常见的热备份有LVM和XtraBackup两种方案
5.2.1LVM:linux的分区备份命令,可以备份任何数据库;但是会对数据库加锁,只能读取;而且命令复杂
5.2.2XtraBackup不需要锁表,而且免费
XtraBackup是一款基于InnoDB的在线热备工具,具有开源免费,支持在线热备,占用磁盘空间小,能够非常快速地备份与恢复mysql数据库
备份过程中不锁表,快速可靠
备份过程中不会打断正在执行地事务
备份数据经过压缩,占用磁盘空间小
全量备份:备份全部数据。备份过程时间长,占用空间大。第一次备份要使用全量备份
增量备份: 只备份变化的那部分数据。备份的时间短,占用空间小。第二次以后使用增量备份
docker exec -u 0 -it pxcnode01 /bin/bash
yum install -y https://repo.percona.com/yum/percona-release-latest.noarch.rpm
percona-release enable-only tools release
percona-release enable-only tools
(主要看pxc的mysql版本 我这里mysql版本是8.0 所以安装8.0版本的percona-xtrabackup)
yum install -y percona-xtrabackup-80/yum install -y percona-xtrabackup-24
mkdir -p /data/backup/full
xtrabackup --backup -uroot -proot --target-dir=/data/backup/full
特别感谢
https://www.cnblogs.com/wanglei957/p/11819547.html
https://note.youdao.com/ynoteshare1/index.html?id=20f25c8660ff66ba598217c21093dfe2&type=note
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析