Galera Cluster for Mysql集群环境搭建

1、系统环境

         CentOS 7.5   虚拟机环境 

          NODE1:192.168.1.33

          NODE2:192.168.1.34

          NODE3:192.168.1.35

2、linux 更换国内镜像

  首先备份/etc/yum.repos.d/CentOS-Base.repo

  执行命令:

mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

下载网易repos  通过ftp 上传至/etc/yum.repos.d/ 目录下

下载地址:http://mirrors.163.com/.help/centos.html

替换完成后执行:

yum clean all
yum makecache

3、安装清华大学 elep repo

执行命令:

rpm -ivh https://mirrors.tuna.tsinghua.edu.cn/epel/epel-release-latest-7.noarch.rpm

4、创建mysql目录及mysql日志文件

执行命令:

vi /var/log/mysql.error

日志文件赋权限

chmod -R 777 /var/log/mysql.error

创建mysql 数据目录

mkdir -p /usr/local/mysql/data/

赋权限

chmod -R 777 /usr/local/mysql/

 

5、卸载 mariadb

查看系统是否已经安装了mariadb

执行命令:

rpm -qa | grep mariadb

如果存在则执行:

rpm -e --nodeps mariadb-libs-5.5.56-2.el7.x86_64 (此处是我的系统)

6、开启防火墙

执行命令:

firewall-cmd --zone=public --add-port=3306/tcp –permanent
firewall-cmd --zone=public --add-port=4444/tcp –permanent
firewall-cmd --zone=public --add-port=4567/tcp –permanent

重启防火墙

firewall-cmd --reload

7、设置SELinux

执行命令:

vi /etc/selinux/config

修改

SELINUX=enforcing 为 permissive

执行 reboot 重启电脑

8、下载 Galear 组件

由于下载慢 可以在此下载

官方下载地址:https://galeracluster.com/downloads/

 选择CentOS

选择 7

选择x86_64

点击下载galera-3-25.3.28-1.el7.x86_64.rpm

下载:

选择 CentOS

进去后所有的下载所有的RPM

9、安装Galear 依赖包

执行命令:

yum -y install gcc gcc-c++ openssl openssl-devel lsof socat perl boost-devel rsync jemalloc libaio libaio-devel net-tools

10、安装Galear

上传刚才下载的文件到linux 目录后依次执行:

rpm -ivh mysql-wsrep-common-5.7-5.7.28-25.20.el7.x86_64.rpm
rpm -ivh mysql-wsrep-libs-5.7-5.7.28-25.20.el7.x86_64.rpm
rpm -ivh mysql-wsrep-client-5.7-5.7.28-25.20.el7.x86_64.rpm
rpm -ivh mysql-wsrep-server-5.7-5.7.28-25.20.el7.x86_64.rpm
rpm -ivh mysql-wsrep-libs-compat-5.7-5.7.28-25.20.el7.x86_64.rpm
rpm -ivh mysql-wsrep-devel-5.7-5.7.28-25.20.el7.x86_64.rpm
rpm -ivh mysql-wsrep-5.7-5.7.28-25.20.el7.x86_64.rpm
rpm -ivh galera-3-25.3.28-1.el7.x86_64.rpm

11、创建wsrep.cnf 文件

编辑 /etc/my.cnf 注释掉所有,增加!includedir /etc/my.cnf.d/

执行命令:

