使用 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
对应版本
注意版本问题,坑死我了。
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 restart mariadb
|
性能不足或者网络连接较慢,会导致集群启动很慢。
3. 验证集群
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
|