Я пытаюсь запустить mariadb:10.2.14
как кластер galera на моем компьютере с Windows локально, используя docker compose. Запуск исходного узла boot
работает нормально, но второй узел не может присоединиться к кластеру с ошибкой:
узел_1 | 2018-05-04 3:13:46 140187778701184 [Примечание] WSREP: представление ((пусто))
node_1 | 2018-05-04 3:13:46 140187778701184 [ОШИБКА] WSREP: не удалось открыть внутреннее соединение gcomm: 110: не удалось достичь основного представления: 110 (тайм-аут соединения) в gcomm / src / pc.cpp: connect (): 158
node_1 | 2018-05-04 3:13:46 140187778701184 [ОШИБКА] WSREP: gcs / src / gcs_core.cpp: gcs_core_open (): 208: Не удалось открыть внутреннее соединение: -110 (истекло время ожидания соединения)
узел_1 | 2018-05-04 3:13:46 140187778701184 [ОШИБКА] WSREP: gcs / src / gcs.cpp: gcs_open (): 1458: не удалось открыть канал 'galera' в 'gcomm: // boot': -110 (соединение тайм-аут)
узел_1 | 2018-05-04 3:13:46 140187778701184 [ОШИБКА] WSREP: сбой подключения gcs: истекло время ожидания соединения
узел_1 | 2018-05-04 3:13:46 140187778701184 [ОШИБКА] WSREP: wsrep :: connect (gcomm: // boot) не удалось: 7
узел_1 | 2018-05-04 3:13:46 140187778701184 [ОШИБКА] Отмена
Я запустил ping boot
в контейнере, чтобы убедиться, что имя хоста разрешено правильно, не уверен, почему он не может подключиться. Я попытался создать конфигурацию для различных файлов докера, которые я вижу для mariadb:10.1
, таких как https://gist.github.com/lucidfrontier45/497341c4b848dfbd6dfb
Мой файл создания докера:
# Docker compose file for running a local MySQL server
version: '2.2'
services:
boot:
image: mariadb:10.2.14
command: mysqld --user=mysql --wsrep_new_cluster
environment:
MYSQL_DATABASE: "db"
MYSQL_ALLOW_EMPTY_PASSWORD: "yes"
# Needed because galera doesn't support MyISAM, which tzinfo uses
MYSQL_INITDB_SKIP_TZINFO: "yes"
ports:
- ${SQL_PORT}:3306
- 4444:4444
- 4567:4567
- 4568:4568
networks:
- sql
volumes:
- ./kubernetes/mariadb.conf.d:/etc/mysql/mariadb.conf.d
- /var/lib/mysql
node:
image: mariadb:10.2.14
command: mysqld --user=mysql --wsrep_cluster_address=gcomm://boot
environment:
MYSQL_DATABASE: "db"
MYSQL_ALLOW_EMPTY_PASSWORD: "yes"
# Needed because galera doesn't support MyISAM, which tzinfo uses
MYSQL_INITDB_SKIP_TZINFO: "yes"
networks:
- sql
volumes:
- ./kubernetes/mariadb.conf.d:/etc/mysql/mariadb.conf.d
- /var/lib/mysql
networks:
sql:
Мой конфигурационный файл в maraidb.conf.d
:
# This will be passed to all mysql clients
[client]
default-character-set=utf8mb4
[mysql]
default-character-set=utf8mb4
# The MySQL server
[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
default_storage_engine=innodb
binlog_format=row
innodb_autoinc_lock_mode=2
innodb_flush_log_at_trx_commit=0
# Allow server to accept connections on all interfaces.
bind-address=0.0.0.0
#
# * Galera-related settings
#
# https://mariadb.com/kb/en/mariadb/galera-cluster-system-variables/
#
[galera]
wsrep_on=ON
wsrep_log_conflicts=ON
wsrep_provider=/usr/lib/galera/libgalera_smm.so
# TODO: is rsync the best option?
wsrep_sst_method=rsync
wsrep_cluster_name=galera
#wsrep_slave_threads=1