成人性生交大片免费看视频r_亚洲综合极品香蕉久久网_在线视频免费观看一区_亚洲精品亚洲人成人网在线播放_国产精品毛片av_久久久久国产精品www_亚洲国产一区二区三区在线播_日韩一区二区三区四区区区_亚洲精品国产无套在线观_国产免费www

主頁 > 知識庫 > Docker部署Mysql集群的實現

Docker部署Mysql集群的實現

熱門標簽:比較穩(wěn)定的外呼系統 江蘇自動外呼系統一般多少錢 ai電話機器人營銷 鸚鵡螺號航海地圖標注時間 信貸電銷機器人系統 云南云電銷機器人招商 長沙回撥外呼系統 山東電信外呼系統靠譜嗎 400 電話 申請費用

單節(jié)點數據庫的弊病

  • 大型互聯網程序用戶群體龐大,所以架構必須要特殊設計
  • 單節(jié)點的數據庫無法滿足性能上的要求
  • 單節(jié)點的數據庫沒有冗余設計,無法滿足高可用

單節(jié)點MySQL的性能瓶領頸

2016年春節(jié)微信紅包巨大業(yè)務量,數據庫承受巨大負載

常見MySQL集群方案

  mysql 集群方案介紹,建議使用pxc,因為弱一致性會有問題,比如說a節(jié)點數據庫顯示我購買成功,b 節(jié)點數據庫顯示沒有成功,這就麻煩了,pxc 方案是在全部節(jié)點都寫入成功之后才會告訴你成功,是可讀可寫雙向同步的,但是replication是單向的,不同節(jié)點的數據庫之間都會開放端口進行通訊,如果從防火墻的這個端口關閉,pxc就不會同步成功,也不會返給你成功了。

Replication

  • 速度快,但僅能保證弱一致性,適用于保存價值不高的數據,比如日志、帖子、新聞等。
  • 采用master-slave結構,在master寫入會同步到slave,能從slave讀出;但在slave寫入無法同步到master。
  • 采用異步復制,master寫入成功就向客戶端返回成功,但是同步slave可能失敗,會造成無法從slave讀出的結果。

PXC (Percona XtraDB Cluster)

  • 速度慢,但能保證強一致性,適用于保存價值較高的數據,比如訂單、客戶、支付等。
  • 數據同步是雙向的,在任一節(jié)點寫入數據,都會同步到其他所有節(jié)點,在任何節(jié)點上都能同時讀寫。
  • 采用同步復制,向任一節(jié)點寫入數據,只有所有節(jié)點都同步成功后,才會向客戶端返回成功。事務在所有節(jié)點要么同時提交,要么不提交。

建議PXC使用PerconaServer (MySQL改進版,性能提升很大)

PXC的數據強一致性

同步復制,事務在所有集群節(jié)點要么同時提交,要么不提交 Replication采用異步復制,無法保證數據的一致性

PXC集群安裝介紹

在Docker中安裝PXC集群,使用Docker倉庫中的PXC官方鏡像:https://hub.docker.com/r/percona/percona-xtradb-cluster

1、從docker官方倉庫中拉下PXC鏡像:

docker pull percona/percona-xtradb-cluster

或者本地安裝

docker load < /home/soft/pxc.tar.gz

安裝完成:

[root@localhost ~]# docker pull percona/percona-xtradb-cluster
Using default tag: latest
Trying to pull repository docker.io/percona/percona-xtradb-cluster ... 
latest: Pulling from docker.io/percona/percona-xtradb-cluster
ff144d3c0ab1: Pull complete 
eafdff1524b5: Pull complete 
c281665399a2: Pull complete 
c27d896755b2: Pull complete 
c43c51f1cccf: Pull complete 
6eb96f41c54d: Pull complete 
4966940ec632: Pull complete 
2bafadcea292: Pull complete 
3c2c0e21b695: Pull complete 
52a8c2e9228e: Pull complete 
f3f28eb1ce04: Pull complete 
d301ece75f56: Pull complete 
3d24904bec3c: Pull complete 
1053c2982c37: Pull complete 
Digest: sha256:17c64dacbb9b62bd0904b4ff80dd5973b2d2d931ede2474170cbd642601383bd
Status: Downloaded newer image for docker.io/percona/percona-xtradb-cluster:latest
[root@localhost ~]# docker images
REPOSITORY                 TAG         IMAGE ID      CREATED       SIZE
docker.io/percona/percona-xtradb-cluster  latest       70b3670450ef    2 months ago    408 MB

2、重命名鏡像:(名稱太長,重命名一下)

docker tag percona/percona-xtradb-cluster:latest pxc

然后原來的鏡像就可以刪除掉了

