Seele

Seele

使用galeraでMariaDBクラスタを作成します。

使用 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
読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。