vi  /etc/my.cnf.d/wsrep.cnf
[mysqld]
#设置跳过密码认证(自定义密码设置成功后,需要删除此项)
skip-grant-tables
lower_case_table_names=1
# 设置3306端口
port=3306
# 设置mysql数据库的数据的存放目录
datadir=/usr/local/mysql/data
# 允许最大连接数
max_connections=10000
# 允许连接失败的次数。
max_connect_errors=20
# 服务端使用的字符集默认为UTF8
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 默认使用“mysql_native_password”插件认证
default_authentication_plugin=mysql_native_password
#MySQL服务器的ID,必须是唯一的,集群各个节点也不同
server_id=1
# 防止日志时间和系统时间不一样
log_timestamps=SYSTEM
explicit_defaults_for_timestamp=true
log_error=/var/log/mysql.error
pid_file=/run/mysqld/mysqld.pid
user=mysql
socket=/usr/local/mysql/data/mysql.sock
# galera集群的名字,必须是统一的
wsrep_cluster_name='cs_cluster'
# wsrep提供者,必须配置(可以通过find命令查找 该文件在那两个目录下)
wsrep-provider=/usr/lib64/galera-3/libgalera_smm.so
#wsrep节点的ID,必须是唯一的,集群各个节点也不同
wsrep_node_name = node1
# 集群中的其他节点地址,可以使用主机名或IP (数据库初始化之前先不配置此项,但是初始化完成之后需要配置此项)
#wsrep_cluster_address=gcomm://192.168.1.33:4567,192.168.1.34:4567,192.168.1.35:4567
wsrep_cluster_address=gcomm://
# 本机节点地址,可以使用主机名或IP
wsrep_node_address='192.168.1.33'
# 指定wsrep启动端口号,4567为默认值
wsrep_provider_options ="gmcast.listen_addr=tcp://192.168.1.33:4567"
# 一个逗号分割的节点串作为状态转移源,比如 wsrep_sst_donor=node1,node2,node3 如果node1可用,用node2,如果node2不可用,用node3,最后的逗号表明让提供商自己选择一个最优的。
wsrep_sst_donor='node1,node2,node3'
# 集群同步方式
wsrep_sst_method=rsync
# 集群同步的用户名密码
wsrep_sst_auth=test:test
slow_query_log=on
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
socket=/usr/local/mysql/data/mysql.sock
[client]
# 设置mysql客户端连接服务端时默认使用的端口
port=3306
default-character-set=utf8
socket=/usr/local/mysql/data/mysql.sock
[mysqldump]
max_allowed_packet = 512M
[mysqld_safe]
malloc-lib=/usr/lib64/libjemalloc.so.1

12、初始化mysql

 

初始化mysql:

mysqld --initialize –-console

启动mysql:

service mysqld start

进入mysql 并设置密码

 mysql -u root -p 

注意:

如果遇到(ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/usr/local/mysql/data/mysql.sock' (2) )

重启mysql 服务  systemctl restart mysqld.service 

由于之前设置了 skip-grant-tables 因此直接按回车进入

修改mysql 密码:

update mysql.user set authentication_string=password('root') where user='root';
flush privileges;

键入:quit 退出

删除skip-grant-tables

重启mysql 服务

执行:

service mysqld start

用之前修改的密码进入mysql

mysql -u root –p
输入上面修改的密码:root

再次修改密码执行:

alter user 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root'
flush privileges;

设置mysql 可以远程登录

use mysql;
update user set user.Host='%' where user.User='root';
flush privileges;

设置mysql 开机启动

systemctl enable mysqld.service
chkconfig --levels 2345 mysqld on

注意:正在将请求转发到“systemctl enable mysqld.service”

13、注意事项

按照上面的步骤安装其余两台机器或者通过虚拟机克隆,克隆出两台机器,需要注意的是一下三项参数必须按照不同机器来配置

server_id=1

wsrep_node_name = node1

wsrep_provider_options ="gmcast.listen_addr=tcp://192.168.1.33:4567"

14、启动集群

其余两台机器安装好之后,启动集群环境

  • 编辑/etc/my.cnf.d/wsrep.cnf

        把wsrep_cluster_address=gcomm:// 改为其余两个节点的实际ip地址

        如我的配置:wsrep_cluster_address=gcomm://192.168.1.33:4567,192.168.1.34:4567,192.168.1.35:4567

        修改完成后停止mysql 服务

systemctl stop mysqld.service

 

  • 启动集群环境,第一台启动的集群服务必须使用下面的命令:

   

bash  /usr/bin/mysqld_bootstrap 
  • 其余节点启动

使用:

systemctl start mysqld.service

注意:其余节点启动之前也需要把把wsrep_cluster_address=gcomm:// 改为其余两个节点的实际ip地址

启动之后查看集群状态

15、服务器重启

当数据库服务器重启后,如果启动Galera Cluster 

执行:

cat /usr/local/mysql/data/grastate.dat


# GALERA saved state
version: 2.1
uuid:    c843efdf-25cd-11ea-a327-db364b10d42d
seqno:   -1
safe_to_bootstrap: 0

找到 safe_to_bootstrap 为最大值得节点:

bash /usr/bin/mysqld_bootstrap

启动后,其他节点执行:

systemctl start mysqld.service  启动

猜你喜欢

转载自blog.csdn.net/xintingandzhouyang/article/details/103689846