[root@localhost ~]# docker images
REPOSITORY                 TAG         IMAGE ID      CREATED       SIZE
docker.io/percona/percona-xtradb-cluster  latest       70b3670450ef    2 months ago    408 MB
pxc                    latest       70b3670450ef    2 months ago    408 MB
docker.io/java               latest       d23bdf5b1b1b    2 years ago     643 MB
[root@localhost ~]# docker rmi docker.io/percona/percona-xtradb-cluster
Untagged: docker.io/percona/percona-xtradb-cluster:latest
Untagged: docker.io/percona/percona-xtradb-cluster@sha256:17c64dacbb9b62bd0904b4ff80dd5973b2d2d931ede2474170cbd642601383bd
[root@localhost ~]# docker images
REPOSITORY     TAG         IMAGE ID      CREATED       SIZE
pxc         latest       70b3670450ef    2 months ago    408 MB
docker.io/java   latest       d23bdf5b1b1b    2 years ago     643 MB

3、出于安全考慮,給PXC集群創(chuàng)建Docker內部網絡

# 創(chuàng)建網段
docker network create --subnet=172.18.0.0/24 net1
# 查看網段
docker network inspect net1
# 刪除網段
# docker network rm net1

4、創(chuàng)建Docker卷:
使用Docker時,業(yè)務數據應保存在宿主機中,采用目錄映射,這樣可以使數據與容器獨立。但是容器中的PXC無法直接使用映射目錄,解決辦法是采用Docker卷來映射

# 創(chuàng)建名稱為v1的數據卷,--name可以省略
docker volume create --name v1

查看數據卷

docker inspect v1

結果:

[root@localhost ~]# docker inspect v1
[
  {
    "Driver": "local",
    "Labels": {},
    "Mountpoint": "/var/lib/docker/volumes/v1/_data",#這里是在宿主機的保存位置
    "Name": "v1",
    "Options": {},
    "Scope": "local"
  }
]

刪除數據卷

docker volume rm v1

創(chuàng)建5個數據卷

# 創(chuàng)建5個數據卷
docker volume create --name v1
docker volume create --name v2
docker volume create --name v3
docker volume create --name v4
docker volume create --name v5

5、創(chuàng)建5個PXC容器:

# 創(chuàng)建5個PXC容器構成集群
# 第一個節(jié)點
docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=abc123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=abc123456 -v v1:/var/lib/mysql --name=node1 --network=net1 --ip 172.18.0.2 pxc
# 在第一個節(jié)點啟動后要等待一段時間,等候mysql啟動完成。

# 第二個節(jié)點
docker run -d -p 3307:3306 -e MYSQL_ROOT_PASSWORD=abc123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=abc123456 -e CLUSTER_JOIN=node1 -v v2:/var/lib/mysql --name=node2 --net=net1 --ip 172.18.0.3 pxc
# 第三個節(jié)點
docker run -d -p 3308:3306 -e MYSQL_ROOT_PASSWORD=abc123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=abc123456 -e CLUSTER_JOIN=node1 -v v3:/var/lib/mysql --name=node3 --net=net1 --ip 172.18.0.4 pxc
# 第四個節(jié)點
docker run -d -p 3309:3306 -e MYSQL_ROOT_PASSWORD=abc123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=abc123456 -e CLUSTER_JOIN=node1 -v v4:/var/lib/mysql --name=node4 --net=net1 --ip 172.18.0.5 pxc
# 第五個節(jié)點
docker run -d -p 3310:3306 -e MYSQL_ROOT_PASSWORD=abc123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=abc123456 -e CLUSTER_JOIN=node1 -v v5:/var/lib/mysql --name=node5 --net=net1 --ip 172.18.0.6 pxc

查看:

[root@localhost ~]# docker ps
CONTAINER ID    IMAGE        COMMAND       CREATED       STATUS       PORTS                  NAMES
f4708ce32209    pxc         "/entrypoint.sh "  About a minute ago  Up About a minute  4567-4568/tcp, 0.0.0.0:3309->3306/tcp  node4
bf612f9586bc    pxc         "/entrypoint.sh "  17 minutes ago    Up 17 minutes    4567-4568/tcp, 0.0.0.0:3310->3306/tcp  node5
9fdde5e6becd    pxc         "/entrypoint.sh "  17 minutes ago    Up 17 minutes    4567-4568/tcp, 0.0.0.0:3308->3306/tcp  node3
edd5794175b6    pxc         "/entrypoint.sh "  18 minutes ago    Up 18 minutes    4567-4568/tcp, 0.0.0.0:3307->3306/tcp  node2
33d842de7f42    pxc         "/entrypoint.sh "  21 minutes ago    Up 21 minutes    0.0.0.0:3306->3306/tcp, 4567-4568/tcp  node1

數據庫負載均衡的必要性

雖然搭建了集群,但是不使用數據庫負載均衡,單節(jié)點處理所有請求,負載高,性能差

