使用 galera で MariaDB クラスタを作成する#
OS-RELEASE
PRETTY_NAME="Ubuntu 22.04.4 LTS"
NAME="Ubuntu"
VERSION_ID="22.04"
VERSION="22.04.4 LTS (Jammy Jellyfish)"
VERSION_CODENAME=jammy
ID=ubuntu
ID_LIKE=debian
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
UBUNTU_CODENAME=jammy
1. MariaDB のインストール#
apt install mariadb-server-10.6
Galera のインストール#
apt install galera-4
バージョンに注意してください。私を困らせました。
2. MariaDB の設定#
2.1 MariaDB のリモートアクセスの設定#
デフォルトパスワードの設定#
mysql_secure_installation
リモートから root ユーザーでログインを許可する#
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;
FLUSH PRIVILEGES;
2.2 MariaDB をクラスタに設定する#
nano /etc/mysql/conf.d/galera.cnf
[mysqld]
binlog_format=ROW
default-storage-engine=innodb
innodb_autoinc_lock_mode=2
bind-address=0.0.0.0
# Galera Provider Configuration
wsrep_on=ON
#wsrep_provider=/usr/lib/galera/libgalera_smm.so
wsrep_provider=/usr/lib/libgalera_smm.so
# Galera Cluster Configuration
wsrep_cluster_name="test_cluster"
wsrep_cluster_address='gcomm://'
# Galera Synchronization Configuration
wsrep_sst_method=rsync
# Galera Node Configuration
wsrep_node_address="10.147.19.2"
wsrep_node_name="db1"
wsrep_sst_auth=username:password # クラスタ同期のユーザー名とパスワード
最初に起動するノードとして、wsrep_cluster_address='gcomm://', 後続のノードの起動時には、最初のノードのアドレスを入力します。例えば wsrep_cluster_address='gcomm://10.147.19.2,10.147.19.3'
2.3 MariaDB を再起動する#
systemctl stop mariadb
最初のノードでは、以下のコマンドを使用して起動します。
galera_new_cluster
他のノードでは、以下のコマンドを使用して起動します。
systemctl restart mariadb
パフォーマンスが不足しているか、ネットワーク接続が遅い場合、クラスタの起動に時間がかかることがあります。
3. クラスタの検証#
mysql -u root -p
SHOW STATUS LIKE 'wsrep_cluster_size';
クラスタが正常であれば、クラスタのノード数が表示されます。
0 の場合、クラスタの起動に失敗しています。
1 の場合、クラスタの起動に成功しましたが、ノードは 1 つだけです。
2 の場合、クラスタの起動に成功し、ノードが 2 つあります。
ローカルのノートブックでテストしましたが、すべて正常でしたが、サーバーのパフォーマンスが本当に不十分で、クラスタの起動に失敗しましたので、諦めるしかありません。
以下は、検証プロセスで使用したいくつかのファイルですが、参考までに提供します。
docker-compose.yml
services:
vaultwarden1:
image: ekm43wj2.mirror.aliyuncs.com/vaultwarden/server:latest
environment:
WEBSOCKET_ENABLED: 'true'
SIGNUPS_ALLOWED: 'true'
ADMIN_TOKEN: 'admin_token_here'
DATABASE_URL: 'mysql://root:[email protected]/vaultwarden'
ports:
- 8100:80
volumes:
- ./vw_data1:/data
restart: always
vaultwarden2:
image: ekm43wj2.mirror.aliyuncs.com/vaultwarden/server:latest
environment:
WEBSOCKET_ENABLED: 'true'
SIGNUPS_ALLOWED: 'true'
ADMIN_TOKEN: 'another_admin_token_here'
DATABASE_URL: 'mysql://root:[email protected]/vaultwarden'
ports:
- 8101:80
volumes:
- ./vw_data2:/data
restart: always