Установка Percona XtraDB Cluster

Установка Percona XtraDB Cluster

Percona XtraDB Cluster (PXC) является кластером с высокой доступностью и высокой масштабируемостью, решение для MySQL кластеризации. Percona сервера, Percona XtraBackup и Galera library служит для обеспечения высокой доступности объединеных друг с другом серверов, как PXC. Это обеспечивает синхронную, Multi-Master и параллельную репликации. Все узлы (nodes) этого кластера готовы работать и отвечать на запросы чтение / запись одновременно. Сейчас, я хотел бы написать данную статью «Установка Percona XtraDB Cluster» в виде заметки.

ВМ используется для тестирования. Здесь я использовал 1 виртуальную машину с ОС — CentOS и 2 виртуальной машины с Ubuntu. В реальном мире не смешивайте различные ОС в кластер. Это только для тестовых целей. Все узлы должны быть с единой ОС и той же конфигурации аппаратных средств / программного обеспечения.

И так, у меня имеется:

3 lines
CentOS19 ······ 97.79.237.19·········· node1
CentOS16 ······ 97.79.237.16·········· node2
Ubuntu17 ······ 97.79.237.17·········· node3

Добавление репозитория для необходимой ОС.

Проверим какая у нас разрядность:

# uname -a

Centos/Redhat 32 бит (i386):

Centos/Redhat 64 бит (x86_x64):

Установка PXC (кластера на перкона):

Иногда требуется установка socat.
Для начала подключаем репозиторий EPEL и после чего выполняем:

2 lines
socat
Percona-XtraDB-Cluster-56

Проверим работает ли mysql:

# ps -ef | grep mysql

root     22706 19675  0 08:17 pts/0    00:00:00 grep mysql

Так же можно установить на Debian/Ubuntu:

1. Способ.
Для начала добавляем клюк с репозиторием:

$ sudo apt-key adv --keyserver keys.gnupg.net --recv-keys 1C4CBDCDCD2EFD2A

Нужно добавить в файл /etc/apt/sources.list репозиторий:

# vim·/etc/apt/sources.list

Добавляем:

4 lines
[...]
deb http://repo.percona.com/apt raring main
deb-src http://repo.percona.com/apt raring main
[...]

Обновляем локальный кеш:

$ sudo apt-get update

Устанавливаем PXC:

percona-xtradb-cluster-56

Проверяем:

$ ps -ef | grep mysql

2. Способ.
Скачиваем готовые пакеты:

2 lines
# cd /usr/local/src
# wget·http://www.percona.com/redir/downloads/percona-release/debian/percona-release_0.1-3.squeeze_all.deb

или

# wget·http://www.percona.com/redir/downloads/percona-release/debian/percona-release_0.1-3.wheezy_all.deb

После чего устанавливаем. Мне на данный момент не сильно это нужно было, по этому я рассказал и собрал материал в кучу ( если понадобится попозже, я переделаю и дополню данную статью). Если есть вопросы, пишите, я попробую помочь.

MySQL Config: node1

5 lines
[root@Centos19 ~]# mysql -uroot -p
mysql@percona1> CREATE USER 'sstuser'@'localhost' IDENTIFIED BY 'your_passwd_for_user_sstuser';
mysql@percona1> GRANT RELOAD, LOCK TABLES, REPLICATION CLIENT ON *.* TO 'sstuser'@'localhost';
mysql@percona1> FLUSH PRIVILEGES;

и

34 lines
[root@Centos19 ~]# vim·/etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
user=mysql
# Path to Galera library
wsrep_provider=/usr/lib64/libgalera_smm.so
#wsrep_cluster_address = gcomm://97.79.237.19,97.79.237.16,97.79.237.17
wsrep_cluster_address = gcomm://
#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=97.79.237.19
# SST method
wsrep_sst_method=xtrabackup-v2
# Cluster name
wsrep_cluster_name=PXC
# Authentication for SST method
wsrep_sst_auth="sstuser:your_passwd_for_user_sstuser"