將請求均勻地發(fā)送給集群中的每一個節(jié)點。

  • 所有請求發(fā)送給單一節(jié)點,其負載過高,性能很低,而其他節(jié)點卻很空閑。
  • 使用Haproxy做負載均衡,可以將請求均勻地發(fā)送給每個節(jié)點,單節(jié)點負載低,性能好

負載均衡中間件對比

  負載均衡首先是數據庫的集群,加入5個集群,每次請求都是第一個的話,有可能第一個數據庫就掛掉了,所以更優(yōu)的方案是對不同的節(jié)點都進行請求,這就需要有中間件進行轉發(fā),比較好的中間件有nginx,haproxy等,因nginx 支持插件,但是剛剛支持了tcp/ip 協議,haproxy 是一個老牌的中間轉發(fā)件。如果要用haproxy的話,可以從官方下載鏡像,然后呢對鏡像進行配置(自己寫好配置文件,因為這個鏡像是沒有配置文件的,配置好之后再運行鏡像的時候進行文件夾的映射,配置文件開放3306(數據庫請求,然后根據check心跳檢測訪問不同的數據庫,8888 對數據庫集群進行監(jiān)控))。配置文件里面設置用戶(用戶在數據庫進行心跳檢測,判斷哪個數據庫節(jié)點是空閑的,然后對空閑的進行訪問),還有各種算法(比如輪訓),最大連接數,時間等,還有對集群的監(jiān)控。配置文件寫好以后運行這個鏡像,鏡像運行成功后進入容器啟動配置文件 。其實haprocy返回的也是一個數據庫實例(但是并不存儲任何的數據,只是轉發(fā)請求),這個實例用來check其他節(jié)點。

安裝Haproxy

1、從Docker倉庫拉取haproxy鏡像:https://hub.docker.com/_/haproxy

docker pull haproxy
[root@localhost ~]# docker images
REPOSITORY     TAG         IMAGE ID      CREATED       SIZE
docker.io/haproxy  latest       11fa4d7ff427    11 days ago     72.2 MB

2、創(chuàng)建Haproxy配置文件。供Haproxy容器使用(docker中未生成配置文件,我們需要在宿主機中自己創(chuàng)建配置文件)
配置文件詳情參考:https://www.cnblogs.com/wyt007/p/10829184.html

# 啟動容器時使用目錄映射技術使容器讀取該配置文件
touch /home/soft/haproxy/haproxy.cfg

haproxy.cfg

# haproxy.cfg
global
  #工作目錄
  chroot /usr/local/etc/haproxy
  #日志文件,使用rsyslog服務中l(wèi)ocal5日志設備(/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

#監(jiān)控界面  
listen admin_stats
  #監(jiān)控界面的訪問的IP和端口
  bind 0.0.0.0:8888
  #訪問協議
  mode    http
  #URI相對地址
  stats uri  /dbs
  #統計報告格式
  stats realm   Global\ statistics
  #登陸帳戶信息
  stats auth admin:abc123456
#數據庫負載均衡
listen proxy-mysql
  #訪問的IP和端口
  bind 0.0.0.0:3306 
  #網絡協議
  mode tcp
  #負載均衡算法(輪詢算法)
  #輪詢算法:roundrobin
  #權重算法:static-rr
  #最少連接算法:leastconn
  #請求源IP算法:source 
  balance roundrobin
  #日志格式
  option tcplog
  #在MySQL中創(chuàng)建一個沒有權限的haproxy用戶,密碼為空。Haproxy使用這個賬戶對MySQL數據庫心跳檢測
  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

3、在數據庫集群中創(chuàng)建空密碼、無權限用戶haproxy,來供Haproxy對MySQL數據庫進行心跳檢測

create user 'haproxy'@'%' identified by '';

4、創(chuàng)建Haproxy容器(name=h1的原因是為了高可用)

# 這里要加 --privileged
docker run -it -d -p 4001:8888 -p 4002:3306 -v /home/soft/haproxy:/usr/local/etc/haproxy --name h1 --net=net1 --ip 172.18.0.7 --privileged haproxy

5、進入容器

docker exec -it h1 bash

6、在容器bash中啟動Haproxy

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

接下來便可以在瀏覽器中打開Haproxy監(jiān)控界面,端口4001,在配置文件中定義有用戶名admin,密碼abc123456。
我這邊訪問的是http://192.168.63.144:4001/dbs,并且要使用用戶名密碼進行登錄(小插曲,使用的是Basic登錄,我的Chrome不知為何被屏蔽了,我最后用的火狐)

這時候我們手動掛掉一個Docker節(jié)點,看一下變化(我們會發(fā)現已經顯示掛掉了)

8、Haproxy不存儲數據,只轉發(fā)數據??梢栽跀祿熘薪aproxy的連接,端口4002,用戶名和密碼為數據庫集群的用戶名和密碼

