MySQL Galera叢集搭建流程(Percona XtraDB Cluster 5.7)
避免建立偶數節點數量的叢集,因為這樣會導致腦裂。
Linux版本:CentOS 6.5
IP資訊:
Node IP
Node 1 10.20.30.10
Node 2 10.20.30.20
Node 3 10.20.30.30
關掉selinux和防火牆,否則後面初始化叢集會失敗
[root@localhost mysql_log_57]# vim /etc/selinux/config
SELINUX=disabled
1. 在所有節點上安裝Percona XtraDB叢集軟體
安裝YUM源
[root@localhost ~]# yum install
檢查包是否可用
[root@localhost install]# yum list | grep Percona-XtraDB-Cluster-57
Percona-XtraDB-Cluster-57.x86_64 5.7.18-29.20.1.el6 percona-release-x86_64
Percona-XtraDB-Cluster-57-debuginfo.x86_64 5.7.18-29.20.1.el6 percona-release-x86_64
安裝Percona XtraDB叢集包
[root@localhost install]# yum install Percona-XtraDB-Cluster-57
安裝時提示缺少下面的包
Error: Package: Percona-XtraDB-Cluster-server-57-5.7.18-29.20.1.el6.x86_64 (percona-release-x86_64)
Requires: socat
Error: Package: percona-xtrabackup-24-2.4.7-2.el6.x86_64 (percona-release-x86_64)
Requires: libev.so.4()(64bit)
安裝缺少的socat和libev包
到fedora官網下載repository
在下面網頁中下載epel-release開頭的rpm包
上傳rpm包到伺服器上
安裝repository包
[root@localhost install]# yum localinstall epel-release-6-8.noarch.rpm
安裝socat、libev
[root@localhost install]# yum install socat libev
再次安裝Percona XtraDB叢集包
[root@localhost install]# yum install Percona-XtraDB-Cluster-57
注意,如果伺服器上安裝過資料庫,/etc/my.cnf配置檔案已經存在,需要將其改名,否則會對叢集啟動產生影響
[root@localhost ~]# mv /etc/my.cnf /etc/my_5.7_mha.cnf
檢視資料目錄下的內容
[root@localhost usr]# cd /var/lib/mysql
[root@localhost mysql]# ls -trl
total 126800
-rw-r-----. 1 mysql mysql 50331648 Jul 1 19:21 ib_logfile1
-rw-r-----. 1 mysql mysql 56 Jul 1 19:21 auto.cnf
-rw-------. 1 mysql mysql 1676 Jul 1 19:21 ca-key.pem
-rw-r--r--. 1 mysql mysql 1083 Jul 1 19:21 ca.pem
-rw-------. 1 mysql mysql 1676 Jul 1 19:21 server-key.pem
-rw-r--r--. 1 mysql mysql 1087 Jul 1 19:21 server-cert.pem
-rw-------. 1 mysql mysql 1680 Jul 1 19:21 client-key.pem
-rw-r--r--. 1 mysql mysql 1087 Jul 1 19:21 client-cert.pem
-rw-r--r--. 1 mysql mysql 452 Jul 1 19:21 public_key.pem
-rw-------. 1 mysql mysql 1680 Jul 1 19:21 private_key.pem
drwxr-x---. 2 mysql mysql 4096 Jul 1 19:21 performance_schema
drwxr-x---. 2 mysql mysql 4096 Jul 1 19:21 mysql
drwxr-x---. 2 mysql mysql 12288 Jul 1 19:21 sys
-rw-r-----. 1 mysql mysql 417 Jul 1 19:21 ib_buffer_pool
-rw-rw----. 1 root root 5 Jul 1 19:21 mysqld_safe.pid
-rw-------. 1 mysql mysql 5 Jul 1 19:21 mysql.sock.lock
srwxrwxrwx. 1 mysql mysql 0 Jul 1 19:21 mysql.sock
-rw-r-----. 1 mysql mysql 5 Jul 1 19:21 localhost.localdomain.pid
-rw-r-----. 1 mysql mysql 3932160 Jul 1 19:21 xb_doublewrite
-rw-r-----. 1 mysql mysql 12582912 Jul 1 19:21 ibtmp1
-rw-r-----. 1 mysql mysql 12582912 Jul 1 19:21 ibdata1
-rw-r-----. 1 mysql mysql 50331648 Jul 1 19:21 ib_logfile0
-rw-r-----. 1 mysql mysql 4653 Jul 1 19:22 localhost.localdomain.er
預設安裝的軟體目錄
檢視軟體目錄下的內容
[root@localhost ~]# cd /usr/
[root@localhost usr]# ls -trl
total 144
drwxr-xr-x. 2 root root 4096 Sep 23 2011 games
drwxr-xr-x. 2 root root 4096 Sep 23 2011 etc
drwxr-xr-x. 4 root root 4096 Mar 23 16:03 src
lrwxrwxrwx. 1 root root 10 Mar 23 16:03 tmp -> ../var/tmp
dr-xr-xr-x. 15 root root 4096 Mar 23 16:17 lib
drwxr-xr-x. 42 root root 4096 Apr 3 03:15 include
drwxr-xr-x. 22 root root 12288 Apr 3 03:41 libexec
drwxr-xr-x. 14 root root 4096 Apr 9 08:25 local
dr-xr-xr-x. 2 root root 36864 Jul 1 16:11 bin
dr-xr-xr-x. 92 root root 49152 Jul 1 16:11 lib64
dr-xr-xr-x. 2 root root 12288 Jul 1 16:11 sbin
drwxr-xr-x. 175 root root 4096 Jul 1 16:11 share
啟動Percona XtraDB叢集服務
service mysql start
檢視叢集狀態
[root@localhost mysql]# service mysql status
SUCCESS! MySQL (Percona XtraDB Cluster) running (2263)
實際上叢集的程式就是mysqld的程式
[root@localhost mysql]# service mysql status
SUCCESS! MySQL (Percona XtraDB Cluster) running (2928)
[root@localhost mysql]# ps -ef|grep mysql
root 2824 1 0 19:56 pts/1 00:00:00 /bin/sh /usr/bin/mysqld_safe --datadir=/var/lib/mysql --pid-file=/var/lib/mysql/localhost.localdomain.pid
mysql 2928 2824 2 19:56 pts/1 00:00:01 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --user=mysql --log-error=/var/lib/mysql/localhost.localdomain.err --pid-file=/var/lib/mysql/localhost.localdomain.pid --wsrep_start_position=00000000-0000-0000-0000-000000000000:-1
root 2982 2711 0 19:57 pts/1 00:00:00 grep mysql
重新設定root密碼
[root@localhost log]# mysqld_safe --skip-grant-tables --skip-networking&
[root@localhost log]# mysql -uroot
mysql> update mysql.user set authentication_string=password('root') where user='root';
mysql> commit;
[root@localhost log]# mysqladmin shutdown
[root@localhost log]# service mysql start
Starting MySQL (Percona XtraDB Cluster).. SUCCESS!
[root@localhost ~]# mysql -uroot -p
mysql> alter user root@localhost identified by 'root';
2. 在所有節點上配置寫集合複製相關的引數
這包括Glera庫的路徑和其他節點的位置
停掉叢集服務
[root@localhost ~]# service mysql stop
Shutting down MySQL (Percona XtraDB Cluster)... SUCCESS!
引數說明:
wsrep_provider 指定Galera庫的路徑
wsrep_cluster_name 指定叢集各個節點的IP地址
wsrep_node_name 指定每個節點的邏輯名。如果沒有指定這個引數,預設會使用主機名
wsrep_node_address 指定節點的IP地址
wsrep_sst_method 預設,Percona XtraDB叢集使用Percona XtraBackup來做狀態快照傳輸(SST)。強烈建議將這個引數設為wsrep_sst_method=xtrabackup-v2。使用這個方法需要配置一個資料庫使用者。在wsrep_sst_auth引數中指定SST認證使用者。
wsrep_sst_auth 指定SST認證使用者名稱和密碼,格式是:。
性和不支援的特性
binlog_format Gelera只支援行級的複製,所以設定 binlog_format=ROW
default_storage_engine Galera只支援InnoDB儲存引擎。不支援MyISAM或其他非事務性的儲存引擎。所以設定 default_storage_engine=InnoDB
innodb_autoinc_lock_mode Gelara只支援適合InnoDB的interleaved (2)鎖模式。將這個引數設為traditional (0)或consecutive (1)鎖模式會引起死鎖,
進而將會導致複製失敗。所以設定 innodb_autoinc_lock_mode=2
節點1配置檔案
[mysqld]
wsrep_provider=/usr/lib64/galera3/libgalera_smm.so
wsrep_cluster_name=pxc-cluster
wsrep_cluster_address="gcomm://10.20.30.10,10.20.30.20,10.20.30.30"
wsrep_node_name=pxc1
wsrep_node_address=10.20.30.10
wsrep_sst_method=xtrabackup-v2
wsrep_sst_auth=sstuser:passw0rd
pxc_strict_mode=ENFORCING
binlog_format=ROW
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2
basedir = /usr
datadir = /var/lib/mysql
pid-file=/var/run/mysqld/mysqld_galera.pid
log-error=/var/log/mysqld_galera.log
port = 3306
user = mysql
socket = /var/lib/mysql/mysql.sock
skip-external-locking
max_allowed_packet = 1M
table_open_cache = 4
sort_buffer_size = 64K
read_buffer_size = 256K
net_buffer_length = 2K
read_buffer_size = 256K
net_buffer_length = 2K
thread_stack = 256K
max_connections = 1000
#log-bin = /mysql_log_57/galera-bin
#servier-id = 1000
節點2配置檔案
[mysqld]
wsrep_provider=/usr/lib64/galera3/libgalera_smm.so
wsrep_cluster_name=pxc-cluster
wsrep_cluster_address=gcomm://10.20.30.10,10.20.30.20,10.20.30.30
wsrep_node_name=pxc2
wsrep_node_address=10.20.30.20
wsrep_sst_method=xtrabackup-v2
wsrep_sst_auth=sstuser:passw0rd
pxc_strict_mode=ENFORCING
binlog_format=ROW
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2
basedir = /usr
datadir = /var/lib/mysql
pid-file=/var/run/mysqld/mysqld_galera.pid
log-error=/var/log/mysqld_galera.log
port = 3306
user = mysql
socket = /var/lib/mysql/mysql.sock
skip-external-locking
max_allowed_packet = 1M
table_open_cache = 4
sort_buffer_size = 64K
read_buffer_size = 256K
net_buffer_length = 2K
read_buffer_size = 256K
net_buffer_length = 2K
thread_stack = 256K
max_connections = 1000
#log-bin = /mysql_log_57/galera-bin
#servier-id = 1000
節點3配置檔案
[mysqld]
wsrep_provider=/usr/lib64/galera3/libgalera_smm.so
wsrep_cluster_name=pxc-cluster
wsrep_cluster_address=gcomm://10.20.30.10,10.20.30.20,10.20.30.30
wsrep_node_name=pxc3
wsrep_node_address=10.20.30.30
wsrep_sst_method=xtrabackup-v2
wsrep_sst_auth=sstuser:passw0rd
pxc_strict_mode=ENFORCING
binlog_format=ROW
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2
basedir = /usr
datadir = /var/lib/mysql
pid-file=/var/run/mysqld/mysqld_galera.pid
log-error=/var/log/mysqld_galera.log
port = 3306
user = mysql
socket = /var/lib/mysql/mysql.sock
skip-external-locking
max_allowed_packet = 1M
table_open_cache = 4
sort_buffer_size = 64K
read_buffer_size = 256K
net_buffer_length = 2K
read_buffer_size = 256K
net_buffer_length = 2K
thread_stack = 256K
max_connections = 1000
#log-bin = /mysql_log_57/galera-bin
#servier-id = 1000
檢視模組
[root@localhost ~]# ll /usr/lib64/galera3/libgalera_smm.so
-rwxr-xr-x. 1 root root 2404960 May 31 23:07 /usr/lib64/galera3/libgalera_smm.so
3. 在第一個節點上初始化叢集
這個節點必須包含全部的資料,作為叢集的資料來源。
在第一個節點上執行下面操作
[root@localhost mysql_log_57]# /etc/init.d/mysql bootstrap-pxc
Starting MySQL (Percona XtraDB Cluster)..... SUCCESS!
檢視叢集狀態
[root@localhost mysql_log_57]# mysql -uroot -p
mysql> show status like 'wsrep%';
| wsrep_local_state_comment | Synced | // 節點是同步狀態
| wsrep_cluster_size | 1 | // 叢集只有一個節點
| wsrep_cluster_status | Primary | // 主節點
| wsrep_connected | ON | // 已經連線到叢集
| wsrep_ready | ON | // 已經做好寫集合的複製準備
在增加其他節點到叢集中前,建立SST的資料庫使用者。這個賬戶必須和配置檔案中的資訊相符。
mysql> CREATE USER 'sstuser'@'localhost' IDENTIFIED BY 'passw0rd';
Query OK, 0 rows affected (0.02 sec)
mysql> GRANT RELOAD, LOCK TABLES, PROCESS, REPLICATION CLIENT ON *.* TO
-> 'sstuser'@'localhost';
Query OK, 0 rows affected (0.00 sec)
4. 增加其他節點到叢集中
當配置好wsrep_cluster_address等配置檔案後,啟動該節點,它會自動加入叢集並開始同步資料。
注意:不要在相同時間加入多個節點到叢集中,以避免巨大的網路流量壓力。
預設,Percona XtraDB叢集使用Percona XtraBackup來傳輸狀態快照 State Snapshot Transfer (SST)。
需要滿足下麵條件:
設定wsrep_sst_method引數為xtrabackup-v2,並使用wsrep_sst_auth變數提供SST使用者認證。
在初始化節點上面建立SST使用者。
啟動第2個節點
[root@localhost ~]# /etc/init.d/mysql start
在第2個節點上,檢視使用者和叢集狀態
可以看到SST使用者已經複製到第2節點,叢集已經有了兩個節點,size變為2
mysql> select user, host from mysql.user;
+-----------+-----------+
| user | host |
+-----------+-----------+
| mysql.sys | localhost |
| root | localhost |
| sstuser | localhost |
+-----------+-----------+
3 rows in set (0.01 sec)
mysql> show status like 'wsrep%';
| wsrep_local_state_comment | Synced |
| wsrep_cluster_size | 2 |
增加第3個節點到叢集中
[root@localhost ~]# /etc/init.d/mysql start
在第3個節點檢查叢集的狀態
mysql> show status like 'wsrep%';
| wsrep_cluster_size | 3 |
可以看到叢集的wsrep_cluster_size引數變為3,叢集增加到第3個節點
5. 驗證複製效果
在第2個節點上建立一個資料庫
mysql> CREATE DATABASE percona;
Query OK, 1 row affected (0.07 sec)
在第3個節點上,在剛剛建立的庫裡面建立一張表
mysql> USE percona;
Database changed
mysql> CREATE TABLE example (node_id INT PRIMARY KEY, node_name VARCHAR(30));
Query OK, 0 rows affected (0.05 sec)
在第1個節點上,往這張表中插入一條資料
mysql> INSERT INTO percona.example VALUES (1, 'percona1');
Query OK, 1 row affected (0.23 sec)
mysql> commit;
Query OK, 0 rows affected (0.00 sec)
在第2個節點檢視這張表中的資料
mysql> SELECT * FROM percona.example;
+---------+-----------+
| node_id | node_name |
+---------+-----------+
| 1 | percona1 |
+---------+-----------+
1 row in set (0.00 sec)
Linux版本:CentOS 6.5
IP資訊:
Node IP
Node 1 10.20.30.10
Node 2 10.20.30.20
Node 3 10.20.30.30
關掉selinux和防火牆,否則後面初始化叢集會失敗
[root@localhost mysql_log_57]# vim /etc/selinux/config
SELINUX=disabled
1. 在所有節點上安裝Percona XtraDB叢集軟體
安裝YUM源
[root@localhost ~]# yum install
檢查包是否可用
[root@localhost install]# yum list | grep Percona-XtraDB-Cluster-57
Percona-XtraDB-Cluster-57.x86_64 5.7.18-29.20.1.el6 percona-release-x86_64
Percona-XtraDB-Cluster-57-debuginfo.x86_64 5.7.18-29.20.1.el6 percona-release-x86_64
安裝Percona XtraDB叢集包
[root@localhost install]# yum install Percona-XtraDB-Cluster-57
安裝時提示缺少下面的包
Error: Package: Percona-XtraDB-Cluster-server-57-5.7.18-29.20.1.el6.x86_64 (percona-release-x86_64)
Requires: socat
Error: Package: percona-xtrabackup-24-2.4.7-2.el6.x86_64 (percona-release-x86_64)
Requires: libev.so.4()(64bit)
安裝缺少的socat和libev包
到fedora官網下載repository
在下面網頁中下載epel-release開頭的rpm包
上傳rpm包到伺服器上
安裝repository包
[root@localhost install]# yum localinstall epel-release-6-8.noarch.rpm
安裝socat、libev
[root@localhost install]# yum install socat libev
再次安裝Percona XtraDB叢集包
[root@localhost install]# yum install Percona-XtraDB-Cluster-57
注意,如果伺服器上安裝過資料庫,/etc/my.cnf配置檔案已經存在,需要將其改名,否則會對叢集啟動產生影響
[root@localhost ~]# mv /etc/my.cnf /etc/my_5.7_mha.cnf
檢視資料目錄下的內容
[root@localhost usr]# cd /var/lib/mysql
[root@localhost mysql]# ls -trl
total 126800
-rw-r-----. 1 mysql mysql 50331648 Jul 1 19:21 ib_logfile1
-rw-r-----. 1 mysql mysql 56 Jul 1 19:21 auto.cnf
-rw-------. 1 mysql mysql 1676 Jul 1 19:21 ca-key.pem
-rw-r--r--. 1 mysql mysql 1083 Jul 1 19:21 ca.pem
-rw-------. 1 mysql mysql 1676 Jul 1 19:21 server-key.pem
-rw-r--r--. 1 mysql mysql 1087 Jul 1 19:21 server-cert.pem
-rw-------. 1 mysql mysql 1680 Jul 1 19:21 client-key.pem
-rw-r--r--. 1 mysql mysql 1087 Jul 1 19:21 client-cert.pem
-rw-r--r--. 1 mysql mysql 452 Jul 1 19:21 public_key.pem
-rw-------. 1 mysql mysql 1680 Jul 1 19:21 private_key.pem
drwxr-x---. 2 mysql mysql 4096 Jul 1 19:21 performance_schema
drwxr-x---. 2 mysql mysql 4096 Jul 1 19:21 mysql
drwxr-x---. 2 mysql mysql 12288 Jul 1 19:21 sys
-rw-r-----. 1 mysql mysql 417 Jul 1 19:21 ib_buffer_pool
-rw-rw----. 1 root root 5 Jul 1 19:21 mysqld_safe.pid
-rw-------. 1 mysql mysql 5 Jul 1 19:21 mysql.sock.lock
srwxrwxrwx. 1 mysql mysql 0 Jul 1 19:21 mysql.sock
-rw-r-----. 1 mysql mysql 5 Jul 1 19:21 localhost.localdomain.pid
-rw-r-----. 1 mysql mysql 3932160 Jul 1 19:21 xb_doublewrite
-rw-r-----. 1 mysql mysql 12582912 Jul 1 19:21 ibtmp1
-rw-r-----. 1 mysql mysql 12582912 Jul 1 19:21 ibdata1
-rw-r-----. 1 mysql mysql 50331648 Jul 1 19:21 ib_logfile0
-rw-r-----. 1 mysql mysql 4653 Jul 1 19:22 localhost.localdomain.er
預設安裝的軟體目錄
檢視軟體目錄下的內容
[root@localhost ~]# cd /usr/
[root@localhost usr]# ls -trl
total 144
drwxr-xr-x. 2 root root 4096 Sep 23 2011 games
drwxr-xr-x. 2 root root 4096 Sep 23 2011 etc
drwxr-xr-x. 4 root root 4096 Mar 23 16:03 src
lrwxrwxrwx. 1 root root 10 Mar 23 16:03 tmp -> ../var/tmp
dr-xr-xr-x. 15 root root 4096 Mar 23 16:17 lib
drwxr-xr-x. 42 root root 4096 Apr 3 03:15 include
drwxr-xr-x. 22 root root 12288 Apr 3 03:41 libexec
drwxr-xr-x. 14 root root 4096 Apr 9 08:25 local
dr-xr-xr-x. 2 root root 36864 Jul 1 16:11 bin
dr-xr-xr-x. 92 root root 49152 Jul 1 16:11 lib64
dr-xr-xr-x. 2 root root 12288 Jul 1 16:11 sbin
drwxr-xr-x. 175 root root 4096 Jul 1 16:11 share
啟動Percona XtraDB叢集服務
service mysql start
檢視叢集狀態
[root@localhost mysql]# service mysql status
SUCCESS! MySQL (Percona XtraDB Cluster) running (2263)
實際上叢集的程式就是mysqld的程式
[root@localhost mysql]# service mysql status
SUCCESS! MySQL (Percona XtraDB Cluster) running (2928)
[root@localhost mysql]# ps -ef|grep mysql
root 2824 1 0 19:56 pts/1 00:00:00 /bin/sh /usr/bin/mysqld_safe --datadir=/var/lib/mysql --pid-file=/var/lib/mysql/localhost.localdomain.pid
mysql 2928 2824 2 19:56 pts/1 00:00:01 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --user=mysql --log-error=/var/lib/mysql/localhost.localdomain.err --pid-file=/var/lib/mysql/localhost.localdomain.pid --wsrep_start_position=00000000-0000-0000-0000-000000000000:-1
root 2982 2711 0 19:57 pts/1 00:00:00 grep mysql
重新設定root密碼
[root@localhost log]# mysqld_safe --skip-grant-tables --skip-networking&
[root@localhost log]# mysql -uroot
mysql> update mysql.user set authentication_string=password('root') where user='root';
mysql> commit;
[root@localhost log]# mysqladmin shutdown
[root@localhost log]# service mysql start
Starting MySQL (Percona XtraDB Cluster).. SUCCESS!
[root@localhost ~]# mysql -uroot -p
mysql> alter user root@localhost identified by 'root';
2. 在所有節點上配置寫集合複製相關的引數
這包括Glera庫的路徑和其他節點的位置
停掉叢集服務
[root@localhost ~]# service mysql stop
Shutting down MySQL (Percona XtraDB Cluster)... SUCCESS!
引數說明:
wsrep_provider 指定Galera庫的路徑
wsrep_cluster_name 指定叢集各個節點的IP地址
wsrep_node_name 指定每個節點的邏輯名。如果沒有指定這個引數,預設會使用主機名
wsrep_node_address 指定節點的IP地址
wsrep_sst_method 預設,Percona XtraDB叢集使用Percona XtraBackup來做狀態快照傳輸(SST)。強烈建議將這個引數設為wsrep_sst_method=xtrabackup-v2。使用這個方法需要配置一個資料庫使用者。在wsrep_sst_auth引數中指定SST認證使用者。
wsrep_sst_auth 指定SST認證使用者名稱和密碼,格式是:。
性和不支援的特性
binlog_format Gelera只支援行級的複製,所以設定 binlog_format=ROW
default_storage_engine Galera只支援InnoDB儲存引擎。不支援MyISAM或其他非事務性的儲存引擎。所以設定 default_storage_engine=InnoDB
innodb_autoinc_lock_mode Gelara只支援適合InnoDB的interleaved (2)鎖模式。將這個引數設為traditional (0)或consecutive (1)鎖模式會引起死鎖,
進而將會導致複製失敗。所以設定 innodb_autoinc_lock_mode=2
節點1配置檔案
[mysqld]
wsrep_provider=/usr/lib64/galera3/libgalera_smm.so
wsrep_cluster_name=pxc-cluster
wsrep_cluster_address="gcomm://10.20.30.10,10.20.30.20,10.20.30.30"
wsrep_node_name=pxc1
wsrep_node_address=10.20.30.10
wsrep_sst_method=xtrabackup-v2
wsrep_sst_auth=sstuser:passw0rd
pxc_strict_mode=ENFORCING
binlog_format=ROW
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2
basedir = /usr
datadir = /var/lib/mysql
pid-file=/var/run/mysqld/mysqld_galera.pid
log-error=/var/log/mysqld_galera.log
port = 3306
user = mysql
socket = /var/lib/mysql/mysql.sock
skip-external-locking
max_allowed_packet = 1M
table_open_cache = 4
sort_buffer_size = 64K
read_buffer_size = 256K
net_buffer_length = 2K
read_buffer_size = 256K
net_buffer_length = 2K
thread_stack = 256K
max_connections = 1000
#log-bin = /mysql_log_57/galera-bin
#servier-id = 1000
節點2配置檔案
[mysqld]
wsrep_provider=/usr/lib64/galera3/libgalera_smm.so
wsrep_cluster_name=pxc-cluster
wsrep_cluster_address=gcomm://10.20.30.10,10.20.30.20,10.20.30.30
wsrep_node_name=pxc2
wsrep_node_address=10.20.30.20
wsrep_sst_method=xtrabackup-v2
wsrep_sst_auth=sstuser:passw0rd
pxc_strict_mode=ENFORCING
binlog_format=ROW
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2
basedir = /usr
datadir = /var/lib/mysql
pid-file=/var/run/mysqld/mysqld_galera.pid
log-error=/var/log/mysqld_galera.log
port = 3306
user = mysql
socket = /var/lib/mysql/mysql.sock
skip-external-locking
max_allowed_packet = 1M
table_open_cache = 4
sort_buffer_size = 64K
read_buffer_size = 256K
net_buffer_length = 2K
read_buffer_size = 256K
net_buffer_length = 2K
thread_stack = 256K
max_connections = 1000
#log-bin = /mysql_log_57/galera-bin
#servier-id = 1000
節點3配置檔案
[mysqld]
wsrep_provider=/usr/lib64/galera3/libgalera_smm.so
wsrep_cluster_name=pxc-cluster
wsrep_cluster_address=gcomm://10.20.30.10,10.20.30.20,10.20.30.30
wsrep_node_name=pxc3
wsrep_node_address=10.20.30.30
wsrep_sst_method=xtrabackup-v2
wsrep_sst_auth=sstuser:passw0rd
pxc_strict_mode=ENFORCING
binlog_format=ROW
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2
basedir = /usr
datadir = /var/lib/mysql
pid-file=/var/run/mysqld/mysqld_galera.pid
log-error=/var/log/mysqld_galera.log
port = 3306
user = mysql
socket = /var/lib/mysql/mysql.sock
skip-external-locking
max_allowed_packet = 1M
table_open_cache = 4
sort_buffer_size = 64K
read_buffer_size = 256K
net_buffer_length = 2K
read_buffer_size = 256K
net_buffer_length = 2K
thread_stack = 256K
max_connections = 1000
#log-bin = /mysql_log_57/galera-bin
#servier-id = 1000
檢視模組
[root@localhost ~]# ll /usr/lib64/galera3/libgalera_smm.so
-rwxr-xr-x. 1 root root 2404960 May 31 23:07 /usr/lib64/galera3/libgalera_smm.so
3. 在第一個節點上初始化叢集
這個節點必須包含全部的資料,作為叢集的資料來源。
在第一個節點上執行下面操作
[root@localhost mysql_log_57]# /etc/init.d/mysql bootstrap-pxc
Starting MySQL (Percona XtraDB Cluster)..... SUCCESS!
檢視叢集狀態
[root@localhost mysql_log_57]# mysql -uroot -p
mysql> show status like 'wsrep%';
| wsrep_local_state_comment | Synced | // 節點是同步狀態
| wsrep_cluster_size | 1 | // 叢集只有一個節點
| wsrep_cluster_status | Primary | // 主節點
| wsrep_connected | ON | // 已經連線到叢集
| wsrep_ready | ON | // 已經做好寫集合的複製準備
在增加其他節點到叢集中前,建立SST的資料庫使用者。這個賬戶必須和配置檔案中的資訊相符。
mysql> CREATE USER 'sstuser'@'localhost' IDENTIFIED BY 'passw0rd';
Query OK, 0 rows affected (0.02 sec)
mysql> GRANT RELOAD, LOCK TABLES, PROCESS, REPLICATION CLIENT ON *.* TO
-> 'sstuser'@'localhost';
Query OK, 0 rows affected (0.00 sec)
4. 增加其他節點到叢集中
當配置好wsrep_cluster_address等配置檔案後,啟動該節點,它會自動加入叢集並開始同步資料。
注意:不要在相同時間加入多個節點到叢集中,以避免巨大的網路流量壓力。
預設,Percona XtraDB叢集使用Percona XtraBackup來傳輸狀態快照 State Snapshot Transfer (SST)。
需要滿足下麵條件:
設定wsrep_sst_method引數為xtrabackup-v2,並使用wsrep_sst_auth變數提供SST使用者認證。
在初始化節點上面建立SST使用者。
啟動第2個節點
[root@localhost ~]# /etc/init.d/mysql start
在第2個節點上,檢視使用者和叢集狀態
可以看到SST使用者已經複製到第2節點,叢集已經有了兩個節點,size變為2
mysql> select user, host from mysql.user;
+-----------+-----------+
| user | host |
+-----------+-----------+
| mysql.sys | localhost |
| root | localhost |
| sstuser | localhost |
+-----------+-----------+
3 rows in set (0.01 sec)
mysql> show status like 'wsrep%';
| wsrep_local_state_comment | Synced |
| wsrep_cluster_size | 2 |
增加第3個節點到叢集中
[root@localhost ~]# /etc/init.d/mysql start
在第3個節點檢查叢集的狀態
mysql> show status like 'wsrep%';
| wsrep_cluster_size | 3 |
可以看到叢集的wsrep_cluster_size引數變為3,叢集增加到第3個節點
5. 驗證複製效果
在第2個節點上建立一個資料庫
mysql> CREATE DATABASE percona;
Query OK, 1 row affected (0.07 sec)
在第3個節點上,在剛剛建立的庫裡面建立一張表
mysql> USE percona;
Database changed
mysql> CREATE TABLE example (node_id INT PRIMARY KEY, node_name VARCHAR(30));
Query OK, 0 rows affected (0.05 sec)
在第1個節點上,往這張表中插入一條資料
mysql> INSERT INTO percona.example VALUES (1, 'percona1');
Query OK, 1 row affected (0.23 sec)
mysql> commit;
Query OK, 0 rows affected (0.00 sec)
在第2個節點檢視這張表中的資料
mysql> SELECT * FROM percona.example;
+---------+-----------+
| node_id | node_name |
+---------+-----------+
| 1 | percona1 |
+---------+-----------+
1 row in set (0.00 sec)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26506993/viewspace-2142261/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- mysql之 Percona XtraDB Cluster叢集執行緒模型MySql執行緒模型
- 基於Docker搭建Percona XtraDB Cluster資料庫叢集Docker資料庫
- PXC(Percona-XtraDB-Cluster)5.7版本叢集安裝和使用初探
- Percona XtraDB Cluster 的一些使用限制(PXC 5.7)
- docker-compose搭建percona-xtradb-cluster8.0Docker
- MySQL Galera cluster叢集常用引數說明MySql
- Percona XtraDB Cluster高可用與狀態快照傳輸(PXC 5.7 )
- MySQL 5.7 叢集搭建MySql
- Percona XtraDB Cluster之流量控制
- MySQL高可用方案-PXC(Percona XtraDB Cluster)環境部署詳解MySql
- PXC(Percona XtraDB Cluster)的缺點介紹
- 搭建redis cluster叢集Redis
- 9. MySQL Galera Cluster全解析 Part 9 監控Galera ClusterMySql
- 7. MySQL Galera Cluster全解析 Part 7 Galera Cluster部署指南MySql
- 1. MySQL Galera Cluster全解析 Part 1 Galera Cluster 簡介MySql
- MySQL Galera Cluster全解析 Part 4 Galera Cluster 安裝前準備MySql
- 6. MySQL Galera Cluster全解析 Part 6 Galera Cluster引數設定MySql
- 5. MySQL Galera Cluster全解析 Part 5 Galera Cluster軟體安裝MySql
- 8. MySQL Galera Cluster全解析 Part 8 Galera Cluster和傳統MySQL的不同點MySql
- Docker Redis 5.0 叢集(cluster)搭建DockerRedis
- MySQL高可用之GC-Galera Cluster for MySQLMySqlGC
- 在wildfly 21中搭建cluster叢集
- Redis-cluster叢集搭建部署Redis
- 基於Centos7.x 搭建MySQL Galera Cluster高可用架構CentOSMySql架構
- mysql叢集搭建MySql
- 基於Centos7部署Percona Xtradb Cluster高可用架構CentOS架構
- MySQL高可用之MGC--MariaDB Galera ClusterMySqlGC
- MySQL MGR 叢集搭建MySql
- docker搭建mysql叢集DockerMySql
- 在滴滴雲上搭建 Redis-Cluster 叢集Redis
- Redis Cluster 叢集搭建與擴容、縮容Redis
- Redis cluster 叢集Redis
- Redis Cluster(叢集)Redis
- node叢集(cluster)
- 藉助 TCP 負載均衡和 Galera 叢集擴充套件 MySQLTCP負載套件MySql
- MySQL叢集搭建方案(PXC)MySql
- mysql8叢集搭建MySql
- redis偽叢集配置Cluster叢集模式Redis模式
- 搭建分散式 Redis Cluster 叢集與 Redis 入門分散式Redis