wsrep_cluster_address = gcomm:// — это строка, которая говорит нам что мы пытаемся создать кластер и 1-й инодой, потом мы добавим еще другие ноды. Но для начала нужно именно так!

wsrep_provider = /usr/lib/libgalera_smm.so — это путь где лежит библиотека для 32 битной ОС

wsrep_provider = /usr/lib64/libgalera_smm.so — это путь где лежит библиотека для 64 битной ОС

По этому в зависимости от розрядности вашей ОС поправьте путь, у меня х64 бит.

Начальная загрузка кластера:

[root@Centos19 ~]# /etc/init.d/mysql bootstrap-pxc

запуск node на percona cluster

mysql> show global status like '%wsrep_cluster%';

MySQL Config: node2

root@CentOS16:~# vim·/etc/my.cnf

Прописываем:

32 lines
# Percona Cluster config file
[mysqld]
datadir=/var/lib/mysql
user=mysql
# Cluster name
wsrep_cluster_name = PXC
# Path to Galera library
wsrep_provider = /usr/lib64/libgalera_smm.so
wsrep_cluster_address = gcomm://97.79.237.19,97.79.237.16,97.79.237.17
# 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 = 97.79.237.16
# SST method
wsrep_sst_method=xtrabackup-v2
# Authentication for SST method
wsrep_sst_auth="sstuser:your_passwd_for_user_sstuser"

Запускаем Mysql в кластере:

root@CentOS16:~# /etc/init.d/mysql start

Выводим статус кластера:

2 lines
# mysql -uroot -p
mysql> show global status like '%wsrep_cluster%';

MySQL Config: node3

root@Ubuntu17:~# vim·/etc/mysql/my.cnf

Прописываем:

32 lines
# Percona Cluster config file
[mysqld]
datadir=/var/lib/mysql
user=mysql
# Cluster name
wsrep_cluster_name = PXC
# Path to Galera library
wsrep_provider = /usr/lib64/libgalera_smm.so
wsrep_cluster_address = gcomm://97.79.237.19,97.79.237.16,97.79.237.17
# 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 #3 address
wsrep_node_address = 97.79.237.17
# SST method
wsrep_sst_method=xtrabackup-v2
# Authentication for SST method
wsrep_sst_auth="sstuser:your_passwd_for_user_sstuser"

Запускаем кластер:

root@Ubuntu17:~# /etc/init.d/mysql start

Проверяем статус кластера:

mysql> show global status like '%wsrep_cluster%';

После этого, идем на node1 (самый первый сервер) и меняем строчку:

# vim /etc/my.cnf

Ищем:

wsrep_cluster_address = gcomm://

Меняем на:

wsrep_cluster_address = gcomm://97.79.237.19,97.79.237.16,97.79.237.17

После чего перезапускаем сервер с первой нодой:

# service mysql restart

Выполняем тест репликации:

3 lines
root@CentOS16:~# mysql -e "create database testing"
root@CentOS16:~# mysql -e "create table testing.city (id int, cname varchar(20));"

Проверим статус кластера и поглядим, работате ли все нормально:

[root@Centos19 ~]# mysql -e "show global status like '%wsrep_cluster%';"

[root@Centos19 ~]# mysql -e "select * from testing.city"

И должна вывести столбцы данной базы (testing).

Удаление Percona Cluster

Чтобы удалить перкону, стоит выполнить команду:

4 lines
# yum remove·Percona-XtraDB-Cluster*
# yum remove percona*
# yum remove mysql55w-libs

Приведенный выше пример показывает, что все узлы в кластерах синхронизированы и работают, как ожидается.

Вывод:

Percona XtraDB кластера является хорошим инструментом для обеспечения высокой нагрузки. Percona сервера, Percona XtraBackup и Galera Cluster объединены друг с другом. Выключите несколько узлов и посмотрите, как можно их восстановить.

Вот и все, я завершил «Установка Percona XtraDB Cluster», проверялось на 3 нодах с CentOS. Очень доволен данным кластером.

Было ли это полезно?

0 / 0