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"

完成。
© 著作权归作者所有,转载或内容合作请联系作者

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

相关推荐
葡萄成熟时 !2 小时前
JAVA 常用API学习笔记
java·笔记·学习
数字融合3 小时前
透明化地铁线视频孪生综合监控项目技术
大数据·人工智能·virtualenv
Rain的Java大神之路3 小时前
介绍一下分布式事务
java·分布式·后端·spring·spring cloud·架构·springcloud
东莞和裕包装4 小时前
高边压强度定制重型纸箱在汽车零部件堆叠运输中的不可替代性
大数据·汽车
吴声子夜歌4 小时前
Java面试题——基础(一)
java·开发语言
JoyCong19984 小时前
ToDesk个人版、专业版、游戏版、设计版、性能版、团队版权益介绍
大数据·运维·游戏·远程工作·远程操作
南城以南溫暖如初1475 小时前
外卖CPS实战指南:从技术选型到运营落地全流程解析
java·spring boot·mysql·架构·vue
傻啦嘿哟5 小时前
英雄联盟皮肤爬虫:爬取全皮肤价格与特效,做比价工具
java·c++·爬虫
Elastic 中国社区官方博客6 小时前
ES95:面向 Elasticsearch 时间序列指标的自适应压缩
大数据·运维·elasticsearch·搜索引擎·架构·全文检索
码匠许师傅6 小时前
【C++ 面试真题】24. 聊聊 C++ 的时间日期处理
java·c++·面试