环境准备
1、准备三台Centos7虚拟机环境
机器列表
192.168.48.211
192.168.48.212
192.168.48.213
2、设置主机名(设置三台虚拟机主机名分别为node1,node2,node3)
1 | # vim /etc/hosts |
3、关闭SELINUX
1 | # setenforce 0 |
4、关闭防火墙
1 | systemctl stop firewalld.service |
5、使用以下命令快速添加YUM源
1 | # tee /etc/yum.repos.d/mariadb.repo <<-'EOF' |
6、由于Mariadb服务器是在国外,速度较慢,可以使用国内镜像源替代,以USTC镜像源为例
1 | # sed -i 's#yum\.mariadb\.org#mirrors.ustc.edu.cn/mariadb/yum#' /etc/yum.repos.d/mariadb.repo |
7、刷新YUM缓存
1 | # yum makecache |
8、查看Mariadb相关的安装包,注意软件包版本和对应的YUM源名字
1 | # yum list MariaDB* galera |
部署MariaDB Galera集群
执行yum安装命令(执行节点:node1, node2, node3)
1 | # yum install -y MariaDB-server MariaDB-client galera |
待安装完成,启动数据库,并设置root账号权限密码(执行节点:node1, node2, node3)
1 | # systemctl start mariadb |
也可使用如下方法设置数据库密码,测试情况使用 root % root
1 | # /usr/bin/mysql_secure_installation |
设置完成之后关闭数据库
1 | # systemctl stop mariadb |
配置node1:
1 | # cat /etc/my.cnf.d/server.cnf | grep -v '#' |
分别配置node2,node3,修改点为当前节点名称,当前节点ip地址:
1 | # cat /etc/my.cnf.d/server.cnf | grep -v '#' |
在node1上执行如下命令,启动一个集群
1 | # /usr/sbin/mysqld --wsrep-new-cluster --user=root & |
查看集群状态
1 | # mysql -uroot -proot |
在node2,node3节点上直接执行如下命令
1 | systemctl start mariadb |
再次查看集群状态,可以看到2,3节点已成功加入集群
1 | MariaDB [(none)]> show status like "wsrep_cluster_size"; |
集群数据同步测试
在集群中任一一台主机执行如下命令
1 | MariaDB [(none)]> create database marspie; |
查看另外两台主机,我们可以发现数据已经同步了
1 | MariaDB [(none)]> show databases; |
常见问题解析
1、在生产环境中必须打开防火墙,如果只开放了 4567 和 针对指定ip开放3306 端口,会导致加入集群失败,需要开放
3306, 4444, 4567, 4568 四个端口才可以正常启动。
2、直接kill点创建集群节点,会导致此节点无法启动
- 第一个启动的节点,在集群关闭数据库时需最后一个停止,再次启动集群是才可正常启动。
- 若第一个启动的节点被kill, 停止所有节点,再次启动第一个节点还是会启动失败,这时需进入mysql数据目录删除galera缓存文件,方可启动集群
1
2
3[root@node1 ~]# cd /var/lib/mysql/
[root@node1 mysql]# rm -rf grastate.dat gvwstate.dat galera.cache
[root@node1 mysql]# /usr/sbin/mysqld --wsrep-new-cluster --user=root
后续如还有坑再补充!