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,表示集群啟動成功,但是只有一個節點。
如果為 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
載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。