Mysql (часть 5). Установка и настройка Percona XtraDB Cluster

percona_xtradbcluster_newВ предыдущих статьях шла речь о настройка mysql репликации разных типов используя Percona mysql server. Была четкая схема с мастерами и слейвами и для каждого хоста назначалась и настраивалась конкретная роль и это была достаточно рутинная работа. Поднять mysql кластер можно в несколько раз быстрее используя такую вещь, как Percona XtraDB Cluster, о чем и пойдет речь в данной статье.

Создадим Percona XtraDB Cluster с трех серверов под управлением операционной системы Ubuntu 12.04.
Установка будет произведена из репозитория. Для начала, логинимся на первый сервер, добавляем ключик и репозитории.

root@pxc1:~#apt-key adv --keyserver keys.gnupg.net --recv-keys 1C4CBDCDCD2EFD2A
root@pxc1:~#vim /etc/apt/sources.list.d/pxe.list
…
deb http://repo.percona.com/apt precise main
deb-src http://repo.percona.com/apt precise main
...
root@pxc1:~#apt-get update

Теперь ставим непосредственно Percona XtraDB Cluster пакет.

root@pxc1:~#apt-get install percona-xtradb-cluster-56

Во время установки нужно будет ввести пароль для доступа к mysql БД.
Перед добавлением ноды в кластер, нужно стопнуть mysql.

root@pxc1:~#/etc/init.d/mysql stop

Добавляем главный конфигурационных файл для первого mysql PXC1 сервера.

root@pxc1:~#cat /etc/mysql/my.cnf
…
[mysqld]

# Логи
log_error = /var/log/mysql/mysql.err
# Директория с БД
datadir=/var/lib/mysql
# Пользователь
user=mysql
# Путь к Galera модуля
wsrep_provider=/usr/lib/libgalera_smm.so
# URL с IP адресами серверов, которые входят в кластер
wsrep_cluster_address=gcomm://192.168.1.150,192.168.1.151,192.168.1.152
# Формат бинлогов
binlog_format=ROW
# Дефолтный механизм хранения данных
default_storage_engine=InnoDB
# Режим лока при работе с автоинкремент значениями
innodb_autoinc_lock_mode=2

# Адрес первой ноды в кластере
wsrep_node_address=192.168.1.150

# Метод передачи снепшотов БД
wsrep_sst_method=xtrabackup-v2

# Имя кластера
wsrep_cluster_name=test_mysql_cluster

# Аутентификация для SST
wsrep_sst_auth="sstuser:DOGUQpj0Se8Q9oy7"
…

Теперь можно стартовать mysql сервер в режиме bootstrap.

root@pxc1:~#/etc/init.d/mysql bootstrap-pxc

После этого у нас добавиться первая нода в кластер. Для проверки, можно запустить команду.

root@pxc1:~# mysql -u root -p -e "show status like 'wsrep%';" | grep -E 'local_state|cluster|ready|connected'

wsrep_local_state_uuid  b2cf979d-54ca-11e5-9bb4-628c43a251a6
wsrep_local_state       4
wsrep_local_state_comment       Synced
wsrep_cluster_conf_id   1
wsrep_cluster_size      1
wsrep_cluster_state_uuid        b2cf979d-54ca-11e5-9bb4-628c43a251a6
wsrep_cluster_status    Primary
wsrep_connected ON
wsrep_ready     ON

Этот вывод означает, что все ок. Теперь нужно добавить юзера с привилегиями для SST операций, которого мы добавили в конце my.cnf файла.

root@pxc1:~# mysql -u root -p

mysql> CREATE USER 'sstuser'@'localhost' IDENTIFIED BY 'DOGUQpj0Se8Q9oy7';
Query OK, 0 rows affected (1.27 sec)

mysql> GRANT RELOAD, LOCK TABLES, REPLICATION CLIENT ON *.* TO 'sstuser'@'localhost';
Query OK, 0 rows affected (0.62 sec)

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.48 sec)

Далее переходим к настройке второго сервера. Устанавливаем mysql Percona XtraDB Cluster таким же образом и переходим к редактированию my.cnf файла.

root@pxc2:~#cat /etc/mysql/my.cnf
…
[mysqld]

# Логи
log_error = /var/log/mysql/mysql.err
# Директория с БД
datadir=/var/lib/mysql
# Пользователь
user=mysql
# Путь к Galera модуля
wsrep_provider=/usr/lib/libgalera_smm.so
# URL с IP адресами серверов, которые входят в кластер
wsrep_cluster_address=gcomm://192.168.1.150,192.168.1.151,192.168.1.152
# Формат бинлогов
binlog_format=ROW
# Дефолтный механизм хранения данных
default_storage_engine=InnoDB
# Режим лока при работе с автоинкремент значениями
innodb_autoinc_lock_mode=2

# Адрес первой ноды в кластере
wsrep_node_address=192.168.1.151

# Метод передачи снепшотов БД
wsrep_sst_method=xtrabackup-v2

