Spec-Zone.ru › MariaDB

Настройка репликации MariaDB между кластером MariaDB Galera и сервером MariaDB

Репликация MariaDB может использоваться для репликации между Кластером MariaDB Galera и сервером MariaDB. В этой статье будет рассмотрено, как это сделать.

Настройка кластера

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

  • Установить log_slave_updates=ON на всех узлах кластера. См. Настройка кластера MariaDB Galera: Запись реплицированных наборов записей в двоичный журнал и Использование репликации MariaDB с кластером MariaDB Galera: Настройка узла кластера как мастера репликации для получения дополнительной информации о том, почему это важно. Это также необходимо для включения режима wsrep GTID.
  • Установить server_id в одинаковое значение на всех узлах кластера. См. Использование репликации MariaDB с кластером MariaDB Galera: Установка server_id на узлах кластера для получения дополнительной информации о значении этого параметра.

Настройка режима Wsrep GTID

Если вы хотите использовать репликацию с GTID, то вам также необходимо настроить некоторые параметры для включения режима wsrep GTID. Например:

  • wsrep_gtid_mode=ON необходимо установить на всех узлах кластера.
  • wsrep_gtid_domain_id необходимо установить в одинаковое значение на всех узлах кластера, чтобы каждый узел кластера использовал один и тот же домен при назначении GTID для наборов записей кластера Galera.
  • log_slave_updates необходимо включить на всех узлах кластера. См. MDEV-9855 по этому вопросу.
  • log_bin необходимо установить в один и тот же путь на всех узлах кластера. См. MDEV-9856 по этому вопросу.

И в качестве дополнительной меры предосторожности:

  • gtid_domain_id должен быть установлен в разное значение на всех узлах данного кластера, и каждое из этих значений должно отличаться от значения настроенного wsrep_gtid_domain_id. Это для предотвращения использования узлом того же домена, который используется для наборов записей кластера Galera, при назначении GTID для транзакций, не относящихся к Galera, таких как DDL, выполненные с wsrep_sst_method=RSU или DML, выполненные с wsrep_on=OFF.

Настройка реплики

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

  • Установите server_id в значение, отличное от значения, используемого узлами кластера.
  • Установите gtid_domain_id в значение, отличное от wsrep_gtid_domain_id и gtid_domain_id, используемых узлами кластера.
  • Установите log_bin и log_slave_updates=ON, если вы хотите, чтобы реплика записывала транзакции, которые она реплицирует.

Настройка репликации

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

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

Первый шаг — запустить узлы в первом кластере. Первый узел должен быть инициализирован. Другие узлы могут быть запущены обычным способом.

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

Резервное копирование базы данных на первичном узле кластера и подготовка

Первый шаг — просто создать и подготовить полное резервное копирование (полное резервное копирование) узла, который вы выбрали в качестве первичного сервера репликации. Например:

$ mariabackup --backup \
   --target-dir=/var/mariadb/backup/ \
   --user=mariabackup --password=mypassword

Затем вы подготовите резервную копию обычным образом. Например:

$ mariabackup --prepare \
   --target-dir=/var/mariadb/backup/ 

Копирование резервной копии на реплику

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

$ rsync -avrP /var/mariadb/backup dc2-dbserver1:/var/mariadb/backup

Восстановление резервной копии на реплику второго кластера

На этом этапе вы можете восстановить резервную копию в datadir, как обычно. Например:

$ mariabackup --copy-back \
   --target-dir=/var/mariadb/backup/ 

И при необходимости скорректировать права доступа к файлам:

$ chown -R mysql:mysql /var/lib/mysql/

Запуск новой реплики

После того, как резервная копия была восстановлена на реплике MariaDB Server, вы можете запустить процесс MariaDB Server.

Создание пользователя репликации на первичном узле кластера

Прежде чем реплика MariaDB Server сможет начать репликацию с первичного узла кластера, необходимо создать учётную запись пользователя на первичном узле, которую реплика сможет использовать для подключения, и необходимо предоставить этой учётной записи право REPLICATION SLAVE. Например:

CREATE USER 'repl'@'dc2-dbserver1' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.*  TO 'repl'@'dc2-dbserver1';

Запуск репликации на новой реплике

На этом этапе необходимо получить координаты репликации первичного узла из исходной резервной копии.

