基於docker安裝pxc集群


基於docker安裝pxc集群

一、PXC 集群的安裝

PXC集群比較特殊,需要安裝在 linux 或 Docker 之上。這里使用 Docker進行安裝!

Docker的鏡像倉庫中包含了 PXC數據庫的官方鏡像,
地址:https://hub.docker.com/r/percona/percona-xtradb-cluster/
如下圖所示:

一,鏡像的安裝

安裝鏡像的兩種方式:

  • docker pull percona/percona-xtradb-cluster
  • docker load < pxc.tar.gz路徑
二,創建內部網絡

出於安全考慮,創建出來的 PXC集群不要直接對接Docker以外的網絡,因此要給PXC集群實例創建 Docker內部網絡。Docker內部網段外部無法直接訪問,我們可通過 docker端口映射技術將端口對外開發。

docker 內部網絡操作 ( 內部默認網段為 172.17.0.XX ):
docker network create 網絡名
docker network inspect 網絡名 : 查看某網絡詳細信息
docker network rm 網絡名
例如:
docker network create –subnet=172.18.0.0/24 net1 :net1為網段名
docker network inspect net1
docker network rm net1

三、創建 Docker卷

通常我們通過 docker的目錄映射機制將業務數據存儲到我們的宿主機上。但是PXC集群技術比較特殊,如果為PXC集群使用了docker的目錄映射技術,PXC會閃退,因此要采用另外一種目錄映射技術,即使用 docker卷。
docker卷的常用操作:
docker volume create –name v1
docker inspect v1 : 查看卷的信息,知道卷在哪。
docker volume rm v1
創建的卷v1 是可以直接在宿主機上看到目錄的。將這個卷映射給容器,此時啟動容器,這樣PXC容器啟動就能將數據映射到卷中,我們通過宿主機中也能看到映射出來的數據。

四、創建PXC容器

只需要向PXC鏡像傳入運行參數就能創建出PXC容器
創建PXC 命令如下:

docker run -d -p 3306:3306
-v v1:/var/lib/mysql
-e MYSQL_ROOT_PASSWORD=abc123456
-e CLUSTER_NAME=PXC
-e XTRABACKUP_PASSWORD=abc123456
–privileged –name=node1 –net=net1 –ip 172.18.0.2 pxc

###### 命令解釋:

-d 代表后台運行
-v 表示 v1卷映射到docker的mysql中,mysql路徑為 /var/lib/mysql
MYSQL_ROOT_PASSWORD=abc123456 表示mysql 的密碼,用戶名默認為root
CLUSTER_NAME=PXC 表示集群的名字
XTRABACKUP_PASSWORD=abc123456 集群之間同步的密碼
–privileged 為權限
–name :給創建出來的容器起一個名字
–net : 容器分到的內部網段
–ip : 容器分到的 ip地址
pxc 為鏡像名

假設我們要創建3個數據庫的集群

docker volume create --name v1
docker volume create --name v2
docker volume create --name v3
/** 
- 集群中數據庫端口映射不一樣、docker卷不一樣、
- 集群中各個容器名不一樣、ip地址不一樣
- 注意修改這四個地方和 創建其他容器時添加:-e CLUSTER_JOIN=node1。
  */
  docker run -d -p 3306:3306 -v v1:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=abc123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=abc123456 --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=abc123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=abc123456 -e CLUSTER_JOIN=node1 --privileged --name=node2 --net=net1 --ip 172.18.0.3 pxc   #node2上執行

docker run -d -p 3308:3306 -v v3:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=abc123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=abc123456 -e CLUSTER_JOIN=node1 --privileged --name=node3 --net=net1 --ip 172.18.0.4 pxc    #node3上執行

注意事項:容器的創建是很快的,但是數據庫創建比較慢(2分鍾以上),一定要確保第一個容器的mysql 初始化好了在創建其他容器,其他容器需要集群到第一個容器的mysql上。可以通過mysql客戶端連接來判斷是否初始化好了。
數據庫客戶端連接時,主機為公網ip,端口為映射到宿主機上的端口,用戶名root,密碼為在 run容器時所指定的那個。

此時通過 docker ps -a 查看后台運行的容器即可。

查看日志:
docker logs -f [Container Id]
or
docker logs -f [Container Name]


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM