安装mariadb+galera搭建数据库集群

记一次安装mariadb+galera搭建数据库集群过程。

背景:使用单机mariadb数据库提供服务,存在数据无实时备份,数据服务器无切换等问题,无法应对服务器故障停服,无法持续提供数据服务的情况。之前使用几种方法解决

  1. mysqldump每天定时将数据打包备份,但库表数据量变大时,硬盘空间也成了问题。

  1. binlog设置主从服务器,但经常出现 从库停止同步,需手工设置更新点,维护成本较高。

于是尝试采用mariadb+galera搭建数据库集群,好处如下:

主要功能:

  • 同步复制

  • 真正的 multi-master,即所有节点可以同时读写数据库

  • 自动的节点成员控制,失效节点自动被清除

  • 新节点加入数据自动复制

  • 真正的并行复制,行级

  • 用户可以直接连接集群,使用感受上与MySQL完全一致

优势:

  • 因为是多主,所以不存在Slavelag(延迟)

  • 不存在丢失事务的情况

  • 同时具有读和写的扩展能力

  • 更小的客户端延迟

  • 节点间数据是同步的,而 Master/Slave 模式是异步的,不同 slave 上的 binlog 可能是不同的

以下总结搭建过程,以及遇到的问题。

一、材料准备:

linux系统:cat /proc/version 查看版本Debian 8.3.0-6 promox ve的版本

数据库版本:10.3.38-MariaDB(需要安装同一版本)

节点1:192.168.1.131

节点2:192.168.1.132

节点3:192.168.1.133

安装的软件包:

apt install -y mariadb mariadb-server mariadb-common galera rsync

galera官网安装视频:

installing galera vedio

二、安装数据库版本时遇到的问题:

一台服务器的mariadb版本10.5,另一台的版本是10.3,配置完启动后,没有进行数据同步。于是将10.5版本卸载,安装10.3版本。本来是挺简单的事,卸载--查看版本--安装指定版。结果提示无法安装,提示部分包无法安装。

root@: apt-get remove --auto-remove mariadb-server
root@: apt search mariadb-server 
正在排序... 完成
全文搜索... 完成
mariadb-server/oldstable,now 1:10.3.38-0+deb10u1 all [已安装]
  MariaDB database server (metapackage depending on the latest version)
mariadb-server-10.3/oldstable,now 1:10.3.38-0+deb10u1 amd64 [已安装,自动]
  MariaDB database server binaries
mariadb-server-core-10.3/oldstable,now 1:10.3.38-0+deb10u1 amd64 [已安装,自动]
root@: apt-get install mariadb-server=10.3.38

后来分析一下,应该是回退至低版本,相应的依赖包是高版本,无法回退至低版本。于是我做了如下的操作:

  1. 配置apt源,添加清华源pve依赖包

deb http://deb.debian.org/debian/ buster main
deb http://deb.debian.org/debian/ buster-updates main contrib non-free
deb http://security.debian.org/debian-security buster/updates main
#清华源pve依赖包
deb https://mirrors.tuna.tsinghua.edu.cn/proxmox/debian/pve buster pve-no-subscription
  1. apt update和apt upgrade,一番系统更新之后,改用aptitude install -y mariadb-server=10.3.38

提示需安装100多个包。最后终于安装mariadb-server及相应的依赖应安装下去。

三、配置mariadb可远程访问

主要三步操作:

  1. 在/etc/mysql/mariadb.conf.d/50-server.cnf ,将127.0.0.1注释掉;

  1. 使用grant给root赋权;

grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option;

或者使用mysql_secure_installation 设置root权限和密码

3、查看root是否赋值成功

root@:# mysql -u root
MariaDB [(none)]> user mysql
select host,password,user from user;
+-----------+-------------------------------------------+------+
| host      | password                                  | user |
+-----------+-------------------------------------------+------+
| localhost |                                           | root |
| %         | *1B29504121B3B0BD0511F27DD632AF519B3AAFF2 | root |
+-----------+-------------------------------------------+------+

可参考:Mysql创建用户和授权

四、防火墙放通端口

galera端口4444,4567,4568等3个端口,mariadb端口3306,均需要放通可访问。

