MySQL高可用方案

MHA|Galera Cluster

Posted by BY lingjun on May 16, 2019 本文总阅读量

MySQL高可用方案

MHA

MHA(Master High Availability)目前在MySQL高可用方面是一个相对成熟的解决方案,是一套优秀的作为MySQL高可用性环境下故障切换和主从提升的高可用软件。在MySQL故障切换过程中,MHA能做到在0-30秒之内自动完成数据库的故障切换操作,并且在进行故障切换的过程中,MHA能在最大程度上保证数据的一致性,以达到真正意义上的高可用。

功能

  • MHA包含两种角色:MHA Manager(管理节点)和MHA Node(数据节点)
  • Manager可以单独部署在一台服务器上,也可以部署在复制组中的任何一台从库上
  • Node节点需要部署在复制组中的所有服务器上

MHA自动部署脚本

Galera Cluster

Galera是一个MySQL(也支持MariaDB,Percona)的同步多主集群软件,目前只支持InnoDB引擎。

功能

  • 基于同步复制
  • 多主服务器的拓扑结构
  • 可以在任意节点上进行读写
  • 自动剔除故障节点
  • 自动加入新节点
  • 真正行级别的并发复制
  • 客户端连接跟操作单台MySQL数据库的体验一致

搭建galera

  • 修改galera仓库 vim /etc/yum.repos.d/galera.repo
[galera]
name = Galera
baseurl = http://releases.galeracluster.com/galera-3/centos/6/x86_64
gpgkey = http://releases.galeracluster.com/GPG-KEY-galeracluster.com
gpgcheck = 1

[mysql-wsrep]
name = MySQL-wsrep
baseurl = http://releases.galeracluster.com/mysql-wsrep-5.7/centos/6/x86_64
gpgkey = http://releases.galeracluster.com/GPG-KEY-galeracluster.com
gpgcheck = 1
  • 安装 yum install galera-3 mysql-wsrep-5.7 -y

  • 修改配置文件 vim /etc/my.cnf

user = mysql 
binlog_format = ROW 
bind-address = 0.0.0.0 
default_storage_engine = innodb 
innodb_autoinc_lock_mode = 2 
innodb_flush_log_at_trx_commit = 0 
innodb_buffer_pool_size = 122M 
wsrep_provider = /usr/lib64/galera-3/libgalera_smm.so 
wsrep_provider_options = "gcache.size = 300M; gcache.page_size = 300M" 
wsrep_cluster_name = "test_cluster"
wsrep_cluster_address = "gcomm://192.168.159.121,192.168.159.122,192.168.159.123"
wsrep_sst_method = rsync
wsrep_node_name=MyNode123
wsrep_node_address="192.168.159.123"
wsrep_slave_threads=16
wsrep_log_conflicts=ON

[mysql_safe] 
log-error = /var/log/mysqld.log 
pid-file = /var/run/mysqld/mysqld.pid
  • 查看初始密码
cat /var/log/mysqld.log | grep "A temporary password" | awk -F " " '{print$11}'
  • 启动 service mysqld start –wsrep-new-cluster