為什么要采用雙機熱備

  單節(jié)點Haproxy不具備高可用,必須要有冗余設計

  雙機就是兩個請求處理程序,比如兩個haproxy,當一個掛掉的時候,另外 一個可以頂上。熱備我理解就是keepalive。在haproxy 容器中安裝keepalive。

虛擬IP地址

  linux系統可以在一個網卡中定義多個IP地址,把這些地址分配給多個應用程序,這些地址就是虛擬IP,Haproxy的雙機熱備方案最關鍵的技術就是虛擬IP。

  關鍵就是虛擬ip,定義一個虛擬ip,然后比如兩個haproxy分別安裝keepalive鏡像,因為haproxy是ubuntu系統的,所以安裝用apt-get,keepalive是作用是搶占虛擬ip,搶到的就是主服務器,沒有搶到的就是備用服務器,然后兩個keepalive進行心跳檢測(就是創(chuàng)建一個用戶到對方那里試探,看是否還活著,mysql的集群之間也是心跳檢測),如果 掛掉搶占ip。所以在啟動keepalive 之前首先要編輯好他的配置文件,怎么搶占,權重是什么,虛擬ip是什么,創(chuàng)建的用戶交什么。配置完啟動完以后可以ping一下看是否正確,然后將虛擬ip映射到局域網的ip

利用Keepalived實現雙機熱備

  • 定義虛擬IP
  • 在Docker中啟動兩個Haproxy容器,每個容器中還需要安裝Keepalived程序(以下簡稱KA)
  • 兩個KA會爭搶虛擬IP,一個搶到后,另一個沒搶到就會等待,搶到的作為主服務器,沒搶到的作為備用服務器
  • 兩個KA之間會進行心跳檢測,如果備用服務器沒有受到主服務器的心跳響應,說明主服務器發(fā)生故障,那么備用服務器就可以爭搶虛擬IP,繼續(xù)工作
  • 我們向虛擬IP發(fā)送數據庫請求,一個Haproxy掛掉,可以有另一個接替工作

Нaproxy雙機熱備方案

Docker中創(chuàng)建兩個Haproxy,并通過Keepalived搶占Docker內地虛擬IP

Docker內的虛擬IP不能被外網,所以需要借助宿主機Keepalived映射成外網可以訪問地虛擬IP

安裝Keepalived

1、進入Haproxy容器,安裝Keepalived:

$ docker exec -it h1 bash
apt-get update
apt-get install keepalived

2、Keepalived配置文件(Keepalived.conf):
Keepalived的配置文件是/etc/keepalived/keepalived.conf

# vim /etc/keepalived/keepalived.conf
vrrp_instance VI_1 {
  state MASTER # Keepalived的身份(MASTER主服務要搶占IP,BACKUP備服務器不會搶占IP)。
  interface eth0  # docker網卡設備,虛擬IP所在
  virtual_router_id 51 # 虛擬路由標識,MASTER和BACKUP的虛擬路由標識必須一致。從0~255
  priority 100 # MASTER權重要高于BACKUP數字越大優(yōu)先級越高
  advert_int 1 # MASTER和BACKUP節(jié)點同步檢查的時間間隔,單位為秒,主備之間必須一致
  authentication { # 主從服務器驗證方式。主備必須使用相同的密碼才能正常通信
    auth_type PASS
    auth_pass 123456
  }
  virtual_ipaddress { # 虛擬IP??梢栽O置多個虛擬IP地址,每行一個
    172.18.0.201
  }
}

3、啟動Keepalived

service keepalived start

啟動成功后,通過ip a可以查看網卡中虛擬IP是否成功,另外可以在宿主機中ping成功虛擬IP172.18.0.201

4、可以按照以上步驟,再另外創(chuàng)建一個Haproxy容器,注意映射的宿主機端口不能重復,Haproxy配置一樣。然后在容器中安裝Keepalived,配置也基本一樣(可以修改優(yōu)先權重)。這樣便基本實現了Haproxy雙機熱備方案
命令如下:

創(chuàng)建Haproxy容器(name=h2的原因是為了高可用)

# 這里要加 --privileged
docker run -it -d -p 4003:8888 -p 4004:3306 -v /home/soft/haproxy:/usr/local/etc/haproxy --name h2 --net=net1 --ip 172.18.0.8 --privileged haproxy

進入容器

docker exec -it h2 bash

在容器bash中啟動Haproxy

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

接下來便可以在瀏覽器中打開Haproxy監(jiān)控界面,端口4003,在配置文件中定義有用戶名admin,密碼abc123456。
我這邊訪問的是http://192.168.63.144:4003/dbs,并且要使用用戶名密碼進行登錄(小插曲,使用的是Basic登錄,我的Chrome不知為何被屏蔽了,我最后用的火狐)

安裝Keepalived:

apt-get update
apt-get install keepalived