3306:对于使用mysqldump方法的MySQL客户端连接和状态快照传输。

4567:对于在此端口上同时使用UDP和TCP的Galera Cluster复制流量和多播复制。

4568:增量状态转移。

4444:用于所有其他状态快照转移。

以下用放通3306为例,其他端口访照。

#仅放通端口访问
root@:firewall-cmd --permanent --zone=public --add-port=3306/tcp
root@:iptables -I INPUT -p tcp  --dport 3306 -j ACCEPT
#对部分ip段可访问
root@:firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="10.245.182.0/24" port port="4444" protocol="tcp" accept"
root@:iptables -I INPUT s 192.168.1.0/24 -p tcp  --dport 3306 -j ACCEPT

五、配置第一个节点

1、关闭数据库,新建配置文件:
root@:/etc/mysql/mariadb.conf.d# cat galara.conf
[mysqld]
wsrep_on=ON
wsrep_provider=/usr/lib/galera/libgalera_smm.so
binlog_format=row
default-storage-engine=InnoDB
innodb_autoinc_lock_mode=2
bind-address=0.0.0.0
wsrep_cluster_name=node101
wsrep_cluster_address="gcomm://192.168.1.101,192.168.1.102,192.168.1.103"
wsrep_sst_method=rsync   
wsrep_node_address=192.168.1.101
wsrep_node_name=node101

相应的说明如下:

wsrep_on:在10.1以上版本的mariadb中,该参数的默认值为OFF,意为该节点的事务将不会发送给集群中的其他节点;

wsrep_provider:wsrep库的路径,请自行确认;

wsrep_cluster_name:集群名称,可自定义;

wsrep_cluster_address:第一个启动的节点务必设置为以上代码中的值;

wsrep_node_address:定义本节点的wsrep地址与端口,默认端口为4567;

wsrep_sst_receive_address:定义本节点接受传入请求的域名或IP,可附带端口,默认的端口根据wsrep_sst_method定义的快照传输方式的不同而不同;

wsrep_node_name:本节点名称,在集群中需唯一;

wsrep_sst_auth:快照传输方式的验证信息;

wsrep_sst_method:定义快照传输方式;

bind-address:数据库监听的IP地址。

默认情况下,wsrep会监听TCP 4567端口,当有新节点加入时,新节点会通过wsrep_cluster_address中设定的节点信息,拉取该节点的信息。

当没有设定wsrep_node_address或wsrep_sst_receive_address,galera将监听数据库bind-address中设定的IP地址,如果没有设定bind-address,则监听默认的IP地址。

如果mariadb服务器有多个IP地址,则可以通过上面两个变量设定监听特定的IP地址或端口。例如在腾讯云环境中,系统中的IP地址为10开头的内网IP,公网请求则通过NAT的方式传入,此时就需要设定上面的两个变量,指定域名或公网IP,否则galera集群将无法正常工作。

如果内网IP可达,则无需设定上面两个变量。

wsrep_sst_method可以设定不同的数据库同步方式,默认是使用rsync,请根据实际情况设定并在防火墙中放行特定的端口。

2、启动节点:

要调出第一个节点,我们需要使用特殊的启动脚本。每个联机的节点都尝试连接到其galera.cnf文件中指定的至少一个其他节点以获取其初始状态。如果不使用galera_new_cluster允许systemd传递--wsrep-new-cluster参数的脚本,则systemctl start mariadb会失败,因为没有节点为第一个节点连接而运行。

root@: galera_new_cluster
#或者
root@: service  mariadb start --wsrep-new-cluster

当此脚本成功时,该节点将注册为集群的一部分,我们可以使用以下命令查看它:

mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size'"
+--------------------+-------+
| Variable_name      | Value |
+--------------------+-------+
| wsrep_cluster_size | 1     |
+--------------------+-------+

六、配置第二三个节点

1、关闭数据库,新建配置文件:

配置与第五点一致,只需改下ip地址即可。

2、启动节点:

在剩余的节点上,我们可以正常启动mysql。他们将搜索联机的集群列表中的任何成员,当他们找到时,他们将加入集群。此时提示出错,访问4567端口超时 timed out。

