Linux下MySQL/MariaDB Galera集群搭建过程【转】

时间:2022-05-03 04:11:38

MariaDB介绍

MariaDB是开源社区维护的一个MySQL分支,由MySQL的创始人Michael Widenius主导开发,采用GPL授权许可证。

MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。

详细介绍请参考链接:

http://mariadb.org/(官网)

http://baike.baidu.com/link?url=dFJ-My-I52YFc1mx26K804LPwZrcEWCwB4IqfA4-soYx6295BZLIe7bEFgOtt3CWZ8AYpkp1P342L4S-R4x4CK

Galera Cluster介绍

Galera Cluster是基于MySQL/innodb二次开发而成的一个支持“多主同步”的数据库主从集群,具有高可用,易于扩展等特点。

详细介绍请参考链接:

http://galeracluster.com/(官网)

http://www.gpfeng.com/?p=603&utm_source=tuicool&utm_medium=referral

本文使用的Linux发行版:CentOS6.7 下载地址:https://wiki.centos.org/Download

1.  添加yum源

[root@localhost ~]# vi /etc/yum.repos.d/CentOS-MariaDB.repo

添加如下几行:

[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/5.5/rhel6-amd64
gpgkey = https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck = 1

Linux下MySQL/MariaDB Galera集群搭建过程【转】

2. 安装mariadb galera软件包

[root@localhost ~]# yum install MariaDB-Galera-server MariaDB-client galera

Linux下MySQL/MariaDB Galera集群搭建过程【转】

Linux下MySQL/MariaDB Galera集群搭建过程【转】

3. 修改防火墙配置

[root@localhost ~]# vi /etc/sysconfig/iptables

添加如下几行:

-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 4444 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 4567 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 4568 -j ACCEPT

Linux下MySQL/MariaDB Galera集群搭建过程【转】

4. 重启防火墙功能

[root@localhost ~]# service iptables restart

Linux下MySQL/MariaDB Galera集群搭建过程【转】

5. 安装selinux管理工具

[root@localhost ~]# yum provides /usr/sbin/semanage
[root@localhost ~]# yum -y install policycoreutils-python

Linux下MySQL/MariaDB Galera集群搭建过程【转】

6. 修改selinux安全策略

[root@localhost ~]# semanage port -a -t mysqld_port_t -p tcp 4567
[root@localhost ~]# semanage port -a -t mysqld_port_t -p tcp 4568
[root@localhost ~]# semanage permissive -a mysqld_t

Linux下MySQL/MariaDB Galera集群搭建过程【转】

7. 启动mysql服务

[root@localhost ~]# service mysql start

8. 执行mysql安全设置

[root@localhost ~]# mysql_secure_installation

(先设置root账户密码,再一直“y”下去即可)

Linux下MySQL/MariaDB Galera集群搭建过程【转】

Linux下MySQL/MariaDB Galera集群搭建过程【转】

9. 创建用于节点同步的账号

[root@localhost ~]# mysql -uroot -p
MariaDB [(none)]> grant usage on *.* to sst@'%' identified by '123456';
MariaDB [(none)]> flush privileges;

10. 修改mysql默认字符集

MariaDB [(none)]> show variables like 'character%';
MariaDB [(none)]> set character_set_server = utf8;
MariaDB [(none)]> set character_set_database = utf8;

11. 修改集群节点配置

[root@localhost ~]# cp /usr/share/mysql/wsrep.cnf /etc/my.cnf.d/
[root@localhost ~]# vi /etc/my.cnf.d/wsrep.cnf

修改如下几行:

wsrep_provider=/usr/lib64/galera/libgalera_smm.so
wsrep_cluster_address="gcomm://" #集群节点N的地址(注意把前面的"#"删掉!)
wsrep_sst_auth=sst:123456 #节点N的数据库账户和密码
  • 参数说明

  "gcomm://" 是特殊的地址,仅仅是galera cluster初始化启动时候使用。
  如果集群启动以后,我们关闭了第一个节点,那么再次启动的时候必须先修改"gcomm://"为其他节点的集群地址,例如wsrep_cluster_address="gcomm://192.168.0.152"。

检查/etc/my.cnf中有没有!includedir /etc/my.cnf.d/这一行,没有则添加。

[root@localhost ~]# vi /etc/my.cnf

Linux下MySQL/MariaDB Galera集群搭建过程【转】

到这里,第1个节点的配置就完成了,然后在另一台主机上按照步骤1~11配置第2个节点,只需修改节点2的wsrep_cluster_address为节点1的IP即可,以此类推。

12. 启动集群节点

  • 检查mysql进程:[root@localhost ~]# ps aux|grep mysql
  • 停止mysql服务:[root@localhost ~]# service mysql stop
  • 启动第1个节点:[root@localhost ~]# service mysql bootstrap

Linux下MySQL/MariaDB Galera集群搭建过程【转】

  • 启动第2、3、...个节点:[root@localhost ~]# service mysql start

Linux下MySQL/MariaDB Galera集群搭建过程【转】

(注意:启动mysql之前先检查一下服务是否已经启动,不要重复启动,如果无法停止当前mysql服务则手动kill掉mysql的进程)

13. 检查集群运行状态

[root@localhost ~]# mysql -uroot -p
MariaDB [(none)]> show status like 'wsrep%';

如果wsrep_connected=ON且wsrep_ready=ON则说明节点成功接入集群。

Linux下MySQL/MariaDB Galera集群搭建过程【转】

Linux下MySQL/MariaDB Galera集群搭建过程【转】

14. 配置集群的仲裁节点

对于只有2个节点的galera cluster和其他集群软件一样,需要面对极端情况下的“脑裂”状态。为了避免这种问题,galera引入了“arbitrator(仲裁人)”。
“仲裁人”节点上没有数据,它在集群中的作用就是在集群发生分裂时进行仲裁,集群中可以有多个“仲裁人”节点。将“仲裁人”节点加入集群的方法很简单,运行如下命令即可:
[root@localhost ~]# garbd -a gcomm://<节点IP> -g my_wsrep_cluster -d

  • 参数说明

  -a 集群地址
  -g 集群名称
  -d 以daemon模式运行

15. 检查数据库是否符合要求

部署到集群之前,建议先检查数据库是否符合galera的要求,比如存储引擎必须是innodb、数据表必须有主键等,否则记录将不会在多台复制。

选择指定的数据库,执行以下SQL输出不符合要求的表及其原因,根据相应的原因修改即可:

Linux下MySQL/MariaDB Galera集群搭建过程【转】
select distinct concat( t.table_schema, '.', t.table_name ) as tbl, t. engine,
if ( isnull(c.constraint_name), 'nopk', '' ) as nopk,
if ( s.index_type = 'fulltext', 'fulltext', '' ) as ftidx,
if ( s.index_type = 'spatial', 'spatial', '' ) as gisidx
from information_schema. tables as t
left join information_schema.key_column_usage as c
on ( t.table_schema = c.constraint_schema and t.table_name = c.table_name and c.constraint_name = 'primary' )
left join information_schema.statistics as s
on ( t.table_schema = s.table_schema and t.table_name = s.table_name and s.index_type in ('fulltext', 'spatial'))
where t.table_schema not in ( 'information_schema', 'performance_schema', 'mysql' ) and t.table_type = 'base table'
and ( t.engine <> 'innodb' or c.constraint_name is null or s.index_type in ('fulltext', 'spatial'))
order by t.table_schema, t.table_name;
Linux下MySQL/MariaDB Galera集群搭建过程【转】

16. 常见问题

1)启动mysql时出错:SST in progress, setting sleep higher. ERROR!

  • 确保本机已安装rsync:[root@localhost ~]# yum list|grep rsync
  • 确保已允许galera sst使用的端口4444、4567、4568通过防火墙并重启防火墙功能
  • 确保selinux已对端口4444开放权限:[root@localhost ~]# semanage port -a -t mysqld_port_t -p tcp 4444

