集群环境介绍:
注释:通常在使用MariaDB的过程中,也不难实现一种Multi-Master架构,但是一般需要上层应用来配合,比如先要约定每个表必须有自增列,并且如果是2个节点的情况,一个节点只能写偶数值,而另一个节点只能写奇数值,同时2个节点之间互相做复制,因为2个节点写入的东西不同,所以复制不会冲突,在这种约定之下,可以基本实现多Master架构,也可以保证数据的完整性与一致性。但这种方式使用起来还是有限制,同时还会出现复制延迟,且不具有扩展性,不是真正意义上的集群。
网络拓扑图:
注释:这里因为同时做了MariaDB和MySQL的高可用集群测试、MariaDB集群只用看左边MariaDB Galera Cluster的拓扑就可以了。
宿主机CentOS版本信息:
# 基础工具安装:
yum -y install [wget](http://image.z0ukun.com/tag/wget/) vim ntp net-tools tree openssh
# 关闭seLinux*和防火墙:
systemctl stop firewalld.service
systemctl disable firewalld.service
firewall-cmd –state
sed -i ‘/^SELINUX=.*/c SELINUX=disabled’ /etc/selinux/config
sed -i ‘s/^SELINUXTYPE=.*/SELINUXTYPE=disabled/g’ /etc/selinux/config
grep –color=auto ‘^SELINUX’ /etc/selinux/config
setenforce 0
配置网卡信息(修改网卡信息之前一定要先执行以下yum update让系统同步yum源、要不然你懂得)
配置hostname:
修改时区:
# 列出所有时区
timedatectl list-timezones
# 将硬件时钟调整为与本地时钟一致, 0 为设置为 UTC 时间
timedatectl set-local-rtc 1
# 设置系统时区为上海
timedatectl set-timezone Asia/Shanghai
# 系统底层修改时区
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
升级、重启:
yum update -y && reboot
三台主机加入/etc/hosts使节点之间可以互相解析:
设置MariaDB的Yum源并安装(所有节点):
执行安装命令:
yum install MariaDB-server MariaDB-client galera -y
安装完成之后初始化MariaDB:
systemctl start mariadb
mysql_secure_installation # (按提示设置mysql密码)
systemctl stop mariadb
授权root用户可以远程访问数据库:
GRANT ALL PRIVILEGES ON *.* TO ‘root’@’%’IDENTIFIED BY ‘980430’ WITH GRANT OPTION;
root是登陆数据库的用户,980430是登陆数据库的密码,*就是意味着任何来源任何主机。
配置好权限之后,刷新使之生效:
配置命令:
flush privileges;
再次远程访问数据库就可以了。
配置Galera:
MariaDBA节点配置文件 /etc/my.cnf.d/server.cnf
注释:将此文件复制到MariaDBB、MariaDBC,注意要把 wsrep_node_name 和 wsrep_node_address 改成相应节点的 hostname 和 ip。
引导集群创建(启动之前一定要保证所有节点的MariaDB处于stop状态)
/usr/sbin/mysqld –wsrep-new-cluster –user=root &
查看集群状态:
启动其他节点的MariaDB(服务正常节点会自动添加进集群):
systemctl start mariadb
升级、重启: