Добрый день!
Да, в MariaDB с использованием GTID вы можете организовать репликацию так, чтобы не создавать резервные копии при переключении мастера. Это возможно благодаря использованию механизма GTID для отслеживания состояния репликации.
Вот шаги, которые вы можете предпринять, чтобы сделать прежний мастер (m1) слейвом без создания резервных копий:
1. **Убедитесь, что GTID включен**: Убедитесь, что у вас включены GTID и в конфигурации серверов (либо в `my.cnf`, либо динамически на сервере).
```ini
gtid_strict_mode = ON
gtid_domain_id = 1 # или другой уникальный ID для вашей среды
```
2. **Синхронизируйте состояние GTID**: Убедитесь, что `s2` знает о последнем GTID, полученном от нового мастера (s1). На новом мастере (s1) выполните команду:
```sql
SHOW MASTER STATUS;
```
запомните значение `GTID` из `Executed_Gtid_Set`.
3. **Настройте старый мастер (m1)**: Остановите на нем репликацию, если она еще работает, и выполните следующую команду:
```sql
STOP SLAVE;
```
Затем настройте его как слейв, указывая нового мастера (s1):
```sql
CHANGE MASTER TO MASTER_HOST='IP адрес s1', MASTER_USER='user', MASTER_PASSWORD='password', MASTER_GTID_PURGED='GTID с s1';
```
Важно указать `MASTER_GTID_PURGED` с GTID, который отображает состояние нового мастера (s1).
4. **Запуск репликации на m1**: После этого запустите репликацию на (m1):
```sql
START SLAVE;
```
5. **Проверьте состояние репликации**: Убедитесь, что все работает корректно на обоих слейвах, в том числе на (s2). Для этого выполните команду:
```sql
SHOW SLAVE STATUS \G;
```
Убедитесь, что `Last_Error` пустой и `Slave_SQL_Running` равно `Yes`.
Теперь вы перенастроили (m1) на слейв, и он будет реплицировать данные с нового мастера (s1) без необходимости создания резервных копий.
Важно помнить, что этот подход работает, если нет несоответствий между состояниями баз данных. Если же данные не были полностью синхронизированы, потребуется пересоздание слейва с помощью резервной копии.