一、环境准备
1、安装Galera集群需使用4台虚拟化服务器
名称 | IP | 系统版本 |
---|---|---|
galera1 | 192.168.1.90 | centos7.4 |
galera2 | 192.168.1.91 | centos7.4 |
galera3 | 192.168.1.92 | centos7.4 |
galera4 | 192.168.1.93 | centos7.4 |
2、虚拟化服务器部署(galera1)
3、克隆虚拟机(galera2、galera3、galera4)
4、虚拟机克隆后操作(galera2、galera3、galera4)
5、配置centos yum源(galera1、galera2、galera3、galera4)
- 备份
cd /etc/yum.repos.d/
mkdir bak/
mv *.repo bak/
- 下载阿里云Centos-7.repo文件(根据需求下载不同镜像源)
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
6、配置epel源(galera1、galera2、galera3、galera4)
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
- 清除yum缓存
yum clean all
- 缓存yum镜像
yum makecache
7、配置hosts文件(galera1、galera2、galera3、galera4)
vi /etc/hosts
192.168.1.90 galera1
192.168.1.91 galera2
192.168.1.92 galera3
192.168.1.93 galera4
8、修改服务器主机名(galera1、galera2、galera3、galera4)
hostnamectl set-hostname galera1
hostnamectl set-hostname galera2
hostnamectl set-hostname galera3
hostnamectl set-hostname galera4
重启服务器后生效
9、时间同步(galera1、galera2、galera3、galera4)
1.修改时区
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
2.将galera1作为时间服务器
- 安装ntp
yum -y install ntp
- 配置时间同步
#galera1
vim /etc/ntp.conf //将下面两行添加进去
server 127.127.1.0 # local clock
fudge 127.127.1.0 stratum 10
#galera2、galera3、galera4
#同步galera1时间即可
ntpdate galera1
二、集群部署
1、服务器安装有原版本mysql:需删除(galera1、galera2、galera3、galera4)
yum erase `rpm -qa | grep mysql` -y
- mysql检查,命令不显示rpm及正常,否则需删除
rpm -qa | grep mysql
2、配置安装galera yum源(galera1、galera2、galera3、galera4)
# vi galera.repo
[galera]
name=galera
baseurl=http://releases.galeracluster.com/mysql-wsrep-5.7/centos/7/x86_64/
enabled=1
gpgcheck=0
#注意:需要epel源提供galera包
3、安装galera (galera1、galera2、galera3、galera4)
yum install mysql-wsrep-5.7.x86_64 galera rsync -y
4、启动galera (galera1、galera2、galera3、galera4)
systemctl start mysqld
5、创建数据同步用户(galera1、galera2、galera3、galera4)
#查看mysql临时密码
grep password /var/log/mysqld.log
[root@mysql-1 ~]# mysql -uroot -p
#修改密码复杂度
set global validate_password_policy=0;
set global validate_password_length=1;
#修改mysql用户密码
alter user 'root'@'localhost' identified by '123123';
#创建同步用户repl并赋权
grant all on *.* to 'repl'@'%' identified by '123123';
#刷新权限
flush privileges;
6、配置Galera Replication(galera1、galera2、galera3、galera4)
- galera1
server-id=1
binlog_format=row
innodb_file_per_table=1
innodb_autoinc_lock_mode=2
wsrep_on=ON
wsrep_provider=/usr/lib64/galera/libgalera_smm.so
wsrep_cluster_name='galera'
wsrep_cluster_address='gcomm://'
wsrep_node_name='galera1'
wsrep_node_address='192.168.1.90'
wsrep_sst_auth=repl:'123123'
wsrep_sst_method=rsync
- galera2
server-id=2
binlog_format=row
innodb_file_per_table=1
innodb_autoinc_lock_mode=2
wsrep_on=ON
wsrep_provider=/usr/lib64/galera/libgalera_smm.so
wsrep_cluster_name='galera'
wsrep_cluster_address='gcomm://galera1,galera3,galera4'
wsrep_node_name='galera2'
wsrep_node_address='192.168.1.91'
wsrep_sst_auth=repl:'123123'
wsrep_sst_method=rsync
- galera3
server-id=3
binlog_format=row
innodb_file_per_table=1
innodb_autoinc_lock_mode=2
wsrep_on=ON
wsrep_provider=/usr/lib64/galera/libgalera_smm.so
wsrep_cluster_name='galera'
wsrep_cluster_address='gcomm://galera1,galera2,galera4'
wsrep_node_name='galera3'
wsrep_node_address='192.168.1.92'
wsrep_sst_auth=repl:'123123'
wsrep_sst_method=rsync
- galera4
server-id=4
binlog_format=row
innodb_file_per_table=1
innodb_autoinc_lock_mode=2
wsrep_on=ON
wsrep_provider=/usr/lib64/galera/libgalera_smm.so
wsrep_cluster_name='galera'
wsrep_cluster_address='gcomm://galera1,galera2,galera3'
wsrep_node_name='galera4'
wsrep_node_address='192.168.1.93'
wsrep_sst_auth=repl:'123123'
wsrep_sst_method=rsync
7、重启mysql服务 (galera1、galera2、galera3、galera4)
systemctl restart mysqld
8、验证
1.端口验证
ss -auntpl | grep -E '3306|4567'
2.数据插入验证
9、集群状态查询
show status like '%wsrep%';
三、可能遇到的问题
1、未知的错误
问题:
- 0curl: (6) Could not resolve host: mirrors.aliyun.com; 未知的错误的解决办法
解决方法:
vi /etc/resolv.conf
nameserver 223.5.5.5
nameserver 223.6.6.6
2、端口验证是没有4567端口
问题:
排查思路:
- yum list | grep galera 命令查看是否存在galera包,不存在就是epel源配置异常,重新配置即可解决。