1. 程式人生 > 實用技巧 >資料庫之MySQL部署PXC方案(三)

資料庫之MySQL部署PXC方案(三)

零、簡介

  PXC是Percona公司的(Percona XtraDB Cluster)簡稱PXC。它是基於Galera協議的高可用叢集方案。可以實現多個節點間的資料同步複製以及讀寫,並且可保障資料庫的服務高可用及資料強一致性。

  優點:

  1、實現mysql資料庫叢集架構的高可用性和資料的 強一致性。
  2、完成了真正的多節點讀寫的叢集方案。
  3、改善了傳統意義上的主從複製延遲問題,基本上達到了實時同步。
  4、新加入的節點可以自動部署,無須提供手動備份,維護起來很方便。
  5、由於是多節點寫入,所以資料庫故障切換很容易。

  缺點:
  1、新加入的節點開銷大,需要複製完整的資料。採用SST傳輸開銷太大。

  2、任何更新事務都需要全域性驗證通過,才會在每個節點庫上執行。叢集效能受限於效能最差的節點,也就是經常說的短板效應。
  3、因為需要保證資料的一致性,所以在多節點併發寫時,鎖衝突問題比較嚴重。
  4、存在寫擴大問題,所有的節點上都會發生些操作。
  5、沒有表級別的鎖定,執行DDL語句操作會把整個叢集鎖住,而且也 kill 不了(建議使用Osc操作,即線上DDL)
  6、所有的表必須含有主鍵,不然操作資料時會報錯。

一、安裝

  1、環境規劃    

192.168.1.30:3307  node1
192.168.1.30:3308  node2
192.168
.1.30:3309  node3

  2、環境部署    

1) 拉取PXC映象 注(我拉latest版部署的時候失敗了,換5.7.30版本部署成功)
    docker pull percona/percona-xtradb-cluster:5.7.30
2) 為PXC映象改名
    docker tag percona/percona-xtradb-cluster:5.7.30 pxc
3) 建立pxc網段
    docker network create --subnet=172.18.0.0/16 dz-pxc-net
4) 先創3個數據卷和一個備份資料卷(用於熱備份資料)
    docker volume create 
--name v1 docker volume create --name v2 docker volume create --name v3 docker volume create --name backup 5) 建立3個容器 docker run -d -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=123456 -v v1:/var/lib/mysql -v backup:/data --privileged=true --name=node1 --net=dz-pxc-net --ip 172.18.0.2 pxc docker run -d -p 3308:3306 -e MYSQL_ROOT_PASSWORD=123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=123456 -e CLUSTER_JOIN=node1 -v v2:/var/lib/mysql -v backup:/data --privileged=true --name=node2 --net=dz-pxc-net --ip 172.18.0.3 pxc docker run -d -p 3309:3306 -e MYSQL_ROOT_PASSWORD=123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=123456 -e CLUSTER_JOIN=node1 -v v3:/var/lib/mysql -v backup:/data --privileged=true --name=node3 --net=dz-pxc-net --ip 172.18.0.4 pxc