2)查看galera集群状态时wsrep_connected和wsrep_ready的值均为OFF!

 打开/etc/my.cnf.d/wsrep.cnf文件,找到wsrep_cluster_address="gcomm://"这一行,检查前面是否有"#",如果有则删掉并重启mysql。

转自

Linux下MySQL/MariaDB Galera集群搭建过程 - 无心码农 - 博客园
http://www.cnblogs.com/liujiduo/p/5066803.html

MariaDB Galera Cluster集群优缺点_mailrun_新浪博客
http://blog.sina.com.cn/s/blog_548c8a830102vrgw.html

Linux下MySQL/MariaDB Galera集群搭建过程【转】的更多相关文章

  1. Linux下MySQL&sol;MariaDB Galera集群搭建过程

    MariaDB介绍 MariaDB是开源社区维护的一个MySQL分支,由MySQL的创始人Michael Widenius主导开发,采用GPL授权许可证. MariaDB的目的是完全兼容MySQL,包 ...

  2. Linux下Hadoop2&period;7&period;3集群环境的搭建

    Linux下Hadoop2.7.3集群环境的搭建 本文旨在提供最基本的,可以用于在生产环境进行Hadoop.HDFS分布式环境的搭建,对自己是个总结和整理,也能方便新人学习使用. 基础环境 JDK的安 ...

  3. Mysql Innodb cluster集群搭建

    之前搭建过一个Mysql Ndb cluster集群,但是mysql版本是5.7的,看到官网上mysql8的还是开发者版本,所以尝试搭建下mysql Innodb cluster集群. MySQL的高 ...

  4. 懒人记录 Hadoop2&period;7&period;1 集群搭建过程

    懒人记录 Hadoop2.7.1 集群搭建过程 2016-07-02 13:15:45 总结 除了配置hosts ,和免密码互连之外,先在一台机器上装好所有东西 配置好之后,拷贝虚拟机,配置hosts ...

  5. 分布式实时日志系统(一)环境搭建之 Jstorm 集群搭建过程&sol;Jstorm集群一键安装部署

    最近公司业务数据量越来越大,以前的基于消息队列的日志系统越来越难以满足目前的业务量,表现为消息积压,日志延迟,日志存储日期过短,所以,我们开始着手要重新设计这块,业界已经有了比较成熟的流程,即基于流式 ...

  6. ZooKeeper集群搭建过程

    ZooKeeper集群搭建过程 提纲 1.ZooKeeper简介 2.ZooKeeper的下载和安装 3.部署3个节点的ZK伪分布式集群 3.1.解压ZooKeeper安装包 3.2.为每个节点建立d ...

  7. mysql基础之mariadb galera集群(多主)

    一.概念 galera集群多用于关键性业务,因为galera集群为了数据的一致性,采用的是同步的机制,这就使galera牺牲了一部分性能来换取数据一致性. galera集群是基于wsrep协议(端口4 ...

  8. Linux下kafka集群搭建过程记录

    环境准备 zookeeper集群环境kafka是依赖于zookeeper注册中心的一款分布式消息对列,所以需要有zookeeper单机或者集群环境. 三台服务器: 172.16.18.198 k8s- ...

  9. Mariadb galera 集群

    部署galera 多主架构 (galera集群多用于关键性业务,因为galera集群为了数据的一致性,采用的是同步的机制,这就使galera牺牲了一部分性能来换取数据一致性.) 环境准备:三台服务器 ...

随机推荐

  1. noip2012 开车旅行

    此题100分的解法就是先预处理出每个点的下一个点之后倍增就好了.其实并没有太大难度. pbihao用双向链表写过了此题.在本地上我treap狂操他,but在rqnoj上,我依靠反复提交才A掉此题(最后 ...

  2. iOS sqlite数据库图像化查看

    问题描述:在xocde上用sqlite数据库的时候,因为没有图形化界面,有些时候很难看出自己设计的数据库是否有问题,比如我刚上手sqlite数据库设计id为自增长时,很自然的用了identify(1, ...

  3. 【字符编码】Java字符编码详细解答及问题探讨

    一.前言 继上一篇写完字节编码内容后,现在分析在Java中各字符编码的问题,并且由这个问题,也引出了一个更有意思的问题,笔者也还没有找到这个问题的答案.也希望各位园友指点指点. 二.Java字符编码 ...

  4. Linq 中按照多个值进行分组&lpar;GroupBy&rpar;

    Linq 中按照多个值进行分组(GroupBy) .GroupBy(x => new { x.Age, x.Sex }) group emp by new { emp.Age, emp.Sex ...

  5. 线程学习笔记 等待句柄和线程池(摘自https&colon;&sol;&sol;blog&period;gkarch&period;com&sol;threading&sol;part2&period;html&num;manualresetevent)

    //如果你的应用有很多线程,这些线程大部分时间都在阻塞,那么可以通过调用ThreadPool.RegisterWaitForSingleObject来减少资源消耗.这个方法接受一个委托,它会在向等待句 ...

  6. When Colon Scripting is comming &lpar;脚本最佳体验&rpar;

    当冒号脚本来临-- 脚本最佳体验 冒号指派 说明; 冒号替代等号指派赋值,当命名声明指派时指定.相当于声明当前作用域的一个名字指派. 当对指定对象的属性赋值时候,依旧请使用等号.即不废弃等号赋值功用, ...

  7. Java Servlet的配置文件web&period;xml配置内容和具体含义

    文件名:“SimpleServlet.java” package cn.mldn.lxh.servlet ;//定义包 import java.io.* ; // HttpServlet属于javax ...

  8. 前后端分离djangorestframework—— 接入支付宝支付平台

    支付宝 简介 支付宝是什么不用多说了,本次教程适合初学者 前提准备 话不多说,干就完了 1.注册开发者账号,设置公钥私钥 首先进入支付宝开发者平台:传送门 ,有账号直接登录,没账号用你平时用来付款收钱 ...

  9. Exploit-Exercises nebule 旅行日志(四)

    接着上次的路程继续在ubuntu下对漏洞的探索练习,这次是level03了 先看下level03的问题描述: 精炼下问题,在/home/flag03的目录下有个crontab的文件是每分钟都在执行 这 ...

  10. Go基础系列:Go实现工作池的两种方式

    worker pool简介 worker pool其实就是线程池thread pool.对于go来说,直接使用的是goroutine而非线程,不过这里仍然以线程来解释线程池. 在线程池模型中,有2个队 ...