Percona XtraDB Cluster 5.6安装配置

环境介绍:

操作系统版本:CentOS-6.5-x86_64-minimal.iso 

数据库版本:Percona-Server-5.6.15-rel63.0.tar

192.168.3.81           node1  (1核1G)

192.168.3.82           node2  (1核1G)

192.168.3.83           node3  (1核1G)

1.安装 Percona mysql(所有节点安装)

//源

rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
wget http://www.percona.com/downloads/percona-release/percona-release-0.0-1.x86_64.rpm && rpm -ivh percona-release-0.0-1.x86_64.rpm

//基础包

yum install socat -y
//Percona mysql软件包
yum install Percona-Server-shared-56 Percona-Server-client-56 Percona-Server-server-56  -y

2.Percona mysql配置文件修改

2.1配置 /etc/my.cnf,(所有节点安装):

vim /etc/my.cnf
[mysqld]
innodb_buffer_pool_size = 1024M      //innodb_buffer_pool_size内存的80%
datadir = /data/mysql
port = 3306
server_id = 81                        //server_id必须要不一样
socket = /tmp/mysql.sock
log-bin=mysql-bin
expire_logs_days = 10
sort_buffer_size = 1M
join_buffer_size = 1M
query_cache_size = 512M
query_cache_limit = 2M
query_cache_min_res_unit = 2k
thread_stack = 192K
tmp_table_size = 246M
max_heap_table_size = 246M
key_buffer_size = 300M
read_buffer_size = 1M
read_rnd_buffer_size = 16M
bulk_insert_buffer_size = 64M
slow_query_log = 1
log-error = /data/mysql/log/error.log
long_query_time = 2
log-queries-not-using-indexes = ON
slow_query_log_file = /data/mysql/log/slowquery.log
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
general_log                    = 1                                    //数据库执行日志开关,一般不打开
general_log_file               = /data/mysql/log/mysql-general.log //数据库执行日志文件,一般不打开

2.2创建所需目录,(所有节点安装):

mkdir -p /data/mysql/log
chown mysql:mysql /data/mysql/log

2.3 初始化数据库,(所有节点安装):

mysql_install_db --user=mysql --datadir=/data/mysql
/etc/init.d/mysql start
mysqladmin -u root password '123456' -S  /tmp/mysql.sock  //首次修改mysql密码

2.4. 删除原有软件包,(所有节点安装):

因为XtraDB Cluster的软件包与原有软件包冲突:

Error: Percona-XtraDB-Cluster-shared-56 conflicts with Percona-Server-shared-56-5.6.23-rel72.1.el6.x86_64
Error: Percona-XtraDB-Cluster-server-56 conflicts with Percona-Server-server-56-5.6.23-rel72.1.el6.x86_64
/etc/init.d/mysql stop

//解决方法:

rpm -qa | grep Percona-Server | grep -v compat |xargs  rpm -e --nodeps

3.安装Percona XtraDB Cluster 5.6 (所有节点安装)

//Percona cluster软件包
yum install Percona-XtraDB-Cluster-server-56 Percona-XtraDB-Cluster-client-56 Percona-XtraDB-Cluster-galera-3 -y

4. XtraDB Cluster配置文件修改

4.1添加 XtraDB Cluster 的支持,(所有节点安装)

vim /etc/my.cnf
在[mysqld]模块下面增加下面内容:

# xtradb cluster settings
binlog_format = ROW
wsrep_cluster_name = PXC
wsrep_cluster_address = gcomm://192.168.3.81,192.168.3.82,192.168.3.83
wsrep_node_address = 192.168.3.81  //注意,每台服务器需要将 wsrep_node_address 设置为本机的IP地址或主机名。
wsrep_provider = /usr/lib64/libgalera_smm.so
wsrep_sst_method = rsync
innodb_locks_unsafe_for_binlog = 1
innodb_autoinc_lock_mode = 2
default_storage_engine=InnoDB

5. 初始化第一个Node:

