当前位置: 首页 > 工具软件 > MySQL/Galera > 使用案例 >

银河麒麟服务器操作系统V10SP2搭建mysql的galera集群

岳阳文
2023-12-01

传统架构的使用,一直被人们所诟病,因为MySQL的主从模式,天生的不能完全保证数据一致,很多大公司会花很大人力物力去解决这个问题,而效果却一般,可以说,只能是通过牺牲性能,来获得数据一致性,但也只是在降低数据不一致性的可能性而已。所以现在就急需一种新型架构,从根本上解决这样的问题,天生的摆脱掉主从复制模式这样的 美中不足 之处了。

Galera Cluster :集成了Galera插件的MySQL集群,是一种新型的,数据不共享的,高度冗余的高可用方案,多节点都可以作为主节点,节点是对等的,当有客户端要写入或者读取数据时,随便连接哪个实例都是一样的,读到的数据是相同的,写入某一个节点之后,集群自己会将新数据同步到其它节点上面,这种架构不共享任何数据,是一种高冗余架构。相比传统架构,Galera Cluster解决的最核心问题是,在三个实例(节点)之间,它们的关系是对等的,multi-master架构的,在多节点同时写入的时候,能够保证整个集群数据的一致性,完整性与正确性。

1、卸载麒麟系统自带mariadb

[root@192 ~]# rpm -qa |grep mariadb
mariadb-common-10.3.9-9.p02.ky10.x86_64
mariadb-server-10.3.9-9.p02.ky10.x86_64
mariadb-errmessage-10.3.9-9.p02.ky10.x86_64
mariadb-10.3.9-9.p02.ky10.x86_64
mariadb-connector-c-3.0.6-7.ky10.x86_64
[root@192 ~]# rpm -e --nodeps mariadb-common mariadb mariadb-server mariadb-connector-c mariadb-errmessage

2、测试环境

ip主机名
192.168.1.4galera1
192.168.1.5galera2
192.168.1.6galera3
#修改3台机器主机名
[root@galera1 /]# hostnamectl set-hostname galera1
#修改3台机器的/etc/hosts文件,添加如下内容
192.168.1.4 galera1
192.168.1.5 galera2
192.168.1.6 galera3

3、安装mysql-wsrep(下载编译好的二进制文件)
下载地址:https://releases.galeracluster.com/mysql-wsrep-8.0/binary/

[root@192 ~]# mv /root/下载/mysql-wsrep-8.0.30-26.11.tar.gz /usr/local/
[root@192 ~]# cd /usr/local/
[root@192 local]# tar -zxvf mysql-wsrep-8.0.30-26.11.tar.gz
[root@192 local]# mv mysql-wsrep-8.0.30-26.11 mysql

# 创建mysql用户组和mysql用户,如系统已存在则不用创建
[root@192 local]# groupadd mysql
[root@192 local]# useradd -r -g mysql mysql
[root@192 local]# passwd mysql
# 创建data文件夹,用于存放数据库文件
[root@192 local]# mkdir /usr/local/mysql/data
# 将解压后的mysql文件所有者和所属组改为mysql
[root@192 local]# chown -R mysql /usr/local/mysql
[root@192 local]# chgrp -R mysql /usr/local/mysql
[root@192 local]# ll mysql
总用量 296
drwxr-xr-x  2 mysql mysql   4096  9月 14 04:08 bin
drwxr-xr-x  2 mysql mysql      6 12月 24 10:32 data
drwxr-xr-x  2 mysql mysql     55  9月 14 04:08 docs
drwxr-xr-x  3 mysql mysql    282  9月 14 04:08 include
drwxr-xr-x  6 mysql mysql    201  9月 14 04:08 lib
-rw-r--r--  1 mysql mysql 287627  9月 14 00:15 LICENSE
drwxr-xr-x  4 mysql mysql     30  9月 14 04:08 man
-rw-r--r--  1 mysql mysql    666  9月 14 00:15 README
drwxr-xr-x 28 mysql mysql   4096  9月 14 04:08 share
drwxr-xr-x  2 mysql mysql     77  9月 14 04:08 support-files
[root@192 local]#
# 配置mysql环境变量
[root@192 local]# vim /etc/profile
# 在该文件中添加如下内容
export MYSQL_HOME=/usr/local/mysql/
export PATH=$PATH:$MYSQL_HOME/bin
[root@192 local]# source /etc/profile

