MariaDB Galera 集群安装配置
MariaDB Galera Cluster 介绍
MariaDB Galera Cluster 是开源的 MariaDB同步多主机集群。它仅支持XtraDB/ InnoDB存储引擎。MariaDB作为Mysql的一个分支,在开源项目中已经广泛使用,例如大热的openstack,所以,为了保证服务的高可用性,同时提高系统的负载能力,集群部署是必不可少的。
主要功能:
- 同步复制
- 真正的multi-master,即所有节点可以同时读写数据库
- 自动的节点成员控制,失效节点自动被清除
- 新节点加入数据自动复制
- 真正的并行复制,行级
- 用户可以直接连接集群,使用感受上与MySQL完全一致
优势:
- 因为是多主,所以不存在Slavelag(延迟)
- 不存在丢失事务的情况
- 同时具有读和写的扩展能力
- 更小的客户端延迟
- 节点间数据是同步的,而Master/Slave模式是异步的,不同slave上的binlog可能是不同的
技术:
Galera集群的复制功能基于Galeralibrary实现,为了让MySQL与Galera library通讯,特别针对MySQL开发了wsrep API。
Galera插件保证集群同步数据,保持数据的一致性,靠的就是可认证的复制,工作原理如下图:
当客户端发出一个commit的指令,在事务被提交之前,所有对数据库的更改都会被 write-set
收集起来,并且将write-set
纪录的内容发送给其他节点。
write-set
将在每个节点进行认证测试,测试结果决定着节点是否应用write-set
更改数据。
如果认证测试失败,节点将丢弃 write-set
;如果认证测试成功,则事务提交。
1 安装环境准备
安装MariaDB集群至少需要3台服务器(如果只有两台的话需要特殊配置,请参照官方文档)
操作系统版本:centos7
- controller1:192.168.0.194
- controller2:192.168.0.195
- controller3:192.168.0.196
为了保证节点间相互通信,需要禁用防火墙设置
在三个节点分别执行命令:
echo '关闭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
2 安装 MariaDB Galera Cluster
配置yum源, 所有节点:
echo "# [mariadb] name = MariaDB baseurl = http://yum.mariadb.org/10.1/centos7-amd64 gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB gpgcheck=1 #">/etc/yum.repos.d/mariadb.repo
所有节点安装:
yum install -y mariadb mariadb-galera-server mariadb-galera-common galera rsync
配置时间同步,所有节点执行:
echo '时间同步' [[ -f /usr/sbin/ntpdate ]] || { echo "install ntp";yum install ntp ntpdate -y &> /dev/null; } #若没NTP则安装 /usr/sbin/ntpdate ntp6.aliyun.com echo "*/3 * * * * /usr/sbin/ntpdate ntp6.aliyun.com &> /dev/null" > /tmp/crontab crontab /tmp/crontab
3 配置 MariaDB Galera Cluster
初始化数据库服务,只在controller1进行:
#声明数据库的密码作为临时变量供下面调用
DBPass=123456
#mysql_secure_installation #初始化设置密码,自动交互 [[ -f /usr/bin/expect ]] || { yum install expect -y; } #若没expect则安装 /usr/bin/expect << EOF set timeout 30 spawn mysql_secure_installation expect {"enter for none" { send "\r"; exp_continue}"Y/n" { send "Y\r" ; exp_continue}"password:" { send "$DBPass\r"; exp_continue}"new password:" { send "$DBPass\r"; exp_continue}"Y/n" { send "Y\r" ; exp_continue}eof { exit } } EOF
关闭数据库,修改 /etc/my.cnf.d/galera.cnf
systemctl stop mariadb
#galera配置 /usr/bin/cp /etc/my.cnf.d/galera.cnf{,.bak} egrep -v "#|^$" /etc/my.cnf.d/galera.cnf.bak >/etc/my.cnf.d/galera.cnf #sed -i 's/wsrep_on=1/wsrep_on=ON/' /etc/my.cnf.d/galera.cnf #sed -i 's/wsrep_sst_auth=root:/wsrep_sst_auth=root:'$DBPass'/' /etc/my.cnf.d/galera.cnf
vi /etc/my.cnf.d/galera.cnf[mysqld]
wsrep_provider = /usr/lib64/galera/libgalera_smm.so
wsrep_cluster_address = "gcomm://controller1,controller2,controller3"
wsrep_node_name = controller1
wsrep_node_address=192.168.0.194#wsrep_provider_options="socket.ssl_key=/etc/pki/galera/galera.key; socket.ssl_cert=/etc/pki/galera/galera.crt;"
提示:如果不用ssl的方式认证的话,请把 wsrep_provider_options
注释掉。
将此文件复制到controller2、controller3,注意要把 wsrep_node_name
和 wsrep_node_address
改成相应节点的hostname
和 ip
。
4 启动 MariaDB Galera Cluster 服务
在controller1节点启动集群
/usr/libexec/mysqld --wsrep-new-cluster --user=root &
观察日志:
tail -f /var/log/mariadb/mariadb.log
出现“ ready for connections” 表示启动成功
controller2节点启动
systemctl start mariadb
controller3节点启动
systemctl start mariadb
可以查看 /var/log/mariadb/mariadb.log
,在日志可以看到节点均加入了集群中。
警告⚠:--wsrep-new-cluster
这个参数只能在初始化集群使用,且只能在一个节点使用。
5 查看集群状态
mysql -u root -p123456 -e "show status like 'wsrep_cluster_size';"
+--------------------+-------+
| Variable_name | Value |
+--------------------+-------+
| wsrep_cluster_size | 3 |
+--------------------+-------+
6 验证数据同步
controller1节点创建数据库
mysql -uroot -p123456 -e "create database galera_test"
controlelr2 controller3节点查看
mysql -uroot -proot -e "show databases"
如果都有刚才新建的数据库表示同步成功
MariaDB Galera Cluster 已经成功部署。
7 排错
# #排错 # #关闭selinux、防火墙 # tail /var/log/mariadb/mariadb.log # rm -f /var/lib/mysql//galera.cache # #关闭群集后,重启 # #在其中一台 # sed -i 's#seqno: -1#seqno: 1#' /var/lib/mysql/grastate.dat # galera_new_cluster #启动第一个节点 # #其它节点 # systemctl start mariadb#test #/usr/libexec/mysqld --wsrep-new-cluster --user=root & #systemctl start mariadb.service #设置开机启动,设置为第一个节点 # systemctl disable mariadb.service # echo '#作为第一个节点启动SQL # /usr/bin/galera_new_cluster # sleep 5 # ssh controller2 "systemctl start mariadb.service" # ssh controller3 "systemctl start mariadb.service" # sleep 3 # systemctl restart mariadb.service # '>>/etc/rc.local
转载于:https://www.cnblogs.com/fang888/p/8258807.html
MariaDB Galera 集群安装配置相关推荐
- mariadb Galera集群部署
MariaDB Galera Cluster介绍 Galera Cluster是Codership公司开发的一套免费开源的高可用方案,Galera Cluster即安装了Galera的Mariadb集 ...
- redis cluster 集群 安装 配置 详解
redis cluster 集群 安装 配置 详解 张映 发表于 2015-05-01 分类目录: nosql 标签:cluster, redis, 安装, 配置, 集群 Redis 集群是一个提供在 ...
- 一步步教你Hadoop多节点集群安装配置
一步步教你Hadoop多节点集群安装配置 1.集群部署介绍 1.1 Hadoop简介 Hadoop是Apache软件基金会旗下的一个开源分布式计算平台.以Hadoop分布式文件系统HDFS(Hado ...
- 原创:centos7.1下 ZooKeeper 集群安装配置+Python实战范例
centos7.1下 ZooKeeper 集群安装配置+Python实战范例 下载:http://apache.fayea.com/zookeeper/zookeeper-3.4.9/zookeepe ...
- websphere一直安装部署_WebSphere集群安装配置及部署应用说明
<WebSphere集群安装配置及部署应用说明>由会员分享,可在线阅读,更多相关<WebSphere集群安装配置及部署应用说明(27页珍藏版)>请在人人文库网上搜索. 1.We ...
- RabbitMQ集群安装配置+HAproxy+Keepalived高可用
RabbitMQ集群安装配置+HAproxy+Keepalived高可用 转自:https://www.linuxidc.com/Linux/2016-10/136492.htm rabbitmq 集 ...
- Greenplum集群安装配置及最佳实践
Greenplum集群安装配置及最佳实践 目录 Greenplum集群安装配置及最佳实践 1 目录 1 1 总体介绍 2 1.1 硬件平衡 2 1.2 高可用 2 1.3 部署方案 2 1.3.1 G ...
- ZooKeeper-3.3.4集群安装配置
"ZooKeeper-3.3.4集群安装配置": 关键词:zookeeper-3.3.4 集群 安装 配置 zookeeper是一个分布式开源框架,提供了协调分布式应用的基本服务, ...
- Ceph分布式集群安装配置
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到网站:https://www.captainai.net/dongkelun 前言 记录Ceph分布式集群安 ...
最新文章
- Data-truncation--Incorrect-string-value
- python手机版idle-Python IDLE下载
- c#-----让richtextbox或者TextBox不可编辑
- SpringBoot入门教程(十)应用监控Actuator
- linux重定向多个文件,Linux base shell重定向详解
- 程序员选择字体的标准是
- 次短路 Yen氏算法 凸包
- linux kworker cpu,Kworker,它是什么,为什么它占用这么多 CPU?
- Hanoi Tower问题分析
- java从入门到精通 答案_java从入门到精通练习题答案.doc
- 游戏测试和软件测试哪个好点?
- FPGA之乒乓Buffer
- 新冠肺炎的诊断与临床症状
- 尝试在blender中渲染一个最简单的动画
- 【ChatGPT】多国“围堵”,万人抵制,AI发展的红线到底在哪?
- 格斗类游戏的键盘处理
- 运用BFS算法实现北京地铁路线换乘系统
- 计算机网络—自顶向下 计算机网络和因特网
- 学习代码要先学会“学习”
- IDEA连接具体的sqlite数据库
热门文章
- 使用脑电图慢皮层电位重建3D空间中的手,肘和肩的实际和想象的轨迹
- 脑机接口成唯一沟通方式,渐冻症晚期父亲终向4岁儿子表达爱意
- 图像生成王者不是GAN?扩散模型最近有点火:靠加入类别条件,效果直达SOTA
- 国产期刊崛起!上海大学、郑州大学主办期刊IF超15,2021版SCI期刊影响因子出炉...
- 神经网络版的GTA5火了,网友:好像AI的梦境
- 俄罗斯黑客收到500万美元赎金!美国燃油管道商认怂,民众为抢汽油大打出手...
- IEEE Fellow、AI大牛田奇加入华为云!他为何而来?“加速AI基础研究落地”
- 阿里达摩院AI抗疫最新战报:已诊断3万多疑似病例CT影像,准确率96%
- Linux Tensorflow2.0安装
- SQL server 2005中无法新建作业(Job)的问题