Size: a a a

2021 October 11

YN

Yevhen Nedaskivskyi in MySQL
Просто я тут вижу настройки галеры, проброс портов и директорий, но не вижу всех настроек Марии, которые она просит на старте в контейнере
источник

YN

Yevhen Nedaskivskyi in MySQL
Она не инициализирована по умолчанию
источник

YN

Yevhen Nedaskivskyi in MySQL
Нужны ещё стартовые параметры
источник

YN

Yevhen Nedaskivskyi in MySQL
Есть в доке к образу прямо на хабе
источник

ДС

Дмитрий Стародубцев... in MySQL
[mysqld]
log_error=/var/lib/mysql/logs/error.log

default_storage_engine          = InnoDB
binlog_format                   = ROW

innodb_flush_log_at_trx_commit  = 0
innodb_flush_method             = O_DIRECT
innodb_file_per_table           = 1
innodb_autoinc_lock_mode        = 2

wsrep_on                        = ON
wsrep_provider                  = /usr/lib/galera/libgalera_smm.so
wsrep_sst_method                = xtrabackup-v2
источник

ДС

Дмитрий Стародубцев... in MySQL
Кроме my.cnf в /etc/mysql/conf/ и 60-galera.cnf в /etc/mysql/conf/mariadb.conf.d/ настройки не менял
источник

ДС

Дмитрий Стародубцев... in MySQL
Я наверно неправильно понял. Имелось ввиду если запустить галеру вручную внутри работающего контейнера?
источник

YN

Yevhen Nedaskivskyi in MySQL
Я про то, что тут даже пароля для рута нет ей
источник

ДС

Дмитрий Стародубцев... in MySQL
Самый первый запуск был через Ansible, но там ничего особенного:
   - name: Create mariadb container
     docker_container:
       name: mariadb
       image: mariadb:10.5.9
       state: started
       volumes:
         - /var/lib/mysql/:/var/lib/mysql/
         - /var/lib/mysql/logs/:/var/lib/mysql/logs/
       env:
         MYSQL_ROOT_PASSWORD="{{ default_db_pass }}"
         MYSQL_USER="{{ new_db_user }}"
         MYSQL_PASSWORD="{{ new_db_pass }}"
         MYSQL_DATABASE="{{ new_db_name }}"
       ports:
         - 8080:8080
         - 3306:3306

В переменных одно и то же - testcloud
источник

s

svart in MySQL
1) если у вас не создается файл error.log, то это значит, что у вас в неверном месте конфиг лежит. по умолчанию должен быть, видимо, не там где у вас лежит 2) так же у вас кластер не инициализирован, на это указывает cluster_size=0. это значит что mariadb не видит ваши galera related settings. если бы кластер забустрапился, то cluster_size был бы как минимум 1. итого, я бы начал с проверки конфигов
источник

YN

Yevhen Nedaskivskyi in MySQL
источник

ДС

Дмитрий Стародубцев... in MySQL
Блин, я про это думал, но не всё проверил. Кажется при копировании конфига из докера на хост я случайно создал папку conf в /etc/mysql и весь конфиг положил в неё
источник

ДС

Дмитрий Стародубцев... in MySQL
Я так понял что такие образы уже устарели. Раньше галера была отдельно, а теперь она уже включена в дистриб
источник

ДС

Дмитрий Стародубцев... in MySQL
Поправил проброс, error.log появился. Но с кластером всё так же (
источник

s

svart in MySQL
Смотрите что в error.log
источник

ДС

Дмитрий Стародубцев... in MySQL
Хм, в docker logs mariadb ничего нет, в error.log только предупреждение:
[Warning] WSREP: access file(/var/lib/mysql//gvwstate.dat) failed(No such file or directory)

Но вроде как всё получилось:
+---------------------------+----------------+
| variable_name             | variable_value |
+---------------------------+----------------+
| WSREP_LOCAL_STATE_COMMENT | Synced         |
| WSREP_INCOMING_ADDRESSES  | AUTO           |
| WSREP_CLUSTER_SIZE        | 1              |
| WSREP_CLUSTER_STATUS      | Primary        |
+---------------------------+----------------+

Получилось же?
источник

s

svart in MySQL
да, получилось. теперь попробуйте присоединить вторую ноду (на будущее еще откройте порт 4568 это для ist. на данный момент это не важно)
источник

ДС

Дмитрий Стародубцев... in MySQL
Не хочет. Ошибка:
2021-10-11 18:51:11 0 [ERROR] WSREP: failed to open gcomm backend connection: 110: failed to reach primary view: 110 (Connection timed out)
        at /home/buildbot/buildbot/build/gcomm/src/pc.cpp:connect():160
2021-10-11 18:51:11 0 [ERROR] WSREP: /home/buildbot/buildbot/build/gcs/src/gcs_core.cpp:gcs_core_open():219: Failed to open backend connection: -110 (Connection tim>
2021-10-11 18:51:11 0 [ERROR] WSREP: /home/buildbot/buildbot/build/gcs/src/gcs.cpp:gcs_open():1631: Failed to open channel 'my_wsrep_cluster' at 'gcomm://10.77.250.26': -110 (Connection timed out)
2021-10-11 18:51:11 0 [ERROR] WSREP: gcs connect failed: Connection timed out
2021-10-11 18:51:11 0 [ERROR] WSREP: wsrep::connect(gcomm://10.77.250.25,10.77.250.26) failed: 7
2021-10-11 18:51:11 0 [ERROR] Aborting


Запускал вот так:
docker run -d \
       --name mariadb \
       --hostname mariadb0 \
       --publish "3306" \
       --publish "4444" \
       --publish "4567" \
       --publish "4568" \
       --env MYSQL_ROOT_PASSWORD="testcloud" \
       --env MYSQL_USER=proxysql \
       --env MYSQL_PASSWORD=proxysqlpassword \
       --volume /var/lib/mysql/:/var/lib/mysql \
       --volume /etc/mysql/:/etc/mysql/ \
       mariadb:10.5.9  \
       --wsrep_cluster_address=gcomm://10.77.250.25,10.77.250.26 \
       --wsrep_sst_auth="root:testcloud" \
       --wsrep_node_address=10.77.250.26

Еще понял что в первом контейнере указывал --wsrep_cluster_address=gcomm://, без указания адресов кластера. Там бы скорее всего такая же ошибка была бы
источник

s

svart in MySQL
это значит порт закрыт. проверяйте настройки файервола и telnet в помощь. я думаю, что дальше уже все очевидно
источник

ДС

Дмитрий Стародубцев... in MySQL
Да, думаю дальше всё получится. В крайнем случае вернусь завтра :)

Всем большое спасибо за помощь!
источник