Как настроить кластер Galera с MariaDB на серверах CentOS 7

Автор выбралFree and Open Source Fund для получения пожертвования в рамках программыWrite for DOnations.

Вступление

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

Кластеры бывают двух основных конфигураций:active-passive иactive-active. В активно-пассивных кластерах все записи выполняются на одном активном сервере, а затем копируются на один или несколько пассивных серверов, которые могут вступить во владение только в случае сбоя активного сервера. Некоторые активно-пассивные кластеры также позволяют выполнять операцииSELECT на пассивных узлах. В активно-активном кластере каждый узел доступен для чтения и записи, а внесенные в него изменения реплицируются на все.

MariaDB - это система реляционных баз данных с открытым исходным кодом, полностью совместимая с популярной системой СУБД MySQL. Вы можете прочитать официальную документацию для MariaDB на этомpage. Galera - это решение для кластеризации баз данных, которое позволяет настраивать кластеры с несколькими главными серверами с использованием синхронной репликации. Galera автоматически выполняет синхронизацию данных на разных узлах, позволяя отправлять запросы на чтение и запись на любой из узлов в кластере. Вы можете узнать больше о Galera на официальном сайтеdocumentation page.

В этом руководстве вы настроите активно-активный кластер MariaDB Galera. В демонстрационных целях вы настроите и протестируете три капли CentOS 7, которые будут действовать как узлы в кластере. Это самый маленький настраиваемый кластер.

Предпосылки

Чтобы продолжить, вам понадобитсяDigitalOcean account в дополнение к следующему:

  • Три капли CentOS 7 с включенной частной сетью, каждая с пользователем без полномочий root с привилегиямиsudo и включенным брандмауэром.

Несмотря на то, что шаги в этом учебном пособии были написаны для и проверены на дроплетах DigitalOcean, многие из них также должны быть применимы к серверам не-DigitalOcean с включенной частной сетью.

[[step-1 -—- add-the-mariadb-repositories-to-all-servers]] == Шаг 1 - Добавление репозиториев MariaDB на все серверы

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

Следует отметить, что MariaDB возникла как прямая замена MySQL, поэтому во многих файлах конфигурации и сценариях запуска вы увидитеmysql, а неmariadb. Во многих случаях они взаимозаменяемы. Для единообразия мы будем использоватьmariadb в этом руководстве, где любой из них может работать.

В этом руководстве вы будете использоватьMariaDB version 10.4. Поскольку эта версия не включена в репозитории CentOS по умолчанию, вы начнете с добавления внешнего репозитория CentOS, поддерживаемого проектом MariaDB, на все три ваших сервера.

[.note] #Note: MariaDB - уважаемый провайдер, но не все внешние репозитории надежны. Обязательно устанавливайте только из проверенных источников.
#

Сначала вы добавите ключ хранилища MariaDB, создав файл хранилища с помощью текстового редактора. В этом руководстве будет использоватьсяvi:

sudo vi /etc/yum.repos.d/mariadb.repo

Затем добавьте в файл следующее содержимое, нажавi для входа в режим вставки, а затем добавив следующее:

/etc/yum.repos.d/mariadb.repo

