MySQL——PXC

一、PXC概述

1.1、介紹

  • Percona XtraDB Cluster(PXC)
    1. 是基於Galera的MySQL高可用集羣解決方案
    2. Galera Cluster是Codership公司開發的一套免費開源的高可用方案
    3. PXC集羣主要由兩部分組成
      Percona Server with XtarDB
      Write Replication patches

1.2、特點

  • 數據強一致性、無同步延遲
  • 沒有主從切換操作,無需使用虛擬IP
  • 支持InnoDB存儲引擎
  • 多線程複製
  • 部署使用簡單
  • 支持節點自動加入,無需手動拷貝數據
    停止集羣中的任意1臺主機的數據服務
    客戶端依然可以連接其他數據服務器查看和存數據
    把數據庫服務啓動後,會自動加入集羣並並同步宕機期間的數據。

1.3、相應端口

  • 服務端口
端口 說明
3306 數據庫服務端口
4444 SST端口
4567 集羣通信端口
4568 IST端口
  • SST
    State Snapshot Transfer 全量同步
  • IST
    Incremental State Transfer 增量同步

二、部署PXC

2.1、安裝軟件

  • 三臺服務器
]# ls
libev-4.15-1.el6.rf.x86_64.rpm
percona-release-0.1-4.noarch.rpm
percona-xtrabackup-24-2.4.13-1.el7.x86_64.rpm		//在線熱備程序
Percona-XtraDB-Cluster-57-5.7.25-31.35.1.el7.x86_64.rpm
Percona-XtraDB-Cluster-57-debuginfo-5.7.25-31.35.1.el7.x86_64.rpm
Percona-XtraDB-Cluster-client-57-5.7.25-31.35.1.el7.x86_64.rpm
Percona-XtraDB-Cluster-devel-57-5.7.25-31.35.1.el7.x86_64.rpm
Percona-XtraDB-Cluster-full-57-5.7.25-31.35.1.el7.x86_64.rpm
Percona-XtraDB-Cluster-garbd-57-5.7.25-31.35.1.el7.x86_64.rpm
Percona-XtraDB-Cluster-server-57-5.7.25-31.35.1.el7.x86_64.rpm		//集羣服務程序
Percona-XtraDB-Cluster-shared-57-5.7.25-31.35.1.el7.x86_64.rpm
Percona-XtraDB-Cluster-shared-compat-57-5.7.25-31.35.1.el7.x86_64.rpm
Percona-XtraDB-Cluster-test-57-5.7.25-31.35.1.el7.x86_64.rpm
qpress-1.1-14.11.x86_64.rpm		//遞歸壓縮程序

]# rpm -ivh libev-4.15-1.el6.rf.x86_64.rpm    //安裝依賴
]# yum  -y  install  percona-xtrabackup-24-2.4.13-1.el7.x86_64.rpm
]# rpm -ivh qpress-1.1-14.11.x86_64.rpm     //安裝依賴
]# yum -y  install  Percona-XtraDB-Cluster-*.rpm

]# ls /etc/percona-xtradb-cluster.conf.d/		//配置文件所在目錄

2.2、修改服務器配置文件

  • 三臺服務器
]# ls /etc/percona-xtradb-cluster.conf.d/		//配置文件所在目錄
mysqld.cnf  mysqld_safe.cnf  wsrep.cnf
  • wsrep.cnf
    PXC集羣配置文件
  • mysqld.cnf
    數據庫服務運行參數配置文件
[mysqld]
server-id=1		//不允許重複,默認是1
datadir=/var/lib/mysql	//數據庫目錄
socket=/var/lib/mysql/mysql.sock	//socket文件
log-error=/var/log/mysqld.log		//日誌文件
pid-file=/var/run/mysqld/mysqld.pid		//pid文件
log-bin			//啓用binlog日誌
log_slave_updates	//啓用鏈式複製
expire_logs_days=7	//日誌文件保持的天數
  • mysqld_safe.cnf
    Percona Server 5.7配置文件

2.2.1、修改數據庫服務運行參數配置文件

[root@pxcnode1 ~]# vim /etc/percona-xtradb-cluster.conf.d/mysqld.cnf
[mysqld]
server-id=1
[root@pxcnode2 ~]# vim /etc/percona-xtradb-cluster.conf.d/mysqld.cnf
[mysqld]
server-id=2
[root@pxcnode3 ~]# vim /etc/percona-xtradb-cluster.conf.d/mysqld.cnf
[mysqld]
server-id=3

2.2.2、修改PXC集羣配置文件

