基於Docker搭建mysql的PXC集群

2021-09-25 02:10:43 字數 3380 閱讀 4529

docker官網

3.pxc映象:percona/percona-xtradb-cluster:5.7.22

1.這裡博主特別說明一下,之前實踐pxc的時候直接docker pull 乙個最新版本的percona/percona-xtradb-cluster(用於搭建pxc集群的最重要工具),結果搞了一天也沒有啟動成功容器,所以選擇了拉取乙個一年以上的版本5.7.22,很好成功了。***

2.docker pull percona/percona-xtradb-cluster:5.7.22

檢視我們拉取的映象

要搭建pxc架構至少需要3個mysql例項來組成乙個集群,三個例項之間不是主從模式,而是各自為主,所以三者是對等關係,不分從屬,這就叫multi-master架構。客戶端寫入和讀取資料時,連線哪個例項都是一樣的。讀取到的資料時相同的,寫入任意乙個例項之後,集群自己會將新寫入的資料同步到其他例項上,這種架構不共享任何資料,是一種高冗餘架構。

1.建立用於容器的乙個網路

2.建立卷*(這裡pxc最少基於三個容器,而本章建立5個)**

注: 先建卷再建容器。3.建容器為了看得清楚我把之前間的一些容器關閉只需要乙個命令

docker rm -f $(docker ps -aq)

-f是強制刪除,包括正在執行的docker容器;

那麼來咯(仔細看好每個建立的命令)

docker run -di -p 3306:3306 \

-v v1:/var/lib/mysql \

-e mysql_root_password=123456 \

-e cluster_name=pxc \

-e xtrabackup_password=123456 \

--privileged=true --name=node1 --net=net1 --ip 172.18.0.2 \

pxcdocker run -di -p 3307:3306 \

-v v2:/var/lib/mysql \

-e mysql_root_password=123456 \

-e cluster_name=pxc \

-e xtrabackup_password=123456 \

-e cluster_join=node1 \

--privileged=true --name=node2 --net=net1 --ip 172.18.0.3 \

pxcdocker run -di -p 3308:3306 \

-v v3:/var/lib/mysql \

-e mysql_root_password=123456 \

-e cluster_name=pxc \

-e xtrabackup_password=123456 \

-e cluster_join=node1 \

--privileged=true --name=node3 --net=net1 --ip 172.18.0.4 \

pxcdocker run -di -p 3309:3306 \

-v v4:/var/lib/mysql \

-e mysql_root_password=123456 \

-e cluster_name=pxc \

-e xtrabackup_password=123456 \

-e cluster_join=node1 \

--privileged=true --name=node4 --net=net1 --ip 172.18.0.5 \

pxcdocker run -di -p 3310:3306 \

-v v5:/var/lib/mysql \

-e mysql_root_password=123456 \

-e cluster_name=pxc \

-e xtrabackup_password=123456 \

-e cluster_join=node1 \

--privileged=true --name=node5 --net=net1 --ip 172.18.0.6 \

pxc

注:再建立第乙個節點node1後,需要隔1~2分鐘再建下乙個節點,而且要先進入容器測試一下。

這裡提一嘴我是用vagrant建立的虛擬機器,所以只要修改vagrantfile配置檔案就可以得到乙個預設私網192.168.33.10(只要在乙個區域網就可被客戶端連線)**當然在容器裡直接操作也可以的就是個人覺得介面般的比較清晰

1.之前提到的版本問題,最好選擇比較舊一點的版本

2.其中乙個或者兩台機器down了

兩個命令

sudo rm -rf /var/lib/docker/volumes/v1/_data/grastate.dat
docker start node1

哪個down刪除哪個卷就可以,再重新啟動

注:如果是重啟失敗,也可以這樣操作

3.啟動第乙個節點的時候稍微等一會,並且連線客戶端試下

4.注意ip和對映埠沒有和其他衝突

5.防火牆和selinux確保是關閉狀態

基於docker搭建rabbitmq

前提是安裝了docker的環境,這個我之前的文章中有。安裝rabbitmq的步驟和其他的軟體在docker中安裝步驟類似 1 找到映象中心 2 根據要求 找到指定的版本 tag 我這裡是使用的七牛的映象位址,然後使用的3.7 manager 的乙個版本 3 使用指令拉取image 映象檔案到伺服器 ...

基於docker搭建Samba

1.查詢映象 docker search samba2.拉取映象 docker pull dperson samba3.在本地建立個目錄,以便於容器掛載 mkdir datadchmod 777 data不修改的話連線進去會提示沒有許可權寫入資料 4.啟動映象 docker run it name ...

基於docker的環境搭建

docker 是乙個開源的應用容器引擎,讓開發者可以打包他們的應用以及依賴包到乙個可移植的容器中,然後發布到任何流行的 linux 機器上,也可以實現虛擬化。容器是完全使用沙箱機制,相互之間不會有任何介面。docker這種技術跟平常用的虛擬機器很相似,但相比之下更加輕量。在工程化部署專案的時候非常好...