[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.4/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

Нажмите клавишуesc, чтобы вернуться в нормальный режим, затем введите:wq, чтобы сохранить и выйти из файла. Если вы хотите узнать больше о текстовом редактореvi и его предшественникеvim, ознакомьтесь с нашим руководством поInstalling and Using the Vim Text Editor on a Cloud Server.

Создав файл репозитория, включите его с помощью следующей команды:

sudo yum makecache --disablerepo='*' --enablerepo='mariadb'

Командаmakecache кэширует метаданные репозитория, чтобы менеджер пакетов мог установить MariaDB, причем--disablerepo и--enablerepo нацелены на команду только что созданного файла репозиторияmariadb.

Вы получите следующий вывод:

OutputLoaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
mariadb                                                                                                                                                                              | 2.9 kB  00:00:00
(1/3): mariadb/primary_db                                                                                                                                                            |  43 kB  00:00:00
(2/3): mariadb/other_db                                                                                                                                                              | 8.3 kB  00:00:00
(3/3): mariadb/filelists_db                                                                                                                                                          | 238 kB  00:00:00
Metadata Cache Created

После того, как вы включили хранилище на своем первом сервере, повторите для второго и третьего серверов.

Теперь, когда вы успешно добавили хранилище пакетов на всех трех своих серверах, вы готовы установить MariaDB в следующем разделе.

[[step-2 -—- install-mariadb-on-all-servers]] == Шаг 2 - Установка MariaDB на всех серверах

На этом шаге вы установите фактические пакеты MariaDB на своих трех серверах.

Начиная с версии10.1, пакеты MariaDB Server и MariaDB Galera Server объединены, поэтому установкаMariaDB-server автоматически установит Galera и несколько зависимостей:

sudo yum install MariaDB-server MariaDB-client

Вам будет предложено подтвердить, хотите ли вы продолжить установку. Введитеyes, чтобы продолжить установку. Затем вам будет предложено принять ключ GPG, который аутентифицирует пакет MariaDB. Снова введитеyes.

После завершения установки запустите службуmariadb, запустив:

sudo systemctl start mariadb

Включите автоматический запуск службыmariadb при загрузке, выполнив:

sudo systemctl enable mariadb

Начиная с версии MariaDB10.4, пользователь MariaDBroot по умолчанию не имеет пароля. Чтобы установить пароль для пользователяroot, начните с входа в MariaDB:

sudo mysql -uroot

Оказавшись внутри оболочки MariaDB, измените пароль, выполнив следующую инструкцию, заменивyour_password желаемым паролем:

set password = password("your_password");

Вы увидите следующий вывод, указывающий, что пароль был установлен правильно:

OutputQuery OK, 0 rows affected (0.001 sec)

Выйдите из оболочки MariaDB, выполнив следующую команду:

quit;

Если вы хотите узнать больше о SQL или немного освежить в памяти, ознакомьтесь с нашимMySQL tutorial.

Теперь у вас есть все части, необходимые для начала настройки кластера, но поскольку на последующих этапах вы будете полагаться наrsync иpolicycoreutils-python для синхронизации серверов и управления Linux с повышенной безопасностью (SELinux) , убедитесь, что они установлены, прежде чем двигаться дальше:

sudo yum install rsync policycoreutils-python

Это подтвердит, что новейшие версииrsync иpolicycoreutils-python уже доступны, или предложит вам обновить или установить их.

Выполнив эти шаги, повторите их для двух других серверов.

Теперь, когда вы успешно установили MariaDB на каждом из трех серверов, вы можете перейти к шагу настройки в следующем разделе.

[[step-3 -—- configuring-the-first-node]] == Шаг 3 - Настройка первого узла

На этом этапе вы настроите свой первый узел Galera. Каждый узел в кластере должен иметь почти идентичную конфигурацию. Из-за этого вы выполните всю конфигурацию на своем первом компьютере, а затем скопируете ее на другие узлы.

По умолчанию MariaDB настроен на проверку каталога/etc/mysql/conf.d, чтобы получить дополнительные параметры конфигурации из файлов, оканчивающихся на.cnf. Создайте файл в этом каталоге со всеми вашими кластерными директивами:

sudo vi /etc/my.cnf.d/galera.cnf

Добавьте следующую конфигурацию в файл. В конфигурации указываются различные параметры кластера, сведения о текущем сервере и других серверах в кластере, а также параметры, связанные с репликацией. Обратите внимание, что IP-адреса в конфигурации являются частными адресами ваших соответствующих серверов; замените выделенные строки соответствующими IP-адресами:

/etc/my.cnf.d/galera.cnf

[mysqld]
binlog_format=ROW
default-storage-engine=innodb
innodb_autoinc_lock_mode=2
bind-address=0.0.0.0

# Galera Provider Configuration
wsrep_on=ON
wsrep_provider=/usr/lib64/galera-4/libgalera_smm.so

# Galera Cluster Configuration
wsrep_cluster_name="test_cluster"
wsrep_cluster_address="gcomm://First_Node_IP,Second_Node_IP,Third_Node_IP"

# Galera Synchronization Configuration
wsrep_sst_method=rsync

# Galera Node Configuration
wsrep_node_address="This_Node_IP"
wsrep_node_name="This_Node_Name"
  • The first section изменяет или повторно утверждает настройки MariaDB / MySQL, которые позволят кластеру работать правильно. Например, Galera не будет работать с MyISAM или аналогичными механизмами хранения без транзакций, аmysqld не должен быть привязан к IP-адресу дляlocalhost.

  • The “Galera Provider Configuration” section настраивает компоненты MariaDB, которые предоставляют API репликации WriteSet. В вашем случае это означает Galera, поскольку Galera является поставщикомwsrep (WriteSet Replication). Вы задаете общие параметры для настройки начальной среды репликации. Это не требует настройки, но вы можете узнать больше оGalera configuration options here.

  • The “Galera Cluster Configuration” section определяет кластер, идентифицируя членов кластера по IP-адресу или разрешаемому имени домена и создавая имя для кластера, чтобы гарантировать, что члены присоединятся к правильной группе. Вы можете изменитьwsrep_cluster_name на что-то более значимое, чемtest_cluster, или оставить его как есть, но вы должны обновитьwsrep_cluster_address с частными IP-адресами ваших трех серверов.

  • The “Galera Synchronization Configuration” section определяет, как кластер будет обмениваться данными и синхронизировать данные между участниками. Это используется только для передачи состояния, которая происходит, когда узел подключается к сети. Для начальной настройки вы используетеrsync, потому что он общедоступен и делает то, что вам нужно сейчас.

  • The “Galera Node Configuration” section уточняет IP-адрес и имя текущего сервера. Это полезно при попытке диагностировать проблемы в журналах и для ссылки на каждый сервер несколькими способами. wsrep_node_address должен соответствовать адресу компьютера, на котором вы находитесь, но вы можете выбрать любое имя, которое поможет вам идентифицировать узел в файлах журнала.

Когда вы будете удовлетворены файлом конфигурации кластера, скопируйте его содержимое в буфер обмена, сохраните и закройте файл.

Теперь, когда вы успешно настроили свой первый узел, вы можете перейти к настройке оставшихся узлов в следующем разделе.

[[шаг-4 -—- настройка-оставшихся-узлов]] == Шаг 4 - Настройка оставшихся узлов

На этом шаге вы настроите оставшиеся два узла. На втором узле откройте файл конфигурации:

sudo vi /etc/mysql/my.cnf.d/galera.cnf

Вставьте конфигурацию, которую вы скопировали с первого узла, затем обновитеGalera Node Configuration, чтобы использовать IP-адрес или разрешаемое доменное имя для конкретного узла, который вы настраиваете. Наконец, обновите его имя, которое вы можете установить на любое, что поможет вам идентифицировать узел в ваших файлах журнала:

/etc/mysql/my.cnf.d/galera.cnf

. . .
# Galera Node Configuration
wsrep_node_address="This_Node_IP"
wsrep_node_name="This_Node_Name"
. . .

Сохраните и выйдите из файла.

Выполнив эти шаги, повторите их на третьем узле.

С Galera, настроенным на всех ваших узлах, вы почти готовы запустить кластер. Но прежде чем сделать это, убедитесь, что в вашем брандмауэре открыты соответствующие порты и что для Galera создана политика SELinux.

[[шаг-5 -—- открытие-брандмауэр-на-каждом-сервере]] == Шаг 5 - Открытие брандмауэра на каждом сервере

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

На каждом сервере проверьте состояние брандмауэра, настроенного вами в разделе «Предварительные требования», запустив:

sudo firewall-cmd --list-all

В этом случае только SSH, DHCP, HTTP и HTTPS трафик разрешается через:

Outputpublic
  target: default
  icmp-block-inversion: no
  interfaces:
  sources:
  services: ssh dhcpv6-client http https
  ports:
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

Если вы попытаетесь запустить кластер сейчас, он потерпит неудачу, потому что брандмауэр заблокирует соединения между узлами. Чтобы решить эту проблему, добавьте правила, позволяющие пропускать трафик MariaDB и Galera.

Galera может использовать четыре порта:

  • 3306 Для клиентских подключений MariaDB и передачи моментальных снимков состояния, которые используют методmysqldump.

  • 4567 Для трафика репликации Galera Cluster. Многоадресная репликация использует как транспорт UDP, так и TCP на этом порту.

  • 4568 ДляIncremental State Transfers, или IST, процесс, посредством которого отсутствующее состояние принимается другими узлами в кластере.

  • 4444 Для всех остальныхState Snapshot Transfers, или SST, механизм, с помощью которого присоединяющийся узел получает свое состояние и данные от донорного узла.

В этом примере вы откроете все четыре порта во время настройки. Убедившись, что репликация работает, вы захотите закрыть все порты, которые вы на самом деле не используете, и ограничить трафик только серверами в кластере.

Откройте порты с помощью следующих команд:

sudo firewall-cmd --permanent --zone=public --add-port=3306/tcp
sudo firewall-cmd --permanent --zone=public --add-port=4567/tcp
sudo firewall-cmd --permanent --zone=public --add-port=4568/tcp
sudo firewall-cmd --permanent --zone=public --add-port=4444/tcp
sudo firewall-cmd --permanent --zone=public --add-port=4567/udp

Используя здесь--zone=public и--add-port=,firewall-cmd открывает эти порты для публичного трафика. --permanent гарантирует, что эти правила сохранятся.

[.note] #Note: В зависимости от того, что еще работает на ваших серверах, вы можете сразу же ограничить доступ. Чтобы узнать больше о том, как использовать FirewallD, см. Наш учебникHow To Set Up a Firewall Using FirewallD on CentOS 7.
#

Теперь добавьте каждый сервер в зонуpublic, выполнив следующие команды, заменив выделенный текст соответствующими частными IP-адресами ваших узлов:

sudo firewall-cmd --permanent --zone=public --add-source=galera-node-1-ip/32
sudo firewall-cmd --permanent --zone=public --add-source=galera-node-2-ip/32
sudo firewall-cmd --permanent --zone=public --add-source=galera-node-3-ip/32

Перезагрузите брандмауэр, чтобы применить изменения:

sudo firewall-cmd --reload

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

Теперь, когда вы успешно настроили брандмауэры, вы готовы создать политику SELinux на следующем шаге.

[[step-6 -—- created-a-selinux-policy]] == Шаг 6 - Создание политики SELinux

В этом разделе вы создадите политику SELinux, которая позволит всем узлам кластера обмениваться данными и выполнять операции кластера.

SELinux - это модуль ядра Linux, который повышает безопасность операционных систем благодаря поддержке политик контроля доступа и обязательного контроля доступа. Он включен по умолчанию в CentOS 7 и запрещает демону MariaDB выполнять множество действий.

Чтобы создать политику, вы будете выполнять различные действия в кластере с режимом SELinux, установленным как разрешающий для MySQL. После этого вы создадите политику из зарегистрированных событий и, наконец, установите для режима SELinux принудительное выполнение после успешной установки политики.

Сначала разрешите доступ к соответствующим портам, выполнив следующие команды на всех трех серверах:

sudo semanage port -a -t mysqld_port_t -p tcp 4567
sudo semanage port -a -t mysqld_port_t -p udp 4567
sudo semanage port -a -t mysqld_port_t -p tcp 4568
sudo semanage port -a -t mysqld_port_t -p tcp 4444

[.note] #Note: Вы можете получитьValueError при разрешении доступа к некоторым из этих портов. Это означает, что статус SELinux для этого порта уже установлен, что в данном случае не повлияет на процесс этого руководства.
#

В этих командах вы используете инструмент управления SELinuxsemanage с флагом-a для добавления указанных портов и игнорирования сервера базы данных.

Затем выполните следующую команду на всех трех серверах, которая временно переводит домен MySQL SELinux в разрешительный режим.

sudo semanage permissive -a mysqld_t

Эта команда может занять минуту и ​​не будет отображать никаких выходных данных.

Затем остановите сервер базы данных на всех узлах, чтобы вы могли загрузить кластер базы данных с общими политиками SELinux. Для этого выполните следующую команду на всех трех узлах:

sudo systemctl stop mariadb

Теперь загрузите кластер для генерации событий взаимодействия между узлами, которые будут добавлены в политику SELinux. На первом узле загрузите кластер, выполнив:

sudo galera_new_cluster

Создайте базу данных и таблицу для конкретной цели регистрации событий SST, выполнив следующее на первом узле:

mysql -u root -p -e 'CREATE DATABASE selinux;
CREATE TABLE selinux.selinux_policy (id INT NOT NULL AUTO_INCREMENT, PRIMARY KEY(id));
INSERT INTO selinux.selinux_policy VALUES ();'

Теперь запустите сервер на втором узле:

sudo systemctl start mariadb

Затем сделайте то же самое на третьем узле:

sudo systemctl start mariadb

Вы не увидите вывод для предыдущих команд. Чтобы сгенерировать события IST, выполните следующие действия на всех трех серверах:

mysql -u root -p -e 'INSERT INTO selinux.selinux_policy VALUES ();'

Теперь создайте и активируйте политику SELinux, выполнив следующие команды на всех трех серверах:

sudo grep mysql /var/log/audit/audit.log | sudo audit2allow -M Galera

Эта первая команда выполняет поиск сгенерированных событий в файлеaudit.log и передает их модулю с именемGalera.pp, сгенерированным инструментомaudit2allow. Это приведет к следующему выводу:

Output******************** IMPORTANT ***********************
To make this policy package active, execute:

semodule -i Galera.pp

Далее следуйте инструкциям в выходных данных и используйте следующую команду для установки сгенерированного модуля:

sudo semodule -i Galera.pp

Теперь, когда политика активна, отключите разрешающий режим для сервера MariaDB:

sudo semanage permissive -d mysqld_t

Теперь, когда вы успешно создали политику SELinux и включили ее, вы готовы запустить кластер в следующем разделе.

[[step-7 -—- start-the-cluster]] == Шаг 7. Запуск кластера

На этом этапе вы запустите свой кластер MariaDB. Для начала вам нужно остановить запущенную службу MariaDB, чтобы вы могли подключить свой кластер к сети.

Остановите MariaDB на всех трех серверах

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

Сначала выполните следующую команду на третьем узле:

sudo systemctl stop mariadb

Затем остановите службу на втором узле:

sudo systemctl stop mariadb

Наконец, остановите службу на первом узле:

sudo systemctl stop mariadb

systemctl не отображает результат выполнения всех команд управления службами, поэтому, чтобы убедиться, что вы добились успеха, используйте следующую команду на каждом из ваших серверов:

sudo systemctl status mariadb

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

Output. . .
Apr 26 03:34:23 galera-node-01 systemd[1]: Stopped MariaDB 10.4.4 database server.

После того, как вы выключитеmariadb на всех серверах, вы готовы продолжить.

Подними первый узел

Чтобы вызвать первый узел, вам нужно использовать специальный скрипт запуска. Как вы настроили свой кластер, каждый узел, который подключается к сети, пытается подключиться хотя бы к одному другому узлу, указанному в его файлеgalera.cnf, чтобы получить свое начальное состояние. Без использования сценарияgalera_new_cluster, который позволяет systemd передавать параметр--wsrep-new-cluster, обычныйsystemctl start mariadb завершится ошибкой, потому что нет запущенных узлов, с которыми можно было бы соединиться с первым узлом.

sudo galera_new_cluster

Эта команда не будет отображать никаких результатов при успешном выполнении. Когда этот скрипт завершается успешно, узел регистрируется как часть кластера, и вы можете увидеть его с помощью следующей команды:

mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size'"

Вы увидите следующий вывод, указывающий, что в кластере есть один узел:

Output+--------------------+-------+
| Variable_name      | Value |
+--------------------+-------+
| wsrep_cluster_size | 1     |
+--------------------+-------+

На остальных узлах вы можете запуститьmariadb как обычно. Они будут искать любого члена списка кластеров, который находится в сети, поэтому, когда они его найдут, они присоединятся к кластеру.

Подними второй узел

Теперь вы можете вызвать второй узел. Началоmariadb:

sudo systemctl start mariadb

Никакие выходные данные не будут отображаться при успешном выполнении. Размер каждого кластера будет увеличиваться при подключении каждого узла:

mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size'"

Вы увидите следующие выходные данные, указывающие, что второй узел присоединился к кластеру и что всего имеется два узла.

Output+--------------------+-------+
| Variable_name      | Value |
+--------------------+-------+
| wsrep_cluster_size | 2     |
+--------------------+-------+

Подними третий узел

Пришло время поднять третий узел. Началоmariadb:

sudo systemctl start mariadb

Выполните следующую команду, чтобы найти размер кластера:

mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size'"

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

Output+--------------------+-------+
| Variable_name      | Value |
+--------------------+-------+
| wsrep_cluster_size | 3     |
+--------------------+-------+

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

[[step-8 -—- testing-replication]] == Шаг 8 - Тестирование репликации

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

Написать в первый узел

Вы начнете с внесения изменений в базу данных на первом узле. Следующие команды создадут базу данных с именемplayground и таблицу внутри этой базы данных с именемequipment.

mysql -u root -p -e 'CREATE DATABASE playground;
CREATE TABLE playground.equipment ( id INT NOT NULL AUTO_INCREMENT, type VARCHAR(50), quant INT, color VARCHAR(25), PRIMARY KEY(id));
INSERT INTO playground.equipment (type, quant, color) VALUES ("slide", 2, "blue");'

В предыдущей команде операторCREATE DATABASE создает базу данных с именемplayground. ОператорCREATE создает таблицу с именемequipment внутри базы данныхplayground, имеющую столбец с автоматически увеличивающимся идентификатором с именемid и другие столбцы. Столбецtype, столбецquant и столбецcolor определены для хранения типа, количества и цвета оборудования соответственно. ОператорINSERT вставляет запись типаslide, количества2 и цветаblue.

Теперь у вас есть одно значение в вашей таблице.

Читать и писать на втором узле

Далее, посмотрите на второй узел, чтобы убедиться, что репликация работает:

mysql -u root -p -e 'SELECT * FROM playground.equipment;'

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

Output+----+-------+-------+-------+
| id | type  | quant | color |
+----+-------+-------+-------+
|  1 | slide |     2 | blue  |
+----+-------+-------+-------+

С этого же узла вы можете записать данные в кластер:

mysql -u root -p -e 'INSERT INTO playground.equipment (type, quant, color) VALUES ("swing", 10, "yellow");'

Читать и писать на третьем узле

С третьего узла вы можете прочитать все эти данные, снова запросив таблицу:

mysql -u root -p -e 'SELECT * FROM playground.equipment;'

Вы увидите следующий вывод, показывающий две строки:

Output   +----+-------+-------+--------+
   | id | type  | quant | color  |
   +----+-------+-------+--------+
   |  1 | slide |     2 | blue   |
   |  2 | swing |    10 | yellow |
   +----+-------+-------+--------+

Опять же, вы можете добавить другое значение из этого узла:

mysql -u root -p -e 'INSERT INTO playground.equipment (type, quant, color) VALUES ("seesaw", 3, "green");'

Читайте на первом узле

Вернувшись на первый узел, вы можете убедиться, что ваши данные доступны везде:

mysql -u root -p -e 'SELECT * FROM playground.equipment;'

Вы увидите следующий вывод, который указывает, что строки доступны на первом узле.

Output   +----+--------+-------+--------+
   | id | type   | quant | color  |
   +----+--------+-------+--------+
   |  1 | slide  |     2 | blue   |
   |  2 | swing  |    10 | yellow |
   |  3 | seesaw |     3 | green  |
   +----+--------+-------+--------+

Вы успешно подтвердили, что можете писать на все узлы и что репликация выполняется правильно.

Заключение

На этом этапе у вас настроен работающий тестовый кластер Galera с тремя узлами. Если вы планируете использовать кластер Galera в производственной ситуации, рекомендуется начинать с не менее пяти узлов.

Перед производственным использованием вы можете взглянуть на некоторые изother state snapshot transfer (SST) agents, напримерXtraBackup, которые позволяют очень быстро и без больших перерывов в работе ваших активных узлов настраивать новые узлы. Это не влияет на фактическую репликацию, но является проблемой при инициализации узлов.

Если вы хотите продолжить изучение баз данных SQL, ознакомьтесь с нашей статьейHow To Manage an SQL Database.

Related