Keepalived配置文件(Keepalived.conf):
Keepalived的配置文件是/etc/keepalived/keepalived.conf

# vim /etc/keepalived/keepalived.conf
vrrp_instance VI_1 {
  state MASTER # Keepalived的身份(MASTER主服務要搶占IP,BACKUP備服務器不會搶占IP)。
  interface eth0  # docker網卡設備,虛擬IP所在
  virtual_router_id 51 # 虛擬路由標識,MASTER和BACKUP的虛擬路由標識必須一致。從0~255
  priority 100 # MASTER權重要高于BACKUP數字越大優(yōu)先級越高
  advert_int 1 # MASTER和BACKUP節(jié)點同步檢查的時間間隔,單位為秒,主備之間必須一致
  authentication { # 主從服務器驗證方式。主備必須使用相同的密碼才能正常通信
    auth_type PASS
    auth_pass 123456
  }
  virtual_ipaddress { # 虛擬IP??梢栽O置多個虛擬IP地址,每行一個
    172.18.0.201
  }
}

啟動Keepalived

service keepalived start

啟動成功后,通過ip a可以查看網卡中虛擬IP是否成功,另外可以在宿主機中ping成功虛擬IP172.18.0.201

實現外網訪問虛擬IP

查看當前局域網IP分配情況:

yum install nmap -y
nmap -sP 192.168.1.0/24

在宿主機中安裝Keepalived

yum install keepalived

宿主機Keepalived配置如下(/etc/keepalived/keepalived.conf):

vrrp_instance VI_1 {
  state MASTER
#這里是宿主機的網卡,可以通過ip a查看當前自己電腦上用的網卡名是哪個
  interface ens33
  virtual_router_id 100
  priority 100
  advert_int 1
  authentication {
    auth_type PASS
    auth_pass 1111
  }
  virtual_ipaddress {
#這里是指定的一個宿主機上的虛擬ip,一定要和宿主機網卡在同一個網段,
#我的宿主機網卡ip是192.168.63.144,所以指定虛擬ip是160
      192.168.63.160
  }
}
 
#接受監(jiān)聽數據來源的端口,網頁入口使用
virtual_server 192.168.63.160 8888 {
  delay_loop 3
  lb_algo rr 
  lb_kind NAT
  persistence_timeout 50
  protocol TCP
#把接受到的數據轉發(fā)給docker服務的網段及端口,由于是發(fā)給docker服務,所以和docker服務數據要一致
  real_server 172.18.0.201 8888 {
    weight 1
  }
}
 
#接受數據庫數據端口,宿主機數據庫端口是3306,所以這里也要和宿主機數據接受端口一致
virtual_server 192.168.63.160 3306 {
  delay_loop 3
  lb_algo rr 
  lb_kind NAT
  persistence_timeout 50
  protocol TCP
#同理轉發(fā)數據庫給服務的端口和ip要求和docker服務中的數據一致
  real_server 172.18.0.201 3306 {
    weight 1
  }
}

啟動Keepalived服務

service keepalived start
#service keepalived status
#service keepalived stop

之后其他電腦便可以通過虛擬IP192.168.63.160的8888和3306端口來訪問宿主機Docker中的172.18.0.201的相應端口。

暫停PXC集群的辦法

vi /etc/sysctl.conf
#文件中添加net.ipv4.ip_forward=1這個配置
systemctl restart network

然后把虛擬機掛起

熱備份數據

冷備份

  • 冷備份是關閉數據庫時候的備份方式,通常做法是拷貝數據文件
  • 是簡單安全的一種備份方式,不能在數據庫運行時備份。
  • 大型網站無法做到關閉業(yè)務備份數據,所以冷備份不是最佳選擇

熱備份

熱備份是在系統運行狀態(tài)下備份數據

MySQL常見的熱備份有LVM和XtraBackup兩種方案

  • LVM:linux的分區(qū)備份命令,可以備份任何數據庫;但是會對數據庫加鎖,只能讀??;而且命令復雜
  • XtraBackup:不需要鎖表,而且免費

XtraBackup

XtraBackup是一款基于InnoDB的在線熱備工具,具有開源免費,支持在線熱備,占用磁盤空間小,能夠非??焖俚貍浞菖c恢復mysql數據庫

  • 備份過程中不鎖表,快速可靠
  • 備份過程中不會打斷正在執(zhí)行地事務
  • 備份數據經過壓縮,占用磁盤空間小

全量備份和增量備份

  • 全量備份:備份全部數據。備份過程時間長,占用空間大。第一次備份要使用全量備份
  • 增量備份: 只備份變化的那部分數據。備份的時間短,占用空間小。第二次以后使用增量備份

PXC全量備份

備份要在某個PXC節(jié)點的容器內進行,但應該把備份數據保存到宿主機內。所以采用目錄映射技術。先新建Docker卷:

