当前位置: 首页 > news >正文

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

[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"

完成。



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

相关文章:

  • [OD E 100] 服务器广播需要广播的服务器数量
  • Win7编译GPU版llama.cpp部署deepseek-r1等大模型记录
  • 浅谈推理大模型中使用核心的算法
  • 青少年编程与数学 02-009 Django 5 Web 编程 19课题、RESTful API开发
  • DeepSeek 部署中的常见问题及解决方案:Mac 场景实践指南
  • uniapp 支付宝小程序自定义导航栏
  • OSM路网简化文档+实操视频讲解(道路中心线提取、拓扑检查,学术论文处理方式)5
  • LLMs Ollama
  • 【动态规划】详解 0-1背包问题
  • a-table排序提示的是英文,如果改成中文或自定义
  • 不受次数限制--轻松语音转文字
  • ASO中的A/B测试:2025全新指南
  • 全单模矩阵及其在分支定价算法中的应用
  • vue3 在element-plus表格使用render-header
  • 【力扣Hot 100】回溯1
  • gradio创建openai前端对接deepseek等模型流式输出markdown格式文本
  • SSH远程服务器免密码连接|含注意事项细节
  • 【在时光的棋局中修行——论股市投资的诗意哲学】
  • C语言中ASCII码与整型互相转换的那些事儿
  • C语言【基础篇】之函数——开启模块化开发的钥匙
  • 在岸、离岸人民币对美元汇率双双升破7.26关口
  • 武汉一季度GDP为4759.41亿元,同比增长5.4%
  • “90后”樊鑫履新乌兰察布市察右中旗副旗长人选
  • 央行副行长:研究建立民营中小企业增信制度,破解民营中小企业信用不足等融资制约
  • 稳就业稳经济五方面若干举措将成熟一项出台一项
  • 广州海关原党委委员、副关长刘小威被开除党籍