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://pan.baidu.com/s/1BksWzK16HootB6jPPBi4Yg
- 提取码:hbue
官方下载地址: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地址
启动之后查看集群状态