美文网首页
mysql多主集群 galera cluster for mys

mysql多主集群 galera cluster for mys

作者: cjlynn | 来源:发表于2022-01-18 16:45 被阅读0次

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

完成。

相关文章

网友评论

      本文标题:mysql多主集群 galera cluster for mys

      本文链接:https://www.haomeiwen.com/subject/arbkhrtx.html