service mysql bootstrap-pxc //第一个节点才使用
mysql> show global status like 'wsrep%';
+------------------------------+--------------------------------------+
| Variable_name                | Value                                |
+------------------------------+--------------------------------------+
| wsrep_local_state_uuid       | fdfec3ab-d9e8-11e4-94aa-ae45256a81fb |
| wsrep_protocol_version       | 7                                    |
| wsrep_last_committed         | 2                                    |
| wsrep_replicated             | 0                                    |
| wsrep_replicated_bytes       | 0                                    |
| wsrep_repl_keys              | 0                                    |
| wsrep_repl_keys_bytes        | 0                                    |
| wsrep_repl_data_bytes        | 0                                    |
| wsrep_repl_other_bytes       | 0                                    |
| wsrep_received               | 2                                    |
| wsrep_received_bytes         | 141                                  |
| wsrep_local_commits          | 0                                    |
| wsrep_local_cert_failures    | 0                                    |
| wsrep_local_replays          | 0                                    |
| wsrep_local_send_queue       | 0                                    |
| wsrep_local_send_queue_max   | 1                                    |
| wsrep_local_send_queue_min   | 0                                    |
| wsrep_local_send_queue_avg   | 0.000000                             |
| wsrep_local_recv_queue       | 0                                    |
| wsrep_local_recv_queue_max   | 1                                    |
| wsrep_local_recv_queue_min   | 0                                    |
| wsrep_local_recv_queue_avg   | 0.000000                             |
| wsrep_local_cached_downto    | 0                                    |
| wsrep_flow_control_paused_ns | 0                                    |
| wsrep_flow_control_paused    | 0.000000                             |
| wsrep_flow_control_sent      | 0                                    |
| wsrep_flow_control_recv      | 0                                    |
| wsrep_cert_deps_distance     | 0.000000                             |
| wsrep_apply_oooe             | 0.000000                             |
| wsrep_apply_oool             | 0.000000                             |
| wsrep_apply_window           | 0.000000                             |
| wsrep_commit_oooe            | 0.000000                             |
| wsrep_commit_oool            | 0.000000                             |
| wsrep_commit_window          | 0.000000                             |
| wsrep_local_state            | 4                                    |
| wsrep_local_state_comment    | Synced                               |
| wsrep_cert_index_size        | 0                                    |
| wsrep_causal_reads           | 0                                    |
| wsrep_cert_interval          | 0.000000                             |
| wsrep_incoming_addresses     | 192.168.3.81:3306                    |
| wsrep_evs_delayed            |                                      |
| wsrep_evs_evict_list         |                                      |
| wsrep_evs_repl_latency       | 0/0/0/0/0                            |
| wsrep_evs_state              | OPERATIONAL                          |
| wsrep_gcomm_uuid             | 597ae492-dcc6-11e4-ba30-e6dfd92be1c6 |
| wsrep_cluster_conf_id        | 1                                    |
| wsrep_cluster_size           | 1                                    |
| wsrep_cluster_state_uuid     | fdfec3ab-d9e8-11e4-94aa-ae45256a81fb |
| wsrep_cluster_status         | Primary                              |
| wsrep_connected              | ON                                   |
| wsrep_local_bf_aborts        | 0                                    |
| wsrep_local_index            | 0                                    |
| wsrep_provider_name          | Galera                               |
| wsrep_provider_vendor        | Codership Oy     |
| wsrep_provider_version       | 3.9(r93aca2d)                        |
| wsrep_ready                  | ON                                   |
+------------------------------+--------------------------------------+
56 rows in set (0.00 sec)
参数 "wsrep_cluster_size" 为 1,因为目前Cluster中只有一个Node。
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| log                |
| mysql              |
| performance_schema |
| test               |
+--------------------+
5 rows in set (0.00 sec)

mysql> create database liu;
Query OK, 1 row affected (0.00 sec)

mysql> use liu
Database changed
mysql> create table liu01 (id int,name char(4));
Query OK, 0 rows affected (0.05 sec)

mysql> show tables;
+---------------+
| Tables_in_liu |
+---------------+
| liu01         |
+---------------+
1 row in set (0.01 sec)

6.添加新的 Node 到Cluster中:

service mysql start
[root@M1905 mysql]# mysql -u root -p123456 -S /tmp/mysql.sock 
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| liu                |
| log                |
| mysql              |
| performance_schema |
| test               |
+--------------------+
6 rows in set (0.00 sec)