# 初始化mysql数据库
[root@192 local]# ./mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
2022-12-24T02:34:53.336307Z 0 [System] [MY-013169] [Server] /usr/local/mysql/bin/mysqld (mysqld 8.0.31) initializing of server in progress as process 22021
2022-12-24T02:34:53.358364Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2022-12-24T02:34:54.122188Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
2022-12-24T02:34:55.447881Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: aAq*);up0Jx:
# 从上面信息可看出,此时mysql临时密码为:aAq*);up0Jx:
# 启动mysql服务
[root@192 local]# ./mysql/support-files/mysql.server start
Starting MySQL.Logging to '/usr/local/mysql/data/192.168.1.9.err'.
... SUCCESS!
# 连接mysql数据库,修改mysql数据库的root密码
[root@192 local]# mysql -uroot -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 9
Server version: 8.0.31

Copyright (c) 2000, 2022, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>
# 修改密码为qwe123
mysql> alter user 'root'@'localhost' identified by 'qwe123';
Query OK, 0 rows affected (0.14 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)

mysql>

4、安装galera4(下载编译好的二进制文件)
下载地址:https://releases.galeracluster.com/galera-4/binary/

[root@192 /]# mv /root/下载/galera-4-26.4.13.tar.gz /usr/local/
[root@192 /]# cd /usr/local/
[root@192 local]# tar -zxvf galera-4-26.4.13.tar.gz
[root@192 local]# mv galera-4-26.4.13 galera

5、修改配置文件(galera1)
将/usr/local/mysql/support-files/wsrep.cnf文件复制一份到/etc下,并重命名为my.cnf(galera2、galera3同理),在[mysqld]下添加如下内容

[root@192 bin]# vim /etc/my.cnf
# 添加以下内容
server-id=1
binlog_format=row
innodb_file_per_table=1
innodb_autoinc_lock_mode=2

wsrep_on=ON
wsrep_provider=/usr/local/galera/lib/libgalera_smm.so
wsrep_cluster_name="galera"
wsrep_cluster_address="gcomm://"
wsrep_node_name="galera1"
wsrep_node_address="192.168.1.4"
wsrep_sst_auth=root:"qwe123"
wsrep_sst_method=rsync

修改glaera2主机的/etc/my.cnf文件

[root@192 bin]# vim /etc/my.cnf
# 添加以下内容
server-id=2
binlog_format=row
innodb_file_per_table=1
innodb_autoinc_lock_mode=2

wsrep_on=ON
wsrep_provider=/usr/local/galera/lib/libgalera_smm.so
wsrep_cluster_name="galera"
wsrep_cluster_address="gcomm://192.168.1.4,192.168.1.6"
wsrep_node_name="galera2"
wsrep_node_address="192.168.1.5"
wsrep_sst_auth=root:"qwe123"
wsrep_sst_method=rsync

修改glaera3主机的/etc/my.cnf文件

[root@192 bin]# vim /etc/my.cnf
# 添加以下内容
server-id=3
binlog_format=row
innodb_file_per_table=1
innodb_autoinc_lock_mode=2

wsrep_on=ON
wsrep_provider=/usr/local/galera/lib/libgalera_smm.so
wsrep_cluster_name="galera"
wsrep_cluster_address="gcomm://192.168.1.4,192.168.1.5"
wsrep_node_name="galera3"
wsrep_node_address="192.168.1.6"
wsrep_sst_auth=root:"qwe123"
wsrep_sst_method=rsync

6、防火墙开通端口,将4567端口加入防火墙

[root@galera2 /]# netstat -nltp |grep mysqld
tcp        0      0 0.0.0.0:4567            0.0.0.0:*               LISTEN      8305/mysqld
tcp6       0      0 :::33060                :::*                    LISTEN      8305/mysqld
tcp6       0      0 :::3306                 :::*                    LISTEN      8305/mysqld
[root@galera2 /]# firewall-cmd --add-port=4567/tcp --permanent
success
[root@galera2 /]# firewall-cmd --reload
success
[root@galera2 /]#

7、启动集群
先启动galera1的mysql服务
再依次启动galera2、galera3的服务,启动完成之后,停止galera1的服务,修改/etc/my.cnf文件,将wsrep_cluster_address=字段修改为如下:

wsrep_cluster_address="gcomm://192.168.1.5,192.168.1.6"

8、测试验证
在其中一台mysql上新建数据库表,两外两台机器就可以同步看到了

 类似资料: