使用 galera创建mariaDB集群
2024-04-13 17:12:53

使用 galera创建mariaDB集群

OS-RELEASE

1
2
3
4
5
6
7
8
9
10
11
12
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

1
apt install mariadb-server-10.6

安装galera

1
apt install galera-4

对应版本

注意版本问题,坑死我了。

2. 配置mariadb

2.1 配置mariadb远程访问

配置默认密码

1
mysql_secure_installation

允许远程以root用户登录

1
2
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;
FLUSH PRIVILEGES;

2.2 配置mariadb为集群

nano /etc/mysql/conf.d/galera.cnf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
[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

1
systemctl stop mariadb

第一个节点使用下面的命令启动

1
galera_new_cluster

其余节点使用下面的命令启动

1
systemctl restart mariadb

性能不足或者网络连接较慢,会导致集群启动很慢。

3. 验证集群

1
mysql -u root -p
1
SHOW STATUS LIKE 'wsrep_cluster_size';

如果集群正常,会显示集群节点数量。
如果为0,表示集群启动失败。
如果为1,表示集群启动成功,但是只有一个节点。
如果为2,表示集群启动成功,有两个节点。

在本地笔记本上测试了一下,一切正常,但是服务器性能真的不够,集群启动失败,只能放弃了。

本地验证

下面是一些验证过程中用到的文件,仅作参考。

docker-compose.yml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
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:your_password@192.168.1.127/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:your_password@192.168.1.197/vaultwarden'
ports:
- 8101:80
volumes:
- ./vw_data2:/data
restart: always
Prev
2024-04-13 17:12:53
Next