mysql> use liu
Database changed
mysql> show tables;
+---------------+
| Tables_in_liu |
+---------------+
| liu01         |
+---------------+
1 row in set (0.00 sec)
查看Cluster的状态:
mysql> show global status like 'wsrep%';
+------------------------------+--------------------------------------+
| Variable_name                | Value                                |
+------------------------------+--------------------------------------+
| wsrep_local_state_uuid       | fdfec3ab-d9e8-11e4-94aa-ae45256a81fb |
| wsrep_protocol_version       | 7                                    |
| wsrep_last_committed         | 7                                    |
| wsrep_replicated             | 0                                    |
| wsrep_replicated_bytes       | 0                                    |
| wsrep_repl_keys              | 0                                    |
| wsrep_repl_keys_bytes        | 0                                    |
| wsrep_repl_data_bytes        | 0                                    |
| wsrep_repl_other_bytes       | 0                                    |
| wsrep_received               | 4                                    |
| wsrep_received_bytes         | 510                                  |
| wsrep_local_commits          | 0                                    |
| wsrep_local_cert_failures    | 0                                    |
| wsrep_local_replays          | 0                                    |
| wsrep_local_send_queue       | 0                                    |
| wsrep_local_send_queue_max   | 1                                    |
| wsrep_local_send_queue_min   | 0                                    |
| wsrep_local_send_queue_avg   | 0.000000                             |
| wsrep_local_recv_queue       | 0                                    |
| wsrep_local_recv_queue_max   | 1                                    |
| wsrep_local_recv_queue_min   | 0                                    |
| wsrep_local_recv_queue_avg   | 0.000000                             |
| wsrep_local_cached_downto    | 7                                    |
| wsrep_flow_control_paused_ns | 0                                    |
| wsrep_flow_control_paused    | 0.000000                             |
| wsrep_flow_control_sent      | 0                                    |
| wsrep_flow_control_recv      | 0                                    |
| wsrep_cert_deps_distance     | 1.000000                             |
| wsrep_apply_oooe             | 0.000000                             |
| wsrep_apply_oool             | 0.000000                             |
| wsrep_apply_window           | 1.000000                             |
| wsrep_commit_oooe            | 0.000000                             |
| wsrep_commit_oool            | 0.000000                             |
| wsrep_commit_window          | 1.000000                             |
| wsrep_local_state            | 4                                    |
| wsrep_local_state_comment    | Synced                               |
| wsrep_cert_index_size        | 3                                    |
| wsrep_causal_reads           | 0                                    |
| wsrep_cert_interval          | 0.000000                             |
| wsrep_incoming_addresses     | 192.168.3.82:3306,192.168.3.81:3306  |
| wsrep_evs_delayed            |                                      |
| wsrep_evs_evict_list         |                                      |
| wsrep_evs_repl_latency       | 0/0/0/0/0                            |
| wsrep_evs_state              | OPERATIONAL                          |
| wsrep_gcomm_uuid             | 16e598fb-dccb-11e4-9ca9-cb37e03eb618 |
| wsrep_cluster_conf_id        | 2                                    |
| wsrep_cluster_size           | 2                                    |
| wsrep_cluster_state_uuid     | fdfec3ab-d9e8-11e4-94aa-ae45256a81fb |
| wsrep_cluster_status         | Primary                              |
| wsrep_connected              | ON                                   |
| wsrep_local_bf_aborts        | 0                                    |
| wsrep_local_index            | 0                                    |
| wsrep_provider_name          | Galera                               |
| wsrep_provider_vendor        | Codership Oy     |
| wsrep_provider_version       | 3.9(r93aca2d)                        |
| wsrep_ready                  | ON                                   |
+------------------------------+--------------------------------------+
56 rows in set (0.00 sec)
参数 "wsrep_cluster_size" 变为了 2。
下面,就可以按照同样的步骤,添加更多的节点到Cluster中了,在这个测试环境中,我们一共有3个Node。

7.测试Cluster功能

7.1模拟192.168.3.81节点1宕机