Координаты будут в файле xtrabackup_binlog_info.

Mariabackup сохраняет координаты репликации в двух форматах: строки GTID и координаты файла и позиции двоичного журнала, такие как те, которые обычно отображаются в выводе SHOW MASTER STATUS. В данном случае, вероятно, лучше использовать координаты GTID.

Например:

mariadb-bin.000096 568 0-1-2

Независимо от используемых координат, вам необходимо настроить первичное соединение с помощью CHANGE MASTER TO, а затем запустить потоки репликации с помощью START SLAVE.

GTID

Если вы хотите использовать GTID, то вам сначала необходимо установить gtid_slave_pos на координаты GTID, которые мы извлекли из файла xtrabackup_binlog_info, и мы установим MASTER_USE_GTID=slave_pos в команде CHANGE MASTER TO. Например:

SET GLOBAL gtid_slave_pos = "0-1-2";
CHANGE MASTER TO 
   MASTER_HOST="c1dbserver1", 
   MASTER_PORT=3310, 
   MASTER_USER="repl",  
   MASTER_PASSWORD="password", 
   MASTER_USE_GTID=slave_pos;
START SLAVE;

Файл и позиция

Если вы хотите использовать координаты файла и позиции двоичного журнала, то вы установите MASTER_LOG_FILE и MASTER_LOG_POS в команде CHANGE MASTER TO в соответствии с файлом и позицией, которые мы извлекли из файла xtrabackup_binlog_info. Например:

CHANGE MASTER TO 
   MASTER_HOST="c1dbserver1", 
   MASTER_PORT=3310, 
   MASTER_USER="repl",  
   MASTER_PASSWORD="password", 
   MASTER_LOG_FILE='mariadb-bin.000096',
   MASTER_LOG_POS=568,
START SLAVE;

Проверка статуса новой реплики

Теперь вы должны завершить настройку реплики, поэтому проверьте её статус с помощью SHOW SLAVE STATUS. Например:

SHOW SLAVE STATUS\G

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

Настройка циклической репликации

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

Создание пользователя репликации на первичном сервере MariaDB

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

CREATE USER 'repl'@'c1dbserver1' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.*  TO 'repl'@'c1dbserver1';

Запуск циклической репликации на кластере

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

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

GTID

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

SHOW GLOBAL VARIABLES LIKE 'gtid_current_pos';

Затем на узле, выступающем в качестве реплики в кластере, вы можете настроить репликацию, установив gtid_slave_pos на полученный GTID и выполнив CHANGE MASTER TO:

SET GLOBAL gtid_slave_pos = "0-1-2";
CHANGE MASTER TO 
   MASTER_HOST="c2dbserver1", 
   MASTER_PORT=3310, 
   MASTER_USER="repl",  
   MASTER_PASSWORD="password", 
   MASTER_USE_GTID=slave_pos;
START SLAVE;

Файл и позиция

Чтобы получить файл бинарного журнала и координаты позиции на сервере MariaDB, можно выполнить команду SHOW MASTER STATUS:

SHOW MASTER STATUS

Затем на узле, выполняющем роль реплики в кластере, нужно установить master_log_file и master_log_pos в команде CHANGE MASTER TO. Например:

CHANGE MASTER TO 
   MASTER_HOST="c2dbserver1", 
   MASTER_PORT=3310, 
   MASTER_USER="repl",  
   MASTER_PASSWORD="password", 
   MASTER_LOG_FILE='mariadb-bin.000096',
   MASTER_LOG_POS=568;
START SLAVE;

Проверка статуса циклической репликации

Теперь настройка циклической репликации на узле в первом кластере должна быть завершена, поэтому нужно проверить ее статус с помощью команды SHOW SLAVE STATUS. Например:

SHOW SLAVE STATUS\G
Содержимое, воспроизведенное на этом сайте, является собственностью соответствующих владельцев, и это содержимое не проходит предварительной проверки MariaDB. Мнения, информация и мнения, выраженные в этом содержании, не обязательно отражают точку зрения MariaDB или любой другой стороны.

© 2023 MariaDB
Licensed under the Creative Commons Attribution 3.0 Unported License and the GNU Free Documentation License.
https://mariadb.com/kb/en/using-mariadb-replication-with-mariadb-galera-cluster-configuring-mariadb-r/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API