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 集群安装配置相关推荐

  1. mariadb Galera集群部署

    MariaDB Galera Cluster介绍 Galera Cluster是Codership公司开发的一套免费开源的高可用方案,Galera Cluster即安装了Galera的Mariadb集 ...

  2. redis cluster 集群 安装 配置 详解

    redis cluster 集群 安装 配置 详解 张映 发表于 2015-05-01 分类目录: nosql 标签:cluster, redis, 安装, 配置, 集群 Redis 集群是一个提供在 ...

  3. 一步步教你Hadoop多节点集群安装配置

    一步步教你Hadoop多节点集群安装配置 1.集群部署介绍 1.1 Hadoop简介  Hadoop是Apache软件基金会旗下的一个开源分布式计算平台.以Hadoop分布式文件系统HDFS(Hado ...

  4. 原创:centos7.1下 ZooKeeper 集群安装配置+Python实战范例

    centos7.1下 ZooKeeper 集群安装配置+Python实战范例 下载:http://apache.fayea.com/zookeeper/zookeeper-3.4.9/zookeepe ...

  5. websphere一直安装部署_WebSphere集群安装配置及部署应用说明

    <WebSphere集群安装配置及部署应用说明>由会员分享,可在线阅读,更多相关<WebSphere集群安装配置及部署应用说明(27页珍藏版)>请在人人文库网上搜索. 1.We ...

  6. RabbitMQ集群安装配置+HAproxy+Keepalived高可用

    RabbitMQ集群安装配置+HAproxy+Keepalived高可用 转自:https://www.linuxidc.com/Linux/2016-10/136492.htm rabbitmq 集 ...

  7. Greenplum集群安装配置及最佳实践

    Greenplum集群安装配置及最佳实践 目录 Greenplum集群安装配置及最佳实践 1 目录 1 1 总体介绍 2 1.1 硬件平衡 2 1.2 高可用 2 1.3 部署方案 2 1.3.1 G ...

  8. ZooKeeper-3.3.4集群安装配置

    "ZooKeeper-3.3.4集群安装配置": 关键词:zookeeper-3.3.4 集群 安装 配置 zookeeper是一个分布式开源框架,提供了协调分布式应用的基本服务, ...

  9. Ceph分布式集群安装配置

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到网站:https://www.captainai.net/dongkelun 前言 记录Ceph分布式集群安 ...

最新文章

  1. Data-truncation--Incorrect-string-value
  2. python手机版idle-Python IDLE下载
  3. c#-----让richtextbox或者TextBox不可编辑
  4. SpringBoot入门教程(十)应用监控Actuator
  5. linux重定向多个文件,Linux base shell重定向详解
  6. 程序员选择字体的标准是
  7. 次短路 Yen氏算法 凸包
  8. linux kworker cpu,Kworker,它是什么,为什么它占用这么多 CPU?
  9. Hanoi Tower问题分析
  10. java从入门到精通 答案_java从入门到精通练习题答案.doc
  11. 游戏测试和软件测试哪个好点?
  12. FPGA之乒乓Buffer
  13. 新冠肺炎的诊断与临床症状
  14. 尝试在blender中渲染一个最简单的动画
  15. 【ChatGPT】多国“围堵”,万人抵制,AI发展的红线到底在哪?
  16. 格斗类游戏的键盘处理
  17. 运用BFS算法实现北京地铁路线换乘系统
  18. 计算机网络—自顶向下 计算机网络和因特网
  19. 学习代码要先学会“学习”
  20. IDEA连接具体的sqlite数据库

热门文章

  1. 使用脑电图慢皮层电位重建3D空间中的手,肘和肩的实际和想象的轨迹
  2. 脑机接口成唯一沟通方式,渐冻症晚期父亲终向4岁儿子表达爱意
  3. 图像生成王者不是GAN?扩散模型最近有点火:靠加入类别条件,效果直达SOTA
  4. 国产期刊崛起!上海大学、郑州大学主办期刊IF超15,2021版SCI期刊影响因子出炉...
  5. 神经网络版的GTA5火了,网友:好像AI的梦境
  6. 俄罗斯黑客收到500万美元赎金!美国燃油管道商认怂,民众为抢汽油大打出手...
  7. IEEE Fellow、AI大牛田奇加入华为云!他为何而来?“加速AI基础研究落地”
  8. 阿里达摩院AI抗疫最新战报:已诊断3万多疑似病例CT影像,准确率96%
  9. Linux Tensorflow2.0安装
  10. SQL server 2005中无法新建作业(Job)的问题