[root@pxcnode1 ~]# vim /etc/percona-xtradb-cluster.conf.d/wsrep.cnf
wsrep_cluster_address=gcomm://192.168.4.71,192.168.4.72,192.168.4.73    	//集羣成員列表
wsrep_node_address=192.168.4.71 	//本機IP地址
wsrep_cluster_name=pxc-cluster  	//集羣名稱
wsrep_node_name=pxc-cluster-node-71	//本機主機名
wsrep_sst_auth="sstuser:123qqq...A" 	//SST數據同步授權用戶

[root@pxcnode2 ~]# vim /etc/percona-xtradb-cluster.conf.d/wsrep.cnf
wsrep_cluster_address=gcomm://192.168.4.71,192.168.4.72,192.168.4.73    
wsrep_node_address=192.168.4.72
wsrep_cluster_name=pxc-cluster  
wsrep_node_name=pxc-cluster-node-72
wsrep_sst_auth="sstuser:123qqq...A" 

[root@pxcnode3 ~]# vim /etc/percona-xtradb-cluster.conf.d/wsrep.cnf
wsrep_cluster_address=gcomm://192.168.4.71,192.168.4.72,192.168.4.73    
wsrep_node_address=192.168.4.73
wsrep_cluster_name=pxc-cluster  
wsrep_node_name=pxc-cluster-node-73
wsrep_sst_auth="sstuser:123qqq...A" 

2.3、啓動服務

2.3.1、在pxcnode1主機做集羣的初始配置

在一臺服務器上執行就可以
同樣可以在其他服務器上執行

[root@pxcnode1 ~]# systemctl start mysql@bootstrap.service	//啓動集羣配置
[root@pxcnode1 ~]# netstat -utnlp | grep 3306	
tcp6       0      0 :::3306                 :::*                    LISTEN      9154/mysqld         
[root@pxcnode1 ~]# netstat -utnlp | grep 4567
tcp        0      0 0.0.0.0:4567            0.0.0.0:*               LISTEN      9154/mysqld         
[root@pxcnode1 ~]# grep password /var/log/mysqld.log 
2020-03-30T07:54:32.690202Z 1 [Note] A temporary password is generated for root@localhost: R>3#h*jPey(l
[root@pxcnode1 ~]# mysql -uroot -p'R>3#h*jPey(l'
mysql> alter user root@"localhost" identified by "123456";
Query OK, 0 rows affected (0.00 sec)

mysql> show databases;

mysql> grant reload , lock tables , replication client , process on *.* to sstuser@"localhost" identified by  "123qqq...A";

2.3.2、在pxcnode2、3上啓動服務

[root@pxcnode2 ~]# systemctl start mysql
[root@pxcnode2 ~]# netstat  -utnlp  | grep 3306
tcp6       0      0 :::3306                 :::*                    LISTEN      8914/mysqld         
[root@pxcnode2 ~]# netstat  -utnlp  | grep 4567
tcp        0      0 0.0.0.0:4567            0.0.0.0:*               LISTEN      8914/mysqld
[root@pxcnode2 ~]# mysql -uroot -p123456

[root@pxcnode3 ~]# systemctl start mysql
[root@pxcnode3 ~]# netstat  -utnlp | grep 3306
tcp6       0      0 :::3306                 :::*                    LISTEN      10998/mysqld        
[root@pxcnode3 ~]# netstat  -utnlp | grep 4567
tcp        0      0 0.0.0.0:4567            0.0.0.0:*               LISTEN      10998/mysqld        
[root@pxcnode3 ~]# mysql -uroot -p123456

2.3.3、在任意服務器上查看集羣信息

mysql> show status like "%wsrep_%";
wsrep_incoming_addresses         | 192.168.4.73:3306,192.168.4.71:3306,192.168.4.72:3306	//成員列表
wsrep_cluster_size               | 3			//集羣服務器臺數
wsrep_cluster_status             | Primary		//集羣狀態
wsrep_connected                  | ON			//連接狀態
wsrep_ready                      | ON			//服務狀態

2.4、客戶端訪問集羣存取數據

  1. 在任意一臺數據庫服務器上添加授權 用戶
    先創建庫表
mysql> create database mydb1;
Query OK, 1 row affected (0.01 sec)

mysql> create table mydb1.user(id int primary key auto_increment , name char(10) );
Query OK, 0 rows affected (0.01 sec)

mysql> grant select , insert on mydb1.* to abc@"%" identified by "123456";
Query OK, 0 rows affected, 1 warning (0.01 s
  1. 客戶端連接測試
[root@client ~]# mysql -h192.168.4.71 -uabc -p123456
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mydb1              |
+--------------------+
2 rows in set (0.00 sec)


[root@client ~]# mysql -h192.168.4.72 -uabc -p123456
mysql> show databases;

[root@client ~]# mysql -h192.168.4.73 -uabc -p123456
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章