使用galera组件搭建高可用的MariaDB集群
1、安装组件
yum install mariadb mariadb-server python2-PyMySQL -y
安装galera组件,用galere搭建集群
yum -y install mariadb-server-galera mariadb-galera-common galera xinetd rsync
2、初始化mariadb
在全部控制节点初始化数据库密码,以master1节点为例;
root初始密码为空
systemctl restart mariadb.service
mysql_secure_installation
3、修改mariadb配置文件
在全部控制节点/etc/my.cnf.d/目录下新增openstack.cnf配置文件,主要设置集群同步相关参数,以master1节点为例,个别涉及ip地址/host名等参数根据实际情况修改
vim /etc/my.cnf.d/openstack.cnf
[mysqld]
binlog_format = ROW
bind-address = 192.168.0.11
default-storage-engine = innodb
innodb_file_per_table = on
max_allowed_packet = 500M
max_connections = 4096
collation-server = utf8_general_ci
character-set-server = utf8
[galera]
bind-address = 192.168.0.11
wsrep_provider = /usr/lib64/galera/libgalera_smm.so
wsrep_cluster_address ="gcomm://master1,master2,master3"
wsrep_cluster_name = openstack-cluster-01
wsrep_node_name = master1
wsrep_node_address = 192.168.0.11
wsrep_on=ON
wsrep_slave_threads=4
wsrep_sst_method=rsync
default_storage_engine=InnoDB
[embedded]
4、构建mariadb集群
停止全部控制节点的mariadb服务,以master1节点为例
systemctl stop mariadb.service
任选1个控制节点以如下方式启动mariadb服务,这里选择master1节点
/usr/libexec/mysqld --wsrep-new-cluster --user=root &
其他控制节点加入mariadb集群,以master2节点为例;
启动后加入集群,master2节点从master1节点同步数据,也可同步查看mariadb日志/var/log/mariadb/mariadb.log
systemctl start mariadb.service
systemctl status mariadb.service
重新启动master1节点;
启动前删除master1节点的数据
pkill -9 mysql
rm -rf /var/lib/mysql/*
注意以system unit方式启动mariadb服务时的权限
chown mysql:mysql /var/run/mariadb/mariadb.pid
chown -R mysql:mysql /var/lib/mysql/
启动后查看节点所在服务状态,master1节点从master2节点同步数据
systemctl start mariadb.service
systemctl status mariadb.service
查看集群状态
mysql -uroot -pmysql_pass
show status like "wsrep_cluster_size";
show status like 'wsrep_ready';
show status like 'ws%';
5、设置心跳检测clustercheck
准备脚本
下载clustercheck脚本
wget https://raw.githubusercontent.com/olafz/percona-clustercheck/master/clustercheck
创建心跳检测用户
在任意控制节点创建clustercheck_user用户并赋权;
注意账号/密码与脚本中的账号/密码对应,这里采用的是脚本默认的账号/密码,否则需要修改clustercheck脚本文件
mysql -uroot -pmysql_pass
grant all on *.* to 'clustercheckuser'@'localhost' IDENTIFIED BY 'clustercheckpassword!';
flush privileges;
赋予脚本可执行权限
chmod +x clustercheck
cp ~/clustercheck /usr/bin/
检测配置文件
在全部控制节点新增心跳检测服务配置文件/etc/xinetd.d/mysqlchk,以master1节点为例
touch /etc/xinetd.d/mysqlchk
vim /etc/xinetd.d/mysqlchk
# default: on
# description: mysqlchk
service mysqlchk
{
port = 9200
disable = no
socket_type = stream
protocol = tcp
wait = no
user = root
group = root
groups = yes
server = /usr/bin/clustercheck
type = UNLISTED
per_source = UNLIMITED
log_on_success =
log_on_failure = HOST
flags = REUSE
}
启动心跳检测服务
修改/etc/services,变更tcp9200端口用途,以master1节点为例
vim /etc/services
#wap-wsp 9200/tcp # WAP connectionless session service
mysqlchk 9200/tcp # mysqlchk
启动xinetd服务,以master1节点为例
systemctl daemon-reload
systemctl enable xinetd
systemctl start xinetd
测试心跳检测脚本
在全部控制节点验证,以master1节点为例
/usr/bin/clustercheck
通过以上操作,使用galera组件搭建了高可用的MariaDB集群。
下一篇:安装配置Memcached和rabbit-MQ集群,敬请关注。
本文为原创内容,转载请注明作者+出处+原文链接,禁止商用、禁止修改内容,未经授权不得二次分发,违规必究。
如需联系作者,请联系rancel#stsoo.com(PS:将#替换为@)