以下是在Ubuntu 22.04上安装一主一从的MariaDB集群的步骤:
首先,你需要有两个 Ubuntu 22.04 的服务器,分别命名为 Server1 和 Server2,这两个服务器都需要安装 Mariadb 和 Galera Cluster。
使用以下命令安装 Mariadb 和 Galera Cluster:
sudo apt-get update
sudo apt-get install mariadb-server
同时,可以使用以下命令设置 Mariadb 服务在开机时自动启动:
sudo systemctl enable mariadb
systemctl start mariadb
systemctl status mariadb
mysql_secure_installation
执行过程中,会进行交互式询问,全部选择"y"即可。
Enter current password for root (enter for none):
Switch to unix_socket authentication [Y/n] n
Change the root password? [Y/n] Y
New password:
Re-enter new password:
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] n
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y
.....
编辑以下文件:
cd /etc/mysql/conf.d/
sudo vim 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
# Galera Cluster Configuration
wsrep_cluster_name="galera_cluster"
wsrep_cluster_address="gcomm://192.168.100.181,192.168.100.182"
# Galera Synchronization Configuration
wsrep_sst_method=rsync
# Galera Node Configuration
wsrep_node_address="192.168.100.181"
wsrep_node_name="node1"
将
替换为 Server1 和 Server2 的 IP 地址。
同样,在第二个节点上进行配置,内容如下:
[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
# Galera Cluster Configuration
wsrep_cluster_name="galera_cluster"
wsrep_cluster_address="gcomm://192.168.100.181,192.168.100.182"
# Galera Synchronization Configuration
wsrep_sst_method=rsync
# Galera Node Configuration
wsrep_node_address="192.168.100.182"
wsrep_node_name="node2"
cd /etc/mysql
vim my.cnf
# 修改内容如下:
# server-id服务的唯一标识(主从之间都必须不同);
# log-bin启动二进制日志名称为mysql-bin
[mysqld]
server-id=1
log-bin=apollo-mysql-bin
#重启数据库
systemctl start mariadb
在 Server2 上,使用以下命令设置从服务器的复制:
sudo mysql -u root -p
STOP ALL SLAVES;
CHANGE MASTER TO MASTER_HOST='', MASTER_USER='replication_user', MASTER_PASSWORD='password', MASTER_LOG_FILE='', MASTER_LOG_POS=;
START SLAVE;
将
替换为 Server1 的 IP 地址,replication_user
和password
替换为你自己的用户名和密码。你可以使用以下命令在 Server1 上查看 Mariadb 的 binlog file 和 binlog position:
sudo mysql -u root -p -e "SHOW MASTER STATUS;"
现在,主服务器上的任何更改都将被自动复制到从服务器。
在所有节点上的配置文件完成后,接下来我们初始化集群配置,操作步骤如下:
1、所有节点停止mariadb服务
systemctl stop mariadb
2、在第一个节点上,使用以下命令初始化MariaDB Galera集群:
galera_new_cluster
3、现在,使用以下命令检查集群的状态:
mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size'"
首次执行,会提示输入root账号密码,之后你将会看到如下内容:
+--------------------+-------+
| Variable_name | Value |
+--------------------+-------+
| wsrep_cluster_size | 1 |
+--------------------+-------+
以上同样的步骤在第二个
所有的节点完成以上操作后, Galera集群的初始化工作就已经完成,你可以进行下一步的操作了。
接下来,我们来验证复制是否正常工作。 1、在第一个节点上,使用以下命令连接到MariaDB:
mysql -u root -p
2、连接成功后,执行如下命令:
MariaDB [(none)]> create database db1;
MariaDB [(none)]> create database db2;
3、命令执行完成后,通过以下命令退出:
MariaDB [(none)]> exit;
下一步,我们在第二个数据库节点上执行如下命令登录数据库服务:
mysql -u root -p
登录上后,执行如下命令,显示数据库信息。
MariaDB [(none)]> show databases;
正常情况下,你将会看到我们在第一个数据库节点创建的db1和db2已经被复制到第二个节点上:
+--------------------+
| Database |
+--------------------+
| db1 |
| db2 |
| information_schema |
| mysql |
| performance_schema |
+--------------------+
5 rows in set (0.001 sec)
这就是在 Ubuntu 22.04 上安装一主一从的 Mariadb 集群的步骤。