千家信息网

MariaDB Galera Cluster部署实践

发表于:2024-10-06 作者:千家信息网编辑
千家信息网最后更新 2024年10月06日,官方文档:http://galeracluster.com/documentation-webpages/index.html一、 Galera Cluster的工作原理主要关注点是数据一致性。 事务
千家信息网最后更新 2024年10月06日MariaDB Galera Cluster部署实践

官方文档:

http://galeracluster.com/documentation-webpages/index.html

一、 Galera Cluster的工作原理

主要关注点是数据一致性。 事务既可以应用于每个节点,也可以不全部应用。 所以,只要它们配置正确,数据库保持同步。

Galera复制插件不同于传统的MySQL复制,可以解决多个问题,包括多主写入冲突,复制滞后和主从不同步。

在典型的Galera集群实例中,应用程序可以写入集群中的任何节点,然后通过基于认证的复制将事务提交(RBR事件)应用于所有服务器。

使用组通信和事务排序技术,基于认证的复制是同步数据库复制的另一种方法

二、Galera集群安装

说明:Galera集群至少需要三个节点的服务器硬件。

node-12:10.71.11.12node-13:10.71.11.13node-14:10.71.11.14

操作系统:

centos7

内核版本:

 3.10.0-693.21.1.el7.x86_64
开始安装

说明:为集群中的每个节点执行以下步骤。文档以node-12配置为例
1.编辑/etc/hosts文件,配置节点互相解析

[root@node-12 ~]# cat /etc/hosts127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4::1         localhost localhost.localdomain localhost6 localhost6.localdomain610.71.11.12  node-1210.71.11.13  node-1310.71.11.14  node-14

2.关闭节点防火墙

[root@node-12 ~]# cat /etc/sysconfig/selinux |grep di#     disabled - No SELinux policy is loaded.SELINUX=disabled#     minimum - Modification of targeted policy. Only selected processes are protected.

3.配置Galera集群yum源

[root@node-12 ~]# cat /etc/yum.repos.d/galera.repo [galera]name = Galerabaseurl = http://releases.galeracluster.com/galera-3/centos/7/x86_64gpgkey = http://releases.galeracluster.com/GPG-KEY-galeracluster.comgpgcheck = 1[mysql-wsrep]name = MySQL-wsrepbaseurl =  http://releases.galeracluster.com/mysql-wsrep-5.6/centos/7/x86_64gpgkey = http://releases.galeracluster.com/GPG-KEY-galeracluster.comgpgcheck = 1

4.更新yum源缓存

yum makecache

5.安装服务

yum install mysql-wsrep-shared-5.6

说明:如果节点上之前安装过mysql,执行上面命令可能会安装包冲突报错
6.以node-12为例,编辑/etc/my.cnf,添加如下配置

[root@node-12 ~]# cat /etc/my.cnf[mysqld]datadir=/var/lib/mysqlsocket=/var/lib/mysql/mysql.sockuser=mysqlbinlog_format=rowbind-address=10.71.11.12default_storage_engine=innodbinnodb_autoinc_lock_mode=2innodb_flush_log_at_trx_commit=0innodb_buffer_pool_size=122Mwsrep_provider=/usr/lib64/galera-3/libgalera_smm.sowsrep_provider_options="gcache.size=300M; gcache.page_size=300M"wsrep_sst_method=rsyncwsrep_cluster_name=MyClusterwsrep_cluster_address="gcomm://10.71.11.12,10.71.11.13,10.71.11.14"wsrep_node_name=node-12wsrep_node_address="10.71.11.12"[mysql_safe]log-error=/var/log/mysqld.logpid-file=/var/run/mysqld/mysqld.pid

说明:其他另外node-13和node-14依据1-6步配置,需要修改/etc/my.cnf与每个节点对应

系统内存配置说明

Galera Cluster的内存要求很难准确预测。 它使用的特定内存量可能会有很大差异,具体取决于给定节点接收的负载。 如果Galera Cluster尝试使用比节点更多的内存,则mysqld实例会崩溃。
保护节点系统崩溃的方法是确保服务有足够的swap 空间分区或者交换文件

检查系统可用交换空间


如果系统swap分区不满足环境需求,可以进行如下操作配置swap分区
说明:集群的中每个节点都要进行相关swap分区设置

1.根据需求在根目录下创建一个2G大小swap空文件

[root@node-11 ~]#fallocate -l 2048M /swapfile

或者执行

[root@node-11 ~]#dd if=/dev/zero of=/swapfile bs=1M count=2048

设置swap交换分区大小
2.设置swap文件权限

[root@node-11 ~]#chown 600 /swapfilell /swapfile -rw-r--r-- 1 600 root 2147483648 Apr 17 09:13 /swapfile

3.格式化swapfile

[root@node-11 ~]# mkswap /swapfileSetting up swapspace version 1, size = 2097148 KiBno label, UUID=6341a320-1804-4fe1-8c96-7c22fe270eeb

4 .激活swapfile

[root@node-11 ~]# swapon /swapfileswapon: /swapfile: insecure permissions 0644, 0600 suggested.swapon: /swapfile: insecure file owner 600, 0 (root) suggested.
  1. 编辑/etc/fstab,在文件底部加入如下配置
    /swapfile none swap defaults 0 0


    6.验证swap交换分区配置文件是否成功

    [root@node-11 ~]# swapon --summaryFilename                Type        Size    Used    Priority/swapfile                               file    2097148 0   -1

    说明:由于现在部署Galera集群的节点环境部署过其他环境,这里说下删除swap分区的步骤

