因爲最近項目的須要,要給客戶搭建一個高可用環境,其中涉及了數據庫的高可用,最終使用了PXC+LVS的方案,因此在此記錄一下PXC的搭建。node
首先簡單介紹一下PXC,percona官網地址:https://www.percona.com/,官網介紹以下:
Percona XtraDB Cluster(PXC)是MySQL集羣的一種高可用性和高伸縮性的開源解決方案。mysql
PXC會使用大概是4個端口號
- 3306 數據庫對外服務的端口號
- 4444 請求SST SST: 指數據一個鏡象傳輸 xtrabackup , rsync ,mysqldump
- 4567 : 組成員之間進行溝通的一個端口號
- 4568 : 傳輸IST用的。相對於SST來講的一個增量sql
本文檔涉及的ip等信息都是虛假的。數據庫
IP | 操做系統 |
---|---|
172.13.13.1 | CentOS7+ |
172.13.13.2 | CentOS7+ |
172.13.13.3 | CentOS7+ |
首先去percona官網下載相關文件,從https://www.percona.com/downloads/Percona-XtraDB-Cluster-LATEST/,選擇對應的操做系統及版本,選擇下載tar,裏面有所有的文件。
從https://www.percona.com/downloads/XtraBackup/LATEST/,下載XtraBackup的rpm文件,不須要下載tar,debuginfo和test不是必需的。bootstrap
修改hostname,以下所示:
修改hosts文件,三臺機器都修改以下所示:
socket
首先安裝依賴的一些軟件等。
yum install socat
ide
yum install libev
將下載的PXC的tar和XtraBackup的rpm文件,移到/usr/local/pxc/下(自定義的一個文件夾),而後解壓tar到當前文件夾。
spa
首先安裝依賴,shared和shared-compat兩個rpm包;
再安裝xtrabackup,此時會提示依賴perl或DBD_MySQL等,執行下面命令:
yum install percona-xtrabackup-24-2.4.11-1.el7.x86_64.rpm
,來安裝全部依賴(若是經過yum install perl-DBD-MySQL
,安裝獲得的mysql會依賴maraidb_libs,而pxc的server安裝時會提示須要卸載mariadb_libs),安裝完以後再執行rpm -ivh percona-xtrabackup-24-2.4.11-1.el7.x86_64.rpm
;
接着安裝devel等。也能夠執行rpm -ivh percona-XtraDB*
命令,來自動安裝。操作系統
自動安裝中可能會出錯,提示依賴qpress。執行yum install qpress
,若是提示無可用安裝時,修改rpm源,
rpm -Uvh https://www.percona.com/downloads/percona-release/redhat/latest/percona-release-0.1-4.noarch.rpm
,而後再執行install。.net
安裝完成以後,PXC會在/etc下生成percona-xtradb-cluster.conf.d/目錄,該目錄下有三個配置文件,其中wsrep.cnf是集羣信息的配置文件。
因爲想要讓PXC的文件、日誌、數據等信息,生成到指定的地址,因此在安裝server、client以及57-5.7以前,先本身建立了/etc下的my.cnf文件,裏面定義了PXC相關的配置,PXC部份內容以下:
\### MySQL 相關部分配置 [mysqld] log-error=/var/log/mysqld.log \## General user = mysql port = 3306 socket = /usr/local/pxc_data/sock/mysql.sock pid-file = /usr/local/pxc_data/run/mysqld.pid basedir = /usr datadir = /usr/local/pxc_data/datafile tmpdir = /usr/local/pxc_data/tempfile slave_load_tmpdir = /usr/local/pxc_data/tempfile
### Percona XtraDB Cluster 官方配置 begin wsrep_provider = /usr/lib64/galera3/libgalera_smm.so wsrep_cluster_name = pxc-cluster #pxc集羣名稱 wsrep_cluster_address = gcomm://172.13.13.1,172.13.13.2,172.13.13.3 #集羣的三個節點的ip wsrep_node_name = pxc_node1 #hostname wsrep_node_address = 172.13.13.1 #本機ip wsrep_sst_method = xtrabackup-v2 #數據同步方式 wsrep_sst_auth = sstuser:sstpassword #同步時的用戶及密碼 wsrep_provider_options=」gcache.size=8G;」 pxc_strict_mode = enforcing binlog_format = ROW default_storage_engine = InnoDB innodb_autoinc_lock_mode = 2
而後在相應的位置建立文件夾,例如本次是生成在/usr/local/pxc_data/下,分別建立以下文件夾:
mkdir /usr/local/pxc_data/{relaylog,genaral,slowlog,logs,binlog,tempfile,datafile} -p
建立完成以後,須要將權限用戶組修改一下,否則PXC啓動的時候會報錯,啓動失敗。
chown mysql.mysql -R *
三個節點如上配置完畢(注意my.conf中pxc的相關修改),準備啓動PXC集羣,首先啓動主節點。
在172.13.13.1上執行systemctl start mysql@bootstrap.service
,若是提示沒有bootstrap這種啓動方式,那麼就是沒有安裝gardb這個rpm包,則執行rpm -ivh Percona-XtraDB-Cluster-garbd-57-5.7.21-29.26.1.el7.x86_64.rpm
,安裝完成以後,從新啓動。
當啓動成功以後,要想經過命令行進入數據庫,須要獲得數據庫的root帳號的默認密碼,經過日誌文件來獲得(grep pass 3306-error.log
)。
而後鏈接數據庫:
mysql -u root -p 'XXXXX'
若是出現sock文件之類的問題,那麼須要指定sock文件,即:
mysql -u root -p 'XXXXX' -S "sock文件地址"
登入成功以後,首先根據提示修改root密碼,否則沒法進行其餘操做。
修改完成以後,新增一個sstuser用戶(這個用戶是pxc配置中的那個,用來三個節點之間數據同步),並受權。
GRANT RELOAD, PROCESS, LOCK TABLES, REPLICATION CLIENT ON *.* TO 'sstusrr'@'localhost' identified by "sstpassword";
添加並受權成功以後,在172.13.13.2/172.13.13.3上執行systemctl start mysql@service
若是有錯則根據提示查看相關日誌肯定問題。
三個節點啓動完成以後,登入mysql執行 show status like 'wsrep%';
能夠查看pxc的一些信息。
出現
[ERROR] WSREP: wsrep_load(): dlopen(): /usr/lib64/galera3/libgalera_smm.so: symbol SSL_COMP_free_compression_methods, version libssl.so.10 not defined in file libssl.so.10 with link time reference
,是由於openssl版本低,執行yum update openssl
便可。