Ваша настройка Docker для MariDB выглядит в целом неплохо, и вы на правильном пути. Однако у вас есть некоторые моменты, которые требуют внимания. Давайте рассмотрим их поочередно.
### 1. Настройка образов для главного и слейв-сервера
Ваши настройки для `dbmaster` и `dbslave` корректны. Вы используете различные порты для каждого контейнера, и это правильно. Обратите внимание, что для настройки репликации также нужно будет указать параметры на стороне слейва.
### 2. Файл конфигурации `mysql-master.cnf`
Ошибка "World-writable config file" (файл конфигурации с правами на запись для всех) возникает из-за того, что файл имеет права доступа, позволяющие записывать его всем пользователям (доступ 777). Это может привести к проблемам с безопасностью и поэтому MariaDB игнорирует этот файл.
Чтобы исправить это, зайдите в папку, где находится файл `mysql-master.cnf`, и измените права доступа файла с помощью команды:
```bash
chmod 644 ./conf/mysql-master.cnf
```
Проверьте права доступа к файлу с помощью `ls -l ./conf/mysql-master.cnf`:
```bash
-rw-r--r-- 1 user group size date mysql-master.cnf
```
После изменения прав вам, возможно, потребуется перезапустить контейнер `dbmaster` для применения новых настроек:
```bash
docker-compose down
docker-compose up -d
```
### 3. Настройка репликации
После того как вы убедитесь, что файл конфигурации успешно загружен, вам нужно выполнить настройку репликации. После подключения к `dbmaster` введите следующие команды:
```sql
CREATE USER 'replicator'@'%' IDENTIFIED BY 'replicator_password';
GRANT REPLICATION SLAVE ON *.* TO 'replicator'@'%';
FLUSH PRIVILEGES;
SHOW MASTER STATUS;
```
Запишите вывод команды `SHOW MASTER STATUS`, он будет содержать `File` и `Position`, которые вы будете использовать в конфигурации вашего слейва.
### Настройка слейва
После этого, подключитесь к контейнеру `dbslave` и выполните следующие команды, используя информацию из предыдущего шага:
```sql
CHANGE MASTER TO
MASTER_HOST='dbmaster',
MASTER_USER='replicator',
MASTER_PASSWORD='replicator_password',
MASTER_LOG_FILE='имя_файла_из_MASTER_STATUS',
MASTER_LOG_POS=позиция_из_MASTER_STATUS;
START SLAVE;
SHOW SLAVE STATUS\G
```
Проверьте статус слейва с помощью команды `SHOW SLAVE STATUS\G`. Убедитесь, что `Slave_IO_Running` и `Slave_SQL_Running` имеют значение "Yes".
### Резюме
1. Измените права доступа к файлу конфигурации.
2. Перезапустите контейнер `dbmaster`.
3. Настройте учетную запись репликации и параметры репликации на слейве.
Если у вас остались вопросы или возникли новые проблемы, пожалуйста, дайте знать, и я помогу вам!