docker volume create backup

挑選一個PXC節(jié)點node1,將其容器停止并刪除,然后重新創(chuàng)建一個增加了backup目錄映射的node1容器

docker stop node1
docker rm node1  # 數據庫數據保存在Docker卷v1中,不會丟失
# 參數改變:
# 1. -e CLUSTER_JOIN=node2;原來其他節(jié)點是通過node1加入集群的,現在node1重新創(chuàng)建,需要選擇一個其他節(jié)點加入集群
# 2. -v backup:/data;將Docker卷backup映射到容器的/data目錄
docker run -d -u root -p 3306:3306 -e MYSQL_ROOT_PASSWORD=abc123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=abc123456 -e CLUSTER_JOIN=node2 -v v1:/var/lib/mysql -v backup:/data --network=net1 --ip 172.18.0.2 --name=node1 pxc

在node1容器中安裝percona-xtrabackup-24

docker exec -it node1 bash
apt-get update
apt-get install percona-xtrabackup-24

之后便可以執(zhí)行如下命令進行全量備份,備份后的數據會保存在/data/backup/full目錄下:

mkdir /data/backup
mkdir /data/backup/full
#不建議,已過時 innobackupex --backup -u root -p abc123456 --target-dir=/data/backup/full
xtrabackup --backup -uroot -pabc123456 --target-dir=/data/backup/full

官方文檔已經不推薦使用innobackupex,而推薦使用xtrabackup命令

PXC全量還原

數據庫可以熱備份,但是不能熱還原,否則會造成業(yè)務數據和還原數據的沖突。

對于PXC集群為了避免還原過程中各節(jié)點數據同步沖突的問題,我們要先解散原來的集群,刪除節(jié)點。然后新建節(jié)點空白數據庫,執(zhí)行還原,最后再建立起其他集群節(jié)點。

還原前還要將熱備份保存的未提交的事務回滾,還原之后重啟MySQL

停止并刪除PXC集群所有節(jié)點

docker stop node1 node2 node3 node4 node5
docker rm node1 node2 node3 node4 node5
docker volume rm v1 v2 v3 v4 v5

按照之前的步驟重新創(chuàng)建node1容器,并進入容器,執(zhí)行冷還原

