mysql多主集群 galera cluster for mysql 8安装配置启动重启集群

news2025/3/29 3:29:00

[TOC]

一、安装mysql

1、安装

系统环境:
Ubuntu 18.04 64位
MySQL 8.0.19
下载MySQL APT安装配置包
首先访问 https://dev.mysql.com/downloads/repo/apt/ 获取配置包下载地址
wget https://dev.mysql.com/get/mysql-apt-config_0.8.14-1_all.deb
sudo dpkg -i mysql-apt-config_0.8.14-1_all.deb
sudo apt-get update
sudo apt-get install mysql-server -y
输入root密码0,也是数据库初始密码
选择身份验证方式、密码加密方式,这里默认的即可。回车 确定
安装完成。

运行后的pid和socket默认文件目录/run/mysqld/
日志文件:/var/log/mysql/error.log

2、启动,报错处理

2.1 启动

mysql -uroot -p0

2.2、报错 /tmp/mysql.sock
可以使用命令启动

mysql -uroot -p0 -S /run/mysqld/mysqld.sock=

或者修改配置加上socket项

[mysqld]
datadir=/usr/local/mysql/data
basedir=/usr/local/mysql
#(跟这个socket路径一样)
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

[client]
port=3306
socket=/var/lib/mysql/mysql.sock

3、初始化msql

mysqld --initialize-insecure  #root密码置空

service mysql start
mysql -uroot -p
#如果无法使用use mysql;
alter user 'root'@'localhost' identified by 'xxx';

use mysql;
update user set host="%" where user='root';
FLUSH PRIVILEGES;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

4、客户端工具连接报错

这是因为mysql8的加密方式和Navicat不一样

#修改编码方式
alter user root identified with mysql_native_password by 'xxx';

二、galera-mysql集群安装

资源下载与安装
https://galeracluster.com/downloads/
wsrep-api插件
http://releases.galeracluster.com/mysql-wsrep-8.0/ubuntu/pool/main/m/mysql-wsrep/?C=N;O=A
galera4
http://releases.galeracluster.com/galera-4/ubuntu/pool/main/g/galera-4/?C=N;O=A

1、安装对应依赖

所有节点执行

apt-get install python-software-properties -y  &&  apt-get install software-properties-common -y

2、添加GunPG key

所有节点执行

apt-key adv --keyserver keyserver.ubuntu.com --recv BC19DDBA

3、配置Ubuntu下galera源

所有节点执行
创建galera.list文件:

touch  /etc/apt/sources.list.d/galera.list

nano -w /etc/apt/sources.list.d/galera.list

在galera.list中添加内容:

#Codership Repository (Galera Cluster for MySQL)
deb http://releases.galeracluster.com/mysql-wsrep-8.0/ubuntu/ bionic main
deb http://releases.galeracluster.com/galera-4/ubuntu bionic main

链接中的“bionic”为你所用的ubuntu系统的版本号,如果不清楚自己的Ubuntu版本号,可通过命令lsb_release -a来查看。

保存退出:ctrl+x y 回车

4、继续配置源

所有节点执行

touch /etc/apt/preferences.d/galera.pref

nano  /etc/apt/preferences.d/galera.pref

在galera.pref文件中添加内容:

Package: *
Pin: origin releases.galeracluster.com
Pin-Priority: 1001

5、更新源

所有节点执行

sudo apt-get update

6、安装mysql和Galera

一旦在所有服务器上更新了存储库,就可以在三台服务器上运行以下命令安装MySQL8.0的修补程序与Galera:

sudo apt-get install galera-4 galera-arbitrator-4 mysql-wsrep-8.0

7、集群配置

新建文件/etc/mysql/conf.d/galera.cnf,基本配置

[mysqld]
binlog_format=ROW
default-storage-engine=innodb
innodb_autoinc_lock_mode=2
#bind-address=0.0.0.0
server_id=2

# Galera Provider Configuration
wsrep_on=ON
wsrep_provider=/usr/lib/galera/libgalera_smm.so
# Galera Cluster Configuration
wsrep_cluster_name="my_cluster"
#把三个node的IP地址写入进去
wsrep_cluster_address="gcomm://192.168.2.12:4567,192.168.2.13:4567,192.168.2.14:4567"
#wsrep_cluster_address="gcomm://"
# Galera Synchronization Configuration
wsrep_sst_method=rsync
wsrep_sst_auth=wsrep:sstpaas123
slow_query_log=on
# Galera Node Configuration
wsrep_node_address="192.168.2.13" #当前node的IP地址
wsrep_node_name="node02"
# 指定wsrep启动端口号,4567为默认值
wsrep_sst_donor='node04,node02,node03'

说明:
server_id集群每台服务器都不同
wsrep_cluster_address第一台主集群配置的时候="gcomm://",启动之后更改成全配置
wsrep_sst_method=rsync全量配置或增量配置
wsrep_node_address=本机ip
wsrep_node_name=本机hostname
wsrep_sst_donor=把本机hostname填到最后或者不填,否则有些情况下无法启动并加入到集群