[root@M1905 ~]# service mysql stop
Shutting down MySQL (Percona XtraDB Cluster).... SUCCESS! 
[root@M1905 ~]# netstat -tunlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name   
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      809/sshd            
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      898/master    
mysql> show global status like 'wsrep%';  //在任意其它节的查看cluster状态
+------------------------------+---------------------------------------------------+
| Variable_name                | Value                                             |
+------------------------------+---------------------------------------------------+
| wsrep_local_state_uuid       | fdfec3ab-d9e8-11e4-94aa-ae45256a81fb              |
| wsrep_protocol_version       | 7                                                 |
| wsrep_last_committed         | 7                                                 |
| wsrep_replicated             | 0                                                 |
| wsrep_replicated_bytes       | 0                                                 |
| wsrep_repl_keys              | 0                                                 |
| wsrep_repl_keys_bytes        | 0                                                 |
| wsrep_repl_data_bytes        | 0                                                 |
| wsrep_repl_other_bytes       | 0                                                 |
| wsrep_received               | 4                                                 |
| wsrep_received_bytes         | 489                                               |
| wsrep_local_commits          | 0                                                 |
| wsrep_local_cert_failures    | 0                                                 |
| wsrep_local_replays          | 0                                                 |
| wsrep_local_send_queue       | 0                                                 |
| wsrep_local_send_queue_max   | 1                                                 |
| wsrep_local_send_queue_min   | 0                                                 |
| wsrep_local_send_queue_avg   | 0.000000                                          |
| wsrep_local_recv_queue       | 0                                                 |
| wsrep_local_recv_queue_max   | 1                                                 |
| wsrep_local_recv_queue_min   | 0                                                 |
| wsrep_local_recv_queue_avg   | 0.000000                                          |
| wsrep_local_cached_downto    | 0                                                 |
| wsrep_flow_control_paused_ns | 0                                                 |
| wsrep_flow_control_paused    | 0.000000                                          |
| wsrep_flow_control_sent      | 0                                                 |
| wsrep_flow_control_recv      | 0                                                 |
| wsrep_cert_deps_distance     | 0.000000                                          |
| wsrep_apply_oooe             | 0.000000                                          |
| wsrep_apply_oool             | 0.000000                                          |
| wsrep_apply_window           | 0.000000                                          |
| wsrep_commit_oooe            | 0.000000                                          |
| wsrep_commit_oool            | 0.000000                                          |
| wsrep_commit_window          | 0.000000                                          |
| wsrep_local_state            | 4                                                 |
| wsrep_local_state_comment    | Synced                                            |
| wsrep_cert_index_size        | 0                                                 |
| wsrep_causal_reads           | 0                                                 |
| wsrep_cert_interval          | 0.000000                                          |
| wsrep_incoming_addresses     | 192.168.3.82:3306,192.168.3.83:3306               |
| wsrep_evs_delayed            |                                                   |
| wsrep_evs_evict_list         |                                                   |
| wsrep_evs_repl_latency       | 0.000483336/0.000670287/0.000857238/0.000186951/2 |
| wsrep_evs_state              | OPERATIONAL                                       |
| wsrep_gcomm_uuid             | 6c70c34d-dccd-11e4-a9fd-a30f91414348              |
| wsrep_cluster_conf_id        | 4                                                 |
| wsrep_cluster_size           | 2                                                 |
| wsrep_cluster_state_uuid     | fdfec3ab-d9e8-11e4-94aa-ae45256a81fb              |
| wsrep_cluster_status         | Primary                                           |
| wsrep_connected              | ON                                                |
| wsrep_local_bf_aborts        | 0                                                 |
| wsrep_local_index            | 1                                                 |
| wsrep_provider_name          | Galera                                            |
| wsrep_provider_vendor        | Codership Oy                  |
| wsrep_provider_version       | 3.9(r93aca2d)                                     |
| wsrep_ready                  | ON                                                |
+------------------------------+---------------------------------------------------+
56 rows in set (0.00 sec)
#发现wsrep_incoming_addresses的192.168.3.81:3306不存在,并且wsrep_cluster_size 可用节点为2.

7.2在192.168.3.83节点3上面插入新数据

mysql> select * from liu01;
+------+------+
| id   | name |
+------+------+
|    1 | aa   |
+------+------+
1 row in set (0.00 sec)

mysql> insert into liu01 values(2,'bb');
Query OK, 1 row affected (0.02 sec)

mysql> select * from liu01;
+------+------+
| id   | name |
+------+------+
|    1 | aa   |
|    2 | bb   |
+------+------+
2 rows in set (0.00 sec)

7.3恢复192.168.3.81节点1mysql服务,及查询节点3数据是否正常。

[root@M1905 ~]# service mysql start
Starting MySQL (Percona XtraDB Cluster)...State transfer in progress, setting sleep higher
. SUCCESS! 
[root@M1905 ~]# mysql -u root -p123456 -S /tmp/mysql.sock 

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| liu                |
| log                |
| mysql              |
| performance_schema |
| test               |
+--------------------+
6 rows in set (0.00 sec)

mysql> use liu