# 創(chuàng)建卷
docker volume create v1
# 創(chuàng)建容器
docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=abc123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=abc123456 -v v1:/var/lib/mysql -v backup:/data --name=node1 --network=net1 --ip 172.18.0.2 pxc
# 以root身份進入容器
docker exec -it -uroot node1 bash
# 刪除數據
rm -rf /var/lib/mysql/*
# 準備階段
xtrabackup --prepare --target-dir=/data/backup/full/
# 執(zhí)行冷還原
xtrabackup --copy-back --target-dir=/data/backup/full/
# 更改還原后的數據庫文件屬主
chown -R mysql:mysql /var/lib/mysql
# 退出容器后,重啟容器
docker stop node1
docker start node1

到此這篇關于Docker部署Mysql集群的實現的文章就介紹到這了,更多相關Docker部署Mysql集群內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

標簽:烏海 嘉興 齊齊哈爾 亳州 衡陽 運城 澳門 拉薩

巨人網絡通訊聲明:本文標題《Docker部署Mysql集群的實現》,本文關鍵詞  Docker,部署,Mysql,集群,的,;如發(fā)現本文內容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Docker部署Mysql集群的實現》相關的同類信息!
  • 本頁收集關于Docker部署Mysql集群的實現的相關信息資訊供網民參考!
  • 推薦文章
    熟妇人妻一区二区三区四区| 久久久久久三级| 久久99国产综合精品免费| 少妇高潮惨叫久久久久| 三级欧美在线一区| 久久久久久69| 岳张嘴把我的精子吞下去| 精品国产一区二区三区久久狼黑人| 中文字幕日韩三级片| 精品欧美一区二区在线观看| 色哟哟日韩精品| 97品白浆高清久久久久久| 日韩一区二区麻豆国产| 最近2019中文字幕一页二页| 国产精品99在线观看| 日韩高清电影免费| 一区二区成人在线视频| 亚洲国产欧美在线| 久草视频福利在线| 91成人国产在线观看| 这里只有视频精品| 国产激情在线观看视频| 中文在线一区二区| 快射视频在线观看| 全球av集中精品导航福利| 九色porny丨精品自拍视频| 国产农村av| 成人在线短视频| 爱啪啪综合导航| 爱情岛论坛亚洲品质自拍视频网站| 24小时免费看片在线观看| 日韩美女爱爱视频| 亚洲性生活视频在线观看| 欧美色综合网站| av资源中文在线| 国产精品69xx| 秋霞久久久久久一区二区| 九色国产视频| 国产精选一区| 国产精品国产三级国产普通话99| 国产精品自产拍| 亚洲护士老师的毛茸茸最新章节| 天堂v在线观看| 亚洲人成网站在线播放2019| av日韩一区二区三区| 中文字幕在线永久在线视频2020| 在线性视频日韩欧美| 日韩欧美视频免费观看| 国产精品一级在线观看| 综合精品久久| 久久精品99久久久香蕉| 9i看片成人免费看片| 99久久免费精品国产72精品九九| 97视频在线观看免费高清完整版在线观看| 久久精品这里有| 天天爱天天操天天干| 激情欧美日韩| 亚洲人成电影网站色xx| 无码人妻丰满熟妇精品| 国产99亚洲| 亚洲AV无码成人片在线观看| 亚洲精品一区二区口爆| 国产无套内射又大又猛又粗又爽| 日本va欧美va国产激情| 亚洲精品一区二区三区福利| 欧美一区二区三区四区视频| aiai久久| 日韩性xxxx爱| 国产午夜精品在线观看| 美女视频黄a大片欧美| 亚洲天堂开心观看| 美女在线一区二区| bt欧美亚洲午夜电影天堂| 粉嫩av一区二区三区免费观看| 在线观看中文字幕的网站| 免费一区二区三区| 日韩精品一区二区亚洲av观看| 亚洲av成人片色在线观看高潮| 欧美一区二区黄片| 久久精品一二三| 国产毛片在线| 黄色录像特级片| 欧美一级中文字幕| 欧美亚一区二区三区| 国产视频精品xxxx| 一区二区三区四区免费| 精品亚洲二区| 欧美专区在线| 国产精品午夜av在线| 国产精品扒开腿做| 夜夜嗨av一区二区三区中文字幕| 91午夜在线| 国产97在线|亚洲| 国产精品白丝久久av网站| 国产麻豆高清视频在线第一页| 免费观看v片在线观看| 亚洲一区二区在线免费观看视频| 国产一级视频在线| blackedav金发美女大战黑人| gratisvideos另类灌满| 中文av字幕一区| 久久久久久国产精品免费播放| 久久精品视频在线免费观看| 亚洲精品日韩专区silk| 国产欧美日韩影院| 亚洲图片在线综合| 亚洲欧美日韩人成在线播放| 欧美一区二区三区在| 欧美xxxx做受欧美护士| 国产精品乱码一区二三区小蝌蚪| 欧美激情视频网| 一区二区中文字幕在线观看| 欧美成人综合网站| 久久全国免费视频| 亚洲天堂免费看| ww久久中文字幕| 日日日日人人人夜夜夜2017| 一区二区三区在线观看免费视频| 手机在线观看你懂的| 国产成人久久精品一区二区三区| 啊灬啊灬啊灬啊灬高潮在线看| 日韩免费影院| 日韩精品国产一区| 国产在线一二区| 美女高潮网站| 亚洲成人第一页| 亚洲大胆人体在线| 国产精品永久免费观看| 亚洲网友自拍偷拍| 黄色在线网站噜噜噜| 国产一区二区三区免费不卡| 黄在线免费观看| 久久黄色级2电影| 日本成人伦理电影| 国模精品一区| 日本女人性视频| 亚洲一区二区日本| 欧美电影在线观看一区| 成人激情动漫在线观看| 成人午夜电影在线观看| 久草在线看片| 久久久久人妻精品一区三寸| 国产偷窥老熟盗摄视频| 路边理发店露脸熟妇泻火| 亚洲精品视频大全| 国产精品久久久久久久av电影| 欧美极品少妇全裸体| 亚洲精品中文字幕在线观看| 日韩一级免费毛片| 国产一区二区三区香蕉| 国产亚洲精品久久久久久牛牛| 国产乱子伦农村叉叉叉| 国产成人av免费观看| 成人黄色大片网站| 日日摸夜夜添夜夜添国产精品| 99视频免费在线观看| 久久久久久久久久国产| 免费理论片在线观看播放老| 久久午夜免费视频| 国产一区 二区 三区一级| 色偷偷噜噜噜亚洲男人| 国产97色在线| 亚洲熟女乱色一区二区三区| 69ww免费视频播放器| 亚洲一区二区三区免费看| 国产日韩欧美日韩大片| 成人ww免费完整版在线观看| 在线手机中文字幕| 日本三级电影在线看| 色综合久久中文综合久久97| 欧美第一黄色网| 日本乱理伦在线| 超碰免费在线播放| www.jizz在线观看| 成人aaaa免费全部观看| 国产精品一区二区黑丝| 久久精品视频国产| 日韩欧美123| 国产日产欧产精品推荐色| 日本性爱视频在线观看| 一区二区三区四区在线| 久久99国产综合精品女同| 欧美一区二区三区四区在线观看地址| 欧美黄网站在线观看| 蜜臀av国产精品久久久久| 黄色精品一区| 日韩国产伦理| 国产精品爱久久久久久久小说| 国产成人在线中文字幕| 免费高清视频在线一区| 尤物视频在线视频| 天堂精品久久久久| 99热这里只有精品首页| 岛国av在线网站| 国产麻豆一区二区三区在线观看| 亚洲欧美另类在线观看| 国产精品情侣呻吟对白视频| 国产真实伦在线观看| 在线观看亚洲网站| 一区二区三区视频免费看| 色天使久久综合网天天| 国产精品va在线观看视色| www.超碰97.com| 国产精品露脸自拍| xxxx黄色片| 亚洲色婷婷久久精品av蜜桃| 麻豆专区一区二区三区四区五区| 国产欧美综合在线观看第十页| 欧美性猛交xxxxx水多| 国产精品麻豆入口| avtt天堂资源网站| 美女亚洲精品| 自拍偷拍亚洲视频| 丝袜美腿中文字幕| 成人资源视频网站免费| 欧美图片一区二区| 日韩av高清在线看片| 国产三级精品三级在线| 里番在线观看网站| 久久久资源网| 亚洲欧美日韩精品在线| 97se亚洲国产一区二区三区| 精品国内产的精品视频在线观看| 国产精品吹潮在线观看| 亚洲一区二区电影| 亚洲三级电影在线观看| 好看的黄色网址| 亚洲自拍在线观看| 国产欧美啪啪| 国产人与禽zoz0性伦| 亚洲激情自拍图| 日本在线观看一区| 蜜臀a∨国产成人精品| 精品久久久久久久无码| 91免费视频黄| 久久精品www人人爽人人| 国新精品乱码一区二区三区18| 精品国产乱码一区二区三区四区| 亚乱亚乱亚洲乱妇| 国产精品福利视频一区二区三区| 久久精品一区二区三区四区五区| 国产成人精品综合久久久久99| 九九九伊在人线综合| 99国产成+人+综合+亚洲欧美| 日韩av在线播放不卡| 国产伦精品一区二区三区免费优势| ckplayer中文字幕| 亚洲精品高清视频在线观看| 99精品视频免费观看| 久久精品国产理论片免费| 日韩一区二区三区在线观看| 亚洲天堂视频在线| 久久久久久久久久久网站| av电影在线观看一区二区三区| 亚洲少妇自拍| 91成人福利在线| 国产三级做爰高清在线| 在线观看免费版| 性欧美疯狂xxxxbbbb| 激情视频网站在线播放色| 最近中文字幕在线观看视频| 亚洲精品承认| 神马影院一区二区三区| 精品黑人一区二区三区观看时间| 快播亚洲色图| 亚洲va中文在线播放免费| 中文国产字幕在线观看| 国产成人亚洲综合a∨婷婷| 麻豆91精品91久久久的内涵| 国产一级片自拍| caoporm超碰国产精品| 亚洲免费电影在线观看| 蜜桃视频久久一区免费观看入口| 久久久久亚洲AV成人网人人小说| 欧美亚洲综合视频| 91精品国产色综合久久不卡电影| 中文字幕精品无码亚| 国产精品外国| 日本韩国精品一区二区| av电影在线播放高清免费观看| 天天射综合网站| 亚洲码国产岛国毛片在线| 2024最新电影免费在线观看| 99久久这里只有精品| 亚洲精品国产一区二区精华液| 色哟哟精品视频| 欧美日韩aaaaaa| 国产精品久久久久永久免费看| 色成年激情久久综合| 亚洲成a人片77777kkkk| 韩国一区二区在线观看| 欧美高清一区二区| 国产免费福利网站| 一本一本久久a久久综合精品蜜桃| 国产午夜精品视频一区二区三区| 成人欧美一区二区| 亚洲精品乱码久久久久久金桔影视| 在线永久免费观看黄网站| 国产成人无码精品久久久性色| 制服丝袜成人动漫| 超碰97人人做人人爱少妇| 国产在线精品一区二区三区不卡| 久草免费在线播放| 天堂中文在线网| 亚洲乱码av中文一区二区| 97人人爽人人爽人人爽| 欧美一区二区免费在线观看| 在线视频第一页| 国产午夜视频在线播放| 日韩精品视频免费专区在线播放| 亚洲女同志freevdieo| 久久不射中文字幕| 亚洲视频久久久| 好色视频app| 特黄毛片在线观看| 亚洲精品无码久久久久久| av电影一区二区| 久久久久无码国产精品一区| 欧美视频自拍偷拍| 日韩三级免费看| 一本到三区不卡视频| 国产伦理片在线观看| 麻豆乱码国产一区二区三区| www.激情五月| 日本少妇吞精囗交| 激情久久久久久久久久久久久久久久| 久久人人爽人人片| 久草在线视频精品|