[root@node-11 ~]# swapon --summaryFilename                Type        Size    Used    Priority/openstack/swap.img                     file    4194300 0   0/swapfile                               file    2097148 0   -1[root@node-11 ~]# swapoff /openstack/swap.img   ##首先停止swap分区[root@node-11 ~]# rm -rf /openstack/swap.img  ##删除swap分区文件[root@node-11 ~]# swapon --summaryFilename                Type        Size    Used    Priority/swapfile                               file    2097148 0   -1

三、启动Galera集群

说明:完成安装和配置Galera Cluster后,需要使用--wsrep-new-cluster选择一个节点上启动mysqld。 这将会初始化集群的核心组件。 在此之后启动的每个节点都将连接到该组件并开始复制
1.在node-12上使用参数--wsrep-new-cluster启动数据库服务

[root@node-12 mysql]# service mysql start --wsrep-new-cluster


数据库初始化报错解决办法,删除/var/lib/mysq/目录下的logfile

注意警告:只有在初始化主要组件时才使用--wsrep-new-cluster参数。 如果希望节点连接到现有群集时,不要执行这条命令。
2.在node-12节点启动数据库服务后,登录mysql数据库库,通过wsrep_cluster_size参数来判断启动是否成功。

SHOW STATUS LIKE 'wsrep_cluster_size';


说明:参数wsrep_cluster_size数值代表目前galera集群当前节点在线数

3.向galera集群添加节点,分别在node-12和node-13上执行下面命令启动数据库服务

[root@node-13 mysql]# service mysql startStarting MySQL.Logging to '/var/lib/mysql/node-13.err'........ SUCCESS![root@node-14 yum.repos.d]# service mysql startStarting MySQL.Logging to '/var/lib/mysql/node-14.err'....... SUCCESS!

然后node-13或者node-14上登录mysql数据库,查看wsrep_cluster_size的数值

[root@node-14 yum.repos.d]# mysql -uroot -pEnter password: Welcome to the MySQL monitor.  Commands end with ; or \g.Your MySQL connection id is 4Server version: 5.6.39 MySQL Community Server (GPL), wsrep_25.22Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.Oracle is a registered trademark of Oracle Corporation and/or itsaffiliates. Other names may be trademarks of their respectiveowners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql> SHOW STATUS LIKE 'wsrep_cluster_size';


到此,galera集群搭建成功

四、Galera集群复制测试

说明:要测试Galera群集是否正常工作
1.在数据库客户端上,验证所有节点是否已相互连接

[root@node-12 ~]# mysql -urootWelcome to the MySQL monitor.  Commands end with ; or \g.Your MySQL connection id is 4Server version: 5.6.39 MySQL Community Server (GPL), wsrep_25.22Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.Oracle is a registered trademark of Oracle Corporation and/or itsaffiliates. Other names may be trademarks of their respectiveowners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql> show status like 'wsrep_%';

参数说明:
wsrep_local_state_comment参数中Synced表示该节点已经连接到集群并能正常运行
wsrep_cluster_size的数值3表示galera集群中有3个节点都在线
wsrep_ready中on表示此节点连接到集群并能够处理事务。

2.在node-12上创建一个表并插入数据

[root@node-12 mysql]# mysqlWelcome to the MySQL monitor.  Commands end with ; or \g.Your MySQL connection id is 5Server version: 5.6.39 MySQL Community Server (GPL), wsrep_25.22Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.Oracle is a registered trademark of Oracle Corporation and/or itsaffiliates. Other names may be trademarks of their respectiveowners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql> CREATE DATABASE galeratest;Query OK, 1 row affected (0.01 sec)mysql> USE galeratest;Database changedmysql> CREATE TABLE test_table (id INT PRIMARY KEY AUTO_INCREMENT,msg TEXT ) ENGINE=InnoDB;Query OK, 0 rows affected (0.00 sec)mysql> INSERT INTO test_table (msg) VALUES ("Hello my dear cluster.");Query OK, 1 row affected (0.00 sec)mysql> INSERT INTO test_table (msg) VALUES ("Hello, again, cluster dear."); Query OK, 1 row affected (0.00 sec)
  1. 在node-13或者ndoe-14查看三个节点能够同步node-12上的数据操作
    [root@node-13 mysql]# mysqlWelcome to the MySQL monitor.  Commands end with ; or \g.Your MySQL connection id is 4Server version: 5.6.39 MySQL Community Server (GPL), wsrep_25.22

Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.

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> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| galeratest |
| mysql |
| performance_schema |
| test |
+--------------------+
5 rows in set (0.00 sec)
mysql> use galeratest;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> SELECT * FROM test_table;
+----+-----------------------------+
| id | msg |
+----+-----------------------------+
| 1 | Hello my dear cluster. |
| 4 | Hello, again, cluster dear. |
+----+-----------------------------+
2 rows in set (0.00 sec)

节点 集群 数据 配置 数据库 文件 服务 参数 系统 事务 内存 同步 应用 成功 命令 数值 环境 组件 三个 大小 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 安全狗官网服务器 数据库第三范式源代码 数据库查询两个表关键 linux下安装ftp服务器 促进网络安全产业发展的意见 形容网络技术有限公司的词 数据库处于热备用状态怎么办 免费云服务器管理软件 软件开发工程师的潜在工作部门 辽宁省网络安全应急中心待遇 北京企业软件开发服务介绍 永登软件开发 农用地分等数据库标准 网站服务器运维教程 xp连接管理器服务器 分析计算机病毒的危害及网络安全 C 删除数据库中相同行 苏州互联网软件开发多少钱 考数据库还是网络技术 新点 数据库连接失败 热血江湖手游修改数据库 移动网络安全方面的知识 期权代码软件开发 软件开发工具和硬件开发工具 苏州专业软件开发哪家正规 网络服务器开发用什么语言 网络安全思维链 魔兽世界新服务器大全 国内网络安全好的公司 对大学生网络安全法制教育的措施
0