设为首页 收藏本站
查看: 950|回复: 0

[经验分享] Linux下MySQL/MariaDB Galera集群搭建过程【转】

[复制链接]

尚未签到

发表于 2017-11-18 07:09:16 | 显示全部楼层 |阅读模式
  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源
[iyunv@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
DSC0000.png

  2. 安装mariadb galera软件包
[iyunv@localhost ~]# yum install MariaDB-Galera-server MariaDB-client galera

DSC0001.png

DSC0002.png

  3. 修改防火墙配置
[iyunv@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
DSC0003.png

  4. 重启防火墙功能
[iyunv@localhost ~]# service iptables restart

DSC0004.png

  5. 安装selinux管理工具
[iyunv@localhost ~]# yum provides /usr/sbin/semanage
[iyunv@localhost ~]# yum -y install policycoreutils-python

DSC0005.png

  6. 修改selinux安全策略
[iyunv@localhost ~]# semanage port -a -t mysqld_port_t -p tcp 4567
[iyunv@localhost ~]# semanage port -a -t mysqld_port_t -p tcp 4568
[iyunv@localhost ~]# semanage permissive -a mysqld_t

DSC0006.png

  7. 启动mysql服务
[iyunv@localhost ~]# service mysql start

  8. 执行mysql安全设置
[iyunv@localhost ~]# mysql_secure_installation

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

DSC0008.png

  9. 创建用于节点同步的账号
[iyunv@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. 修改集群节点配置
[iyunv@localhost ~]# cp /usr/share/mysql/wsrep.cnf /etc/my.cnf.d/
[iyunv@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/这一行,没有则添加。
[iyunv@localhost ~]# vi /etc/my.cnf

DSC0009.png

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


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



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

  (注意:启动mysql之前先检查一下服务是否已经启动,不要重复启动,如果无法停止当前mysql服务则手动kill掉mysql的进程)
  13. 检查集群运行状态
[iyunv@localhost ~]# mysql -uroot -p
MariaDB [(none)]> show status like 'wsrep%';

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

DSC00013.png

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


  • 参数说明
  -a 集群地址
  -g 集群名称
  -d 以daemon模式运行
  15. 检查数据库是否符合要求
  部署到集群之前,建议先检查数据库是否符合galera的要求,比如存储引擎必须是innodb、数据表必须有主键等,否则记录将不会在多台复制。
  选择指定的数据库,执行以下SQL输出不符合要求的表及其原因,根据相应的原因修改即可:




DSC00014.gif
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;

  16. 常见问题
  1)启动mysql时出错:SST in progress, setting sleep higher. ERROR!


  • 确保本机已安装rsync:[iyunv@localhost ~]# yum list|grep rsync
  • 确保已允许galera sst使用的端口4444、4567、4568通过防火墙并重启防火墙功能
  • 确保selinux已对端口4444开放权限:[iyunv@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

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-408113-1-1.html 上篇帖子: (转)增加定时检测linux占用内存,及时清理功能 下篇帖子: linux驱动系列之程序反汇编
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表