# Имя кластера
wsrep_cluster_name=test_mysql_cluster

# Аутентификация для SST
wsrep_sst_auth="sstuser:DOGUQpj0Se8Q9oy7"
…

И стартуем mysql в нормально режиме.

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

После этого, второй сервер добавиться в кластер. Проверяем.

root@pxc2:~# mysql -u root -p -e "show status like 'wsrep%';" | grep -E 'local_state|cluster|ready|connected'

wsrep_local_state_uuid  b2cf979d-54ca-11e5-9bb4-628c43a251a6
wsrep_local_state       4
wsrep_local_state_comment       Synced
wsrep_cluster_conf_id   4
wsrep_cluster_size      2
wsrep_cluster_state_uuid        b2cf979d-54ca-11e5-9bb4-628c43a251a6
wsrep_cluster_status    Primary
wsrep_connected ON
wsrep_ready     ON

Ну и добавляем последнюю ноду. Устанавливаем Percona XtraDB Cluster и создаем my.cnf.

root@pxc3:~#cat /etc/mysql/my.cnf
…
[mysqld]

# Логи
log_error = /var/log/mysql/mysql.err
# Директория с БД
datadir=/var/lib/mysql
# Пользователь
user=mysql
# Путь к Galera модуля
wsrep_provider=/usr/lib/libgalera_smm.so
# URL с IP адресами серверов, которые входят в кластер
wsrep_cluster_address=gcomm://192.168.1.150,192.168.1.151,192.168.1.152
# Формат бинлогов
binlog_format=ROW
# Дефолтный механизм хранения данных
default_storage_engine=InnoDB
# Режим лока при работе с автоинкремент значениями
innodb_autoinc_lock_mode=2

# Адрес первой ноды в кластере
wsrep_node_address=192.168.1.152

# Метод передачи снепшотов БД
wsrep_sst_method=xtrabackup-v2

# Имя кластера
wsrep_cluster_name=test_mysql_cluster

# Аутентификация для SST
wsrep_sst_auth="sstuser:DOGUQpj0Se8Q9oy7"
…

И стартуем mysql.

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

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

root@pxc3:~# mysql -u root -p -e "show status like 'wsrep%';" | grep -E 'local_state|cluster|ready|connected'

wsrep_local_state_uuid  b2cf979d-54ca-11e5-9bb4-628c43a251a6
wsrep_local_state       4
wsrep_local_state_comment       Synced
wsrep_cluster_conf_id   7
wsrep_cluster_size      3
wsrep_cluster_state_uuid        b2cf979d-54ca-11e5-9bb4-628c43a251a6
wsrep_cluster_status    Primary
wsrep_connected ON
wsrep_ready     ON

Как видим, у нас все 3 ноды успешно добавлены в кластер. Теперь можно протестировать работу.
Переходим на первую ноду, создаем тестовую БД, таблицу и добавляем запись в неё.

root@pxc1:~# mysql -u root –p

mysql> CREATE DATABASE firstDB;
Query OK, 1 row affected (0.01 sec)

mysql> USE firstDB;
Database changed

mysql> CREATE TABLE records (rec VARCHAR(50));
Query OK, 0 rows affected (0.08 sec)

mysql> INSERT INTO records VALUE ("pxc1 record");
Query OK, 1 row affected (0.12 sec)

mysql> SELECT * FROM records;
+-------------+
| rec         |
+-------------+
| pxc1 record |
+-------------+
1 row in set (0.00 sec)

Теперь идем на второй сервер и проверяем работает ли репликация.

root@pxc2:~# mysql -uroot -p

mysql> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| firstDB            |
| mysql              |
| performance_schema |
| test               |
+--------------------+

Как видим, БД среплицировалась. Теперь добавив еще одну запись в таблицу.

mysql> INSERT INTO records VALUE ("pxc2 record");
Query OK, 1 row affected (0.04 sec)

mysql> SELECT * FROM records;
+-------------+
| rec         |
+-------------+
| pxc1 record |
| pxc2 record |
+-------------+
2 rows in set (0.00 sec)

Первая запись среплицировалась и теперь у нас есть две записи. Проверяем последний сервер.

root@pxc3:~# mysql -u root -p

mysql> USE firstDB;
Database changed

mysql> SELECT * FROM records;
+-------------+
| rec         |
+-------------+
| pxc1 record |
| pxc2 record |
+-------------+
2 rows in set (0.00 sec)

Кластер работает как положено. Для тестов, еще можно выключить одну машину и через некоторое время включить обратно. В этом случаи в кластере будет только две машины, а после включения третей – все данные, которые были добавлены в период колапса будут среплицированы на поднявшуюся ноду.

Автор: admin, 7 сентября 2015
Рубрики: Linux
Метки: ,
2 комментария к сообщению: “Mysql (часть 5). Установка и настройка Percona XtraDB Cluster”
  1. Юрий:

    Как сделать управляющей 2-ю ноду?

Написать комментарий

Последние статьи

Яндекс.Метрика
?>