使用telnet 192.168.1.101 4567却提示成功。

root@: systemctl start mariadb
root@: /var/log/mysql/error.log
2023-03-24 14:13:40 0 [Note] WSREP: (01000ffc, 'tcp://0.0.0.0:4567') connection to peer ba874568 with addr tcp://192.168.1.101:4567 timed out, no messages seen in PT3S
root@: 

http://www.manongjc.com/detail/51-wuuvpeghvirjjrp.html

https://zhuanlan.zhihu.com/p/46675331

MariaDB Galera集群部署 - 凡是过往皆为序章 - 博客园

MariaDB Galera集群入门教程-腾讯云开发者社区-腾讯云

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/968664.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

WPS接入DeepSeek模型

1.wps 下载安装 WPS-支持多人在线协作编辑Word、Excel和PPT文档_WPS官方网站 (最好是安装最新的wps) 2.offieceAi工具下载安装 软件下载 | OfficeAI助手 下载后安装下载下来的两个工具。安装路径可以自行修改 3.打开WPS,点击文件-》 选项-》信任中心 勾…

4. React 中的 CSS

用例中的干净的脚手架的创建可以参考另一篇文章:3.React 组件化开发React官方并没有给出在React中统一的样式风格: 由此,从普通的css,到css modules,再到css in js,有几十种不同的解决方案,上百…

Unity进阶教程AOI算法原理详解

最新课程《全栈双客户端(Unity/Cocos) TurnKey方案》更新了AOI专题,今天分享一下AOI算法的实现原理。 AOI的功能和作用 在MMORPG网路游戏当中,单服同时在线一般都会有几千人。当有个玩家执行一个操作,理想情况下要把玩家的操作广播同步给单…

w~大模型~合集30

我自己的原文哦~ https://blog.51cto.com/whaosoft/13284996 #VideoMamba 视频理解因大量时空冗余和复杂时空依赖,同时克服两个问题难度巨大,CNN 和 Transformer 及 Uniformer 都难以胜任,Mamba 是个好思路,让我们看看本文是…

【ThreeJS Basics 1-3】Hello ThreeJS,实现第一个场景

文章目录 环境创建一个项目安装依赖基础 Web 页面概念解释编写代码运行项目 环境 我的环境是 node version 22 创建一个项目 首先,新建一个空的文件夹,然后 npm init -y , 此时会快速生成好默认的 package.json 安装依赖 在新建的项目下用 npm 安装依…

Python----PyQt开发(PyQt基础,环境搭建,Pycharm中PyQttools工具配置,第一个PyQt程序)

一、QT与PyQT的概念和特点 1.1、QT QT是一个1991年由The Qt Company开发的跨平台C图形用户界面应用程序开发 框架,可构建高性能的桌面、移动及Web应用程序。也可用于开发非GUI程序,比如 控制台工具和服务器。Qt是面向对象的框架,使用特殊的代…

PostgreSQL 开发利器:Navicat 核心功能与资源攻略

近几年,🐘 PostgreSQL 在全球数据库排名中表现优异。在 2025 年 2 月 DB-Engines 排名中 (如图),PostgreSQL 稳居第四名,并逐渐逼近第三名的 Microsoft SQL Server,其评分和受欢迎度持续增长,成为开源数据库…

大模型数据集全面整理:444个数据集下载地址

本文针对Datasets for Large Language Models: A Comprehensive Survey 中的 444 个数据集(涵盖8种语言类别和32个领域)进行完整下载地址整理收集。 2024-02-28,由杨刘、曹家欢、刘崇宇、丁凯、金连文等作者编写,深入探讨了大型语…

【AI大模型】Ollama部署本地大模型DeepSeek-R1,交互界面Open-WebUI,RagFlow构建私有知识库

文章目录 DeepSeek介绍公司背景核心技术产品与服务应用场景优势与特点访问与体验各个DeepSeek-R系列模型的硬件需求和适用场景 Ollama主要特点优势应用场景安装和使用配置环境变量总结 安装open-webui下载和安装docker desktop配置镜像源安装open-webui运行和使用 RagFlow介绍主…

修改docker内容器中的某配置文件的命令

先找到配置文件config.php find / -name "config.php" 2>/dev/null 然后用vi编辑器修改配置文件 vi /var/www/config.php 最后就是vi的基本操作,根据具体需求使用: vi 有两种主要模式: 命令模式:进入 vi 后的默认…

23.[前端开发]Day23-移动端适配方案-考拉海购移动端项目

01-05 移动端适配rem方案 适配方案 – rem动态html的font-size rem的font-size尺寸 方式一&#xff1a;动态font-size-媒体查询 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Com…

数据中心网络监控

数据中心是全球协作的特定设备网络&#xff0c;用来在internet网络基础设施上传递、加速、展示、计算、存储数据信息。 对于任何利用IT基础设施的企业来说&#xff0c;数据中心都是运营的核心&#xff0c;它本质上为整个业务网络托管业务应用程序和存储空间。数据中心可以是任…

网络初识-

网络的相关概念 一、局域网和广域网 将各种计算机、外部设备等相互连接起来&#xff0c;实现在这个范围内数据通信和资源共享的计算机网络。它的覆盖范围通常在几百米到几公里之内。例如&#xff0c;一个小型企业的办公室&#xff0c;通过交换机将多台电脑连接在一起&#xf…

如何使用DHTMLX Scheduler的拖放功能,在 JS 日程安排日历中创建一组相同的事件

DHTMLX Scheduler 是一个全面的调度解决方案&#xff0c;涵盖了与规划事件相关的广泛需求。假设您在我们的 Scheduler 文档中找不到任何功能&#xff0c;并且希望在我们的 Scheduler 文档中看到您的项目。在这种情况下&#xff0c;很可能可以使用自定义解决方案来实现此类功能。…

haproxy+nginx负载均衡实验

准备三台虚拟机&#xff1a; HAProxy 服务器192.168.65.131Web 服务器 1192.168.65.132Web 服务器 2192.168.65.133 在 HAProxy 服务器&#xff08;192.168.65.131&#xff09;上操作&#xff1a; 安装 HAProxy&#xff1a; sudo yum install -y haproxy编辑 HAProxy 配置…

数据结构与算法之排序算法-插入排序

排序算法是数据结构与算法中最基本的算法之一&#xff0c;其作用就是将一些可以比较大小的数据进行有规律的排序&#xff0c;而想要实现这种排序就拥有很多种方法~ 那么我将通过几篇文章&#xff0c;将排序算法中各种算法细化的&#xff0c;详尽的为大家呈现出来&#xff1a; &…

cv2小练习

基础概念 帧率是指在单位时间内&#xff0c;显示的图像帧数的数量。它是衡量视频或动画流畅度的一个重要指标。帧率的单位通常是每秒帧数&#xff08;Frames Per Second&#xff0c;简称FPS&#xff09;。在数字视频和计算机图形领域&#xff0c;帧率是决定视频播放质量和流畅度…

在Mac arm架构终端中运行 corepack enable yarn 命令,安装yarn

文章目录 1. 什么是 Corepack&#xff1f;2. 运行 corepack enable yarn 的作用3. 如何运行 corepack enable yarn4. 可能遇到的问题及解决方法问题 1&#xff1a;corepack 命令未找到问题 2&#xff1a;Yarn 未正确安装问题 3&#xff1a;权限问题 5. 验证 Yarn 是否启用成功6…

Spring基于文心一言API使用的大模型

有时做项目我们可能会遇到要在项目中对接AI大模型 本篇文章是对使用文心一言大模型的使用总结 前置任务 在百度智能云开放平台中注册成为开发者 百度智能云开放平台 进入百度智能云官网进行登录&#xff0c;点击立即体验 点击千帆大模型平台 向下滑动&#xff0c;进入到模型…

【Vue中BUG解决】npm error path git

报错内容如下&#xff1a; 从错误信息可知&#xff0c;这是一个 ENOENT&#xff08;No Entry&#xff0c;即找不到文件或目录&#xff09;错误&#xff0c;并且与 git 相关。具体来说&#xff0c;npm 在尝试调用 git 时&#xff0c;无法找到 git 可执行文件&#xff0c;下面为…