8、启动集群

#启动集群第一个主
mysqld_bootstrap
启动其他
service mysql start
#查看集群状态
mysql -uroot -p'xxxxxxxxx' -e "SHOW STATUS LIKE 'wsrep_cluster%'"
#wsrep_cluster_size 结果代表集群有几个节点
#查看日志
tail -f /var/log/mysql/error.log
报错解决办法:
第一步:sudo apt-get remove apparmor -y
第二步:#打开文件/usr/share/mysql-8.0/mysql-systemd-start,将该文件的以下行注释掉。
sanity() {
    #/lib/apparmor/profile-load usr.sbin.mysqld   #这行注释掉
}
第三步:重启虚拟机 sudo reboot
第四步:执行service  mysql  start

9、重启集群

注意:关闭Mysql自启动,如果所有服务器全部reboot,重启集群的时候,会不知道哪台服务器的seqno最大,重启集群,需要从最大的seqno开始,否则数据会被还原。
cat /var/lib/mysql/grastate.dat;查看seqno

cat /var/lib/mysql/grastate.dat
#选择主节点,执行:
sed -i 's/safe_to_bootstrap: 0/safe_to_bootstrap: 1/g' /var/lib/mysql/grastate.dat
#重启3种情况
#第一种情况:第一次启动,配置wsrep_cluster_address="gcomm://",重启好之后改成全部
service mysql start --wsrep-new-cluster (第一次启动一定要使用--wsrep-new-cluster,再次启动就不需要)
#第二种情况:没有全部停机的情况下,wsrep_cluster_address="gcomm://192.168.2.12:4567,192.168.2.13:4567,192.168.2.14:4567"  
service mysql start
#第三种情况:全部停机了,wsrep_cluster_address="gcomm://192.168.2.12:4567,192.168.2.13:4567,192.168.2.14:4567"  不想改配置就用这种
mysqld --wsrep-new-cluster --wsrep-cluster-address='gcomm://' &
#service mysql start --wsrep-new-cluster --wsrep-cluster-address='gcomm://'   #这句不生效,只能用上面的

#再启动集群其他节点
service mysql start
注意:如果无法启动其他节点
#删除所有节点的两个缓存文件及/var/lock/subsys 目录下的mysql 文件,然后重新启动:
rm -rf /var/lock/subsys/mysql
rm -rf /var/lib/mysql/galera.cache
rm -rf /var/lib/mysql/grastate.dat
#如果还是无效,删除wsrep_sst_donor配置,或者把自己写到最后,或者自己不写
#wsrep_sst_donor="node04,node01,node03,node02"

完成。



喜欢的朋友记得点赞、收藏、关注哦!!!

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

mybatis 入门案例

前言 我们清楚 mybatis 是一个持久层框架,可以非常便捷的操作数据库。如最常见的对数据进行增删改查操作。 项目准备 1 在mybatis 数据库 创建 user 用户表 并插入以下两条数据 以下是一个user.sql 脚本文件如何使用 脚本文件可以参照MySQL数据库的备份与还原_控…

Python使用Flask结合DeepSeek开发

一、背景 我之前关于DeepSeek使用ollama部署的文章大家可以把DeepSeek大模型部署起来。那么ollama还提供了可以调用对应部署模型的API接口。我们可以基于这些接口,做自己的二次开发。使用pythonflaskollama就可以进行模型对话调用。并且前端采用SSE的技术&#xff0…

前端常见面试题-2025

vue4.0 Vue.js 4.0 是在 2021 年 9 月发布。Vue.js 4.0 是 Vue.js 的一个重要版本,引入了许多新特性和改进,旨在提升开发者的体验和性能。以下是一些关键的更新和新特性: Composition API 重构:Vue 3 引入了 Composition API 作为…

大模型开发实战篇7:语音识别-语音转文字

语音识别大模型,是人工智能领域的一项重要技术,它能够将人类的语音转换为文本。近年来,随着深度学习技术的不断发展,语音识别大模型取得了显著的进展,并在各个领域得到了广泛应用。 主流语音识别大模型 目前&#xf…

QML 部件获得焦点触发的全局槽函数 onActiveFocusItemChanged

在qml的window窗口中,假如添加里许多其他部件,当这些部件改变时,会有一个全局部件焦点改变槽函数触发,就是 onActiveFocusItemChanged 可以通过此槽函数就可以知道当前焦点在哪一个部件上,也可以做一些自动化测试等&…

如何用ClassFinal加密JAR保护知识产权!

0.前言 凌晨三点的办公室,咖啡杯底凝着褐色的残渍,键盘上跳跃的手指突然停滞。张工程师盯着屏幕上的反编译窗口,自己耗时三个月开发的规则引擎此刻像被解剖的标本般赤裸裸摊开——这正是上周交付给客户的jar包。当.class文件以伪代码形式暴露…