Database changed
mysql> select * from liu01;
+------+------+
| id   | name |
+------+------+
|    1 | aa   |
|    2 | bb   |
+------+------+
2 rows in set (0.00 sec)
mysql> show global status like 'wsrep%';
+------------------------------+-------------------------------------------------------+
| Variable_name                | Value                                                 |
+------------------------------+-------------------------------------------------------+
| wsrep_local_state_uuid       | fdfec3ab-d9e8-11e4-94aa-ae45256a81fb                  |
| wsrep_protocol_version       | 7                                                     |
| wsrep_last_committed         | 8                                                     |
| wsrep_replicated             | 0                                                     |
| wsrep_replicated_bytes       | 0                                                     |
| wsrep_repl_keys              | 0                                                     |
| wsrep_repl_keys_bytes        | 0                                                     |
| wsrep_repl_data_bytes        | 0                                                     |
| wsrep_repl_other_bytes       | 0                                                     |
| wsrep_received               | 3                                                     |
| wsrep_received_bytes         | 287                                                   |
| wsrep_local_commits          | 0                                                     |
| wsrep_local_cert_failures    | 0                                                     |
| wsrep_local_replays          | 0                                                     |
| wsrep_local_send_queue       | 0                                                     |
| wsrep_local_send_queue_max   | 1                                                     |
| wsrep_local_send_queue_min   | 0                                                     |
| wsrep_local_send_queue_avg   | 0.000000                                              |
| wsrep_local_recv_queue       | 0                                                     |
| wsrep_local_recv_queue_max   | 1                                                     |
| wsrep_local_recv_queue_min   | 0                                                     |
| wsrep_local_recv_queue_avg   | 0.000000                                              |
| wsrep_local_cached_downto    | 0                                                     |
| wsrep_flow_control_paused_ns | 0                                                     |
| wsrep_flow_control_paused    | 0.000000                                              |
| wsrep_flow_control_sent      | 0                                                     |
| wsrep_flow_control_recv      | 0                                                     |
| wsrep_cert_deps_distance     | 0.000000                                              |
| wsrep_apply_oooe             | 0.000000                                              |
| wsrep_apply_oool             | 0.000000                                              |
| wsrep_apply_window           | 1.000000                                              |
| wsrep_commit_oooe            | 0.000000                                              |
| wsrep_commit_oool            | 0.000000                                              |
| wsrep_commit_window          | 1.000000                                              |
| wsrep_local_state            | 4                                                     |
| wsrep_local_state_comment    | Synced                                                |
| wsrep_cert_index_size        | 0                                                     |
| wsrep_causal_reads           | 0                                                     |
| wsrep_cert_interval          | 0.000000                                              |
| wsrep_incoming_addresses     | 192.168.3.82:3306,192.168.3.81:3306,192.168.3.83:3306 |
| wsrep_evs_delayed            |                                                       |
| wsrep_evs_evict_list         |                                                       |
| wsrep_evs_repl_latency       | 0/0/0/0/0                                             |
| wsrep_evs_state              | OPERATIONAL                                           |
| wsrep_gcomm_uuid             | 4be90b42-dccf-11e4-83f4-5238aff4e818                  |
| wsrep_cluster_conf_id        | 5                                                     |
| wsrep_cluster_size           | 3                                                     |
| wsrep_cluster_state_uuid     | fdfec3ab-d9e8-11e4-94aa-ae45256a81fb                  |
| wsrep_cluster_status         | Primary                                               |
| wsrep_connected              | ON                                                    |
| wsrep_local_bf_aborts        | 0                                                     |
| wsrep_local_index            | 1                                                     |
| wsrep_provider_name          | Galera                                                |
| wsrep_provider_vendor        | Codership Oy                      |
| wsrep_provider_version       | 3.9(r93aca2d)                                         |
| wsrep_ready                  | ON                                                    |
+------------------------------+-------------------------------------------------------+
56 rows in set (0.00 sec)
#发现wsrep_incoming_addresses的192.168.3.81:3306已经存在,并且wsrep_cluster_size 可用节点为3.

8.以下是对 "Percona XtraDB Cluster" 功能测试的总结:

 //感觉cluster的高可用增加删除节点很方便,自动切换故障,如果能配合atlas做读写分离就完美了,但是经过测试,cluster写性能真的不咋的,如果对写要求不高,还是不错的选择。

最后还是要感谢群里老郭写的博客,让我从开始不熟悉cluster,然后后面完整地搭建出来,并进行性能测试。