Percona-XtraDB-Cluster安装

说明

与内置的MySQL存储引擎相比,XtraDB提供了一些极大的改进,但它不是一款独立产品,也无法轻松放入现有MySQL安装。因此,如果您想使用这款新引擎,则必须使用提供它的产品。

Percona Server就是这样一款产品,由领先的MySQL咨询公司Percona发布。Percona Server是一款独立的数据库产品,为用户提供了换出其MySQL安装并换入Percona Server产品的能力。通过这样做,就可以利用XtraDB存储引擎。Percona Server声称可以完全与MySQL兼容,因此从理论上讲,您无需更改软件中的任何代码。这确实是一个很大的优势,适合在您寻找快速性能改进时控制质量。因此,采用Percona Server的一个很好的理由是,利用XtraDB引擎来尽可能地减少代码更改。

安装步骤

ip1:
10.210.6.111
ip2:
10.210.108.72
ip3:
10.210.84.31

安装依赖包

$ yum -y install gcc gcc-c++ ncurses ncurses-devel

$ yum install Percona-XtraDB-Cluster-galera-3-3.9-1.3494.rhel6.x86_64

$ yum -y install perl-Time-HiRes
$ yum install http://www.percona.com/downloads/percona-release/redhat/0.1-3/percona-release-0.1-3.noarch.rpm

以上2步需要用到的sst模式为xtrabackup模式安装,我这里安装这个模式的时候有问题,一直没有解决。

下载相应源码包

$ wget http://www.cmake.org/files/v2.8/cmake-2.8.11.2.tar.gz
$ wget wget http://www.percona.com/downloads/Percona-XtraDB-Cluster-56/release-5.6.15-25.5/source/Percona-XtraDB-Cluster-5.6.15.tar.gz

cmake安装

$ tar xzf cmake-2.8.11.2.tar.gz
$ cd cmake-2.8.11.2
$ ./configure
$ make && make install
$ cd ..

Percona 5.5预编译

$ tar xvf Percona-XtraDB-Cluster-5.6.15.tar.gz
$ cd Percona-XtraDB-Cluster-5.6.15
$ useradd -M -s /sbin/nologin mysql
$ mkdir -p /data/percona
$ chown mysql.mysql -R /data/percona
$ yum install bison.x86_64 bison-devel.x86_64
$ cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/percona \
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock \
-DMYSQL_DATADIR=/data/percona \
-DSYSCONFDIR=/etc \
-DMYSQL_TCP_PORT=3306 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DENABLED_LOCAL_INFILE=1 \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS=all

编译安装

$ make && make install

设置开机自启动

$ cp support-files/mysql.server /etc/init.d/mysqld
$ chmod +x /etc/init.d/mysqld
$ chkconfig –add mysqld
$ chkconfig mysqld on

初始化数据库,设置环境变量

$ /usr/local/percona/scripts/mysql_install_db –user=mysql –basedir=/usr/local/percona –datadir=/data/percona

$ chown mysql.mysql -R /data/percona
$ export PATH=$PATH:/usr/local/percona/bin
$ echo “export PATH=\$PATH:/usr/local/percona/bin” >> /etc/profile
$ . /etc/profile

节点1配置

Configuration file /etc/my.cnf for the first node should look like:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
[mysqld]
datadir=/data/percona
user=mysql
# Path to Galera library
wsrep_provider=/usr/lib64/libgalera_smm.so
# Cluster connection URL contains the IPs of node#1, node#2 and node#3
wsrep_cluster_address=gcomm://10.210.6.111,10.210.108.72,10.210.84.31
# In order for Galera to work correctly binlog format should be ROW
binlog_format=ROW
# MyISAM storage engine has only experimental support
default_storage_engine=InnoDB
# This changes how InnoDB autoincrement locks are managed and is a requirement for Galera
innodb_autoinc_lock_mode=2
# Node #1 address
wsrep_node_address=10.210.6.111
# SST method
wsrep_sst_method=rsync
# Cluster name
wsrep_cluster_name=my_centos_cluster
# Authentication for SST method
wsrep_sst_auth=”sstuser:s3cret”

初始化:

$ cd /usr/local/percona/scripts
$ ./mysql_install_db –basedir=/usr/local/percona –datadir=/data/percona –user=mysql
$ mkdir -p /var/run/mysqld
$ chmod -R 766 /var/run/mysqld

启动mysql:

$ ./bin/mysqld_safe –defaults-file=/etc/my.cnf –wsrep-cluster-address=”gcomm://” &

创建SST用户和进行相应的授权:

$ mysql -u root
1
2
3
DELETE FROM mysql.user WHERE user=”;
GRANT RELOAD, LOCK TABLES, REPLICATION CLIENT ON *.* TO ‘sstuser’@’localhost’ IDENTIFIED BY ‘s3cret’;
FLUSH PRIVILEGES;

节点2配置

Configuration file /etc/my.cnf on the second node (percona2) should look like this:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
[mysqld]
datadir=/data/percona
user=mysql
# Path to Galera library
wsrep_provider=/usr/lib64/libgalera_smm.so
# Cluster connection URL contains IPs of node#1, node#2 and node#3
wsrep_cluster_address=gcomm://10.210.6.111,10.210.108.72,10.210.84.31
# In order for Galera to work correctly binlog format should be ROW
binlog_format=ROW
# MyISAM storage engine has only experimental support
default_storage_engine=InnoDB
# This changes how InnoDB autoincrement locks are managed and is a requirement for Galera
innodb_autoinc_lock_mode=2
# Node #2 address
wsrep_node_address=10.210.108.72
# Cluster name
wsrep_cluster_name=my_centos_cluster
# SST method
wsrep_sst_method=rsync
#Authentication for SST method
wsrep_sst_auth=”sstuser:s3cret”

初始化:

$ cd /usr/local/percona/scripts
$ ./mysql_install_db –basedir=/usr/local/percona –datadir=/data/percona –user=mysql
$ mkdir -p /var/run/mysqld
$ chmod -R 766 /var/run/mysqld

启动mysql:

$ ./bin/mysqld_safe –defaults-file=/etc/my.cnf &

节点3配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
[mysqld]
datadir=/data/percona
user=mysql
# Path to Galera library
wsrep_provider=/usr/lib64/libgalera_smm.so
# Cluster connection URL contains IPs of node#1, node#2 and node#3
wsrep_cluster_address=gcomm://10.210.6.111,10.210.108.72,10.210.84.31
# In order for Galera to work correctly binlog format should be ROW
binlog_format=ROW
# MyISAM storage engine has only experimental support
default_storage_engine=InnoDB
# This changes how InnoDB autoincrement locks are managed and is a requirement for Galera
innodb_autoinc_lock_mode=2
# Node #2 address
wsrep_node_address=10.210.84.31
# Cluster name
wsrep_cluster_name=my_centos_cluster
# SST method
wsrep_sst_method=rsync
#Authentication for SST method
wsrep_sst_auth=”sstuser:s3cret”

初始化:

$ cd /usr/local/percona/scripts
$ ./mysql_install_db –basedir=/usr/local/percona –datadir=/data/percona –user=mysql
$ mkdir -p /var/run/mysqld
$ chmod -R 766 /var/run/mysqld

启动mysql

$ ./bin/mysqld_safe –defaults-file=/etc/my.cnf &
1
2
3
CREATE USER ‘sstuser’@’localhost’ IDENTIFIED BY ‘s3cret’;
GRANT RELOAD, LOCK TABLES, REPLICATION CLIENT ON *.* TO ‘sstuser’@’localhost’;
FLUSH PRIVILEGES;

查看集群状态

1
show status like ‘wsrep%’;

同步数据

$ ./bin/mysqld –tc-heuristic-recover commit