轨迹优化 | 基于LBFGS优化器的无约束路径平滑(附ROS C++仿真)

目录 0 专栏介绍1 LBFGS优化器1.1 拟牛顿法框架1.2 LBFGS-Lite库 2 基于LBFGS的轨迹优化3 ROS C仿真 0 专栏介绍 🔥课设、毕设、创新竞赛必备!🔥本专栏涉及更高阶的运动规划算法轨迹优化实战,包括:曲线生成、碰撞检测…

Vue2到Vue3:无痛升级之路

为什么要从 Vue2 升级到 Vue3 Vue 3 带来了众多令人瞩目的改进和新特性,这些优势使得升级到 Vue 3 对项目的长期发展具有重要意义。 性能显著提升:Vue 3 采用了基于 Proxy 的响应式系统,相比 Vue 2 使用的 Object.defineProperty&#xff0c…

第28篇 基于ARM A9处理器用C语言实现中断<四>

Q:可以改变上一期实验工程里红色LED计数的速率吗? A:在按键中断服务程序中使HPS Timer 0停止计数,修改定时器中使用的预设计数值,然后重启定时器;所有的修改都是在按键中断服务程序中完成。主程序和其他…

时间序列分析(四)——差分运算、延迟算子、AR(p)模型

此前篇章: 时间序列分析(一)——基础概念篇 时间序列分析(二)——平稳性检验 时间序列分析(三)——白噪声检验 一、差分运算 差分运算的定义:差分运算是一种将非平稳时间序列转换…

《深度学习》——调整学习率和保存使用最优模型

调整学习率 在使用 PyTorch 进行深度学习训练时,调整学习率是一个重要的技巧,合适的学习率调整策略可以帮助模型更好地收敛。 PyTorch 提供了多种调整学习率的方法,下面将详细介绍几种常见的学习率调整策略及实例代码: torch.opt…

零风险把数据盘挂载给根分区,给生产环境服务器扩容

背景 刚买服务器时,用户量不大,所以结合预算不多情况下,都是默认买个小点的系统盘挂载到服务器上,(或者默认服务器的40G),等到某一天业务量上来之后,发现抓肘见襟给自己一手措不及防…

在vscode中拉取gitee里的项目并运行

拉取项目: 方法一:vscode点击查看--->终端(或者直接通过快捷键ctrol+ `打开) 在终端内通过cd命令定位到你想存放项目的文件夹 例如:cd h: 通过命令:git clone 地址 例如:git clone newbee-mall-vue-app: 前端代码 等待拉取完成即可在对应文件夹下看到项目啦 方…

IDEA通过Contince接入Deepseek

Deepseek 的出色表现,上期【Deepseek得两种访问方式与本地部署】 安装Continue插件 第一步、下载插件 在编辑栏【File】->设置【Settiings】或快捷键【CtrlAltS】,弹窗的左侧导航树,选择【plugins】,在marketplace 搜索【Continue】,点…

数据结构------单向链表。

一.实现单向链表的头插,头删,尾插,尾删,按位置插,按位置删,按位置修改,按元素查找,按元素修改,按元素删除,单链表的逆置,查找倒数第几个元素&…

算法——结合实例了解Minimax算法(极小化极大算法)

计算机科学中最有趣的事情之一就是编写一个人机博弈的程序。有大量的例子,最出名的是编写一个国际象棋的博弈机器。但不管是什么游戏,程序趋向于遵循一个被称为Minimax算法,伴随着各种各样的子算法在一块。本篇将简要介绍 minimax 算法&#…

cornerstone3D学习笔记-MPR

最近在研究如何利用cornerstone3D (v1.70.13) 来实现MPR功能,找到它的一个demo -- volumeBasic, 运行效果如下图 看了下主程序的示例代码,非常简单,可以说corestone3D这个库把很多细节都封装起来了,使得调用者可以很简单的快速实…

C++ Primer 函数匹配

欢迎阅读我的 【CPrimer】专栏 专栏简介:本专栏主要面向C初学者,解释C的一些基本概念和基础语言特性,涉及C标准库的用法,面向对象特性,泛型特性高级用法。通过使用标准库中定义的抽象设施,使你更加适应高级…

Dav_笔记14:优化程序提示 HINTs -4

指定全局表提示 指定表的提示通常是指发生提示的DELETE,SELECT或UPDATE查询块中的表,而不是指语句引用的任何视图中的表。 如果要为显示在视图中的表指定提示,Oracle建议使用全局提示,而不是在视图中嵌入提示。 您可以使用包含具…

桥接模式 Bridge Pattern

桥接模式Abstraction 和 Implementor 的理解 在图书馆看到一本 通过电商项目真正实战《贯穿设计模式》。拿起来翻到了 桥接模式,感觉味道不对,和我印象中不一样。 感谢这位同学提供的源码 贯穿设计模式-适配器模式桥接模式_-CSDN博客GitHub - WeiXiao…