搭建MySQL双主MM + keepalive高可用架构的具体流程

  

下文我给大家简单讲讲关于搭建MySQL双主MM + keepalive高可用架构的具体流程,大家之前了解过相关类似主题内容吗?感兴趣的话就一起来看看这篇文章吧,相信看完搭建MySQL双主MM + keepalive高可用架构的具体流程对大家多少有点帮助吧。

比较常见的高可用架构有尼古拉斯,毫米,PXC等

MM架构优点是:

搭建快速方便,适合中小型公司,MySQL互为主,从保证两台数据库的一致性,keepalive实现虚拟IP和自动的服务监控功能,利用贵宾自动切换保证高可用,基本可以满足业务需要。

但是这种架构存在以下问题:

1切换后出现双VIP的问题,脑裂问题等,可以通过增加仲裁节点。

2切换时丢数据,可以配合脚本监控binlog日志或者采用5.7版本的增强半同步。

3主从延迟不能避免,如果要求没有主从延迟,可以采用PXC架构。

4当发生故障的云服务器恢复后,不能自动切回,切换回来比较麻烦,还需要手动修改配置文件中的权重。

5对脚本编写的能力也有不小考验。

想要了解keepalive工作原理和配置文件说明的童鞋可以自行百度,或者看看这篇很详细,传送门keepalive工作原理与配置文件说明


公司大部分的架构为MM + keepalive或者MM +心跳,然后主库下面挂上从库作为读库,再配合字符集集群实现读写分离和分库分表就是一套比较完善的MySQL高可用架构了(如下图)。

搭建MySQL双主MM + keepalive高可用架构的具体流程


现在有新的业务需要一套新的环境,在此记录下部署过程,希望对刚接触MySQL的同学有所帮助,前面MySQL安装和主从搭建可以不看,废话不多少,架构图如下

搭建MySQL双主MM + keepalive高可用架构的具体流程


一环境准备

操作系统版本为,Ubuntu 14.04.5 

云服务器为16 g内存,4核的CPU 1 t数据目录存储,

数据库版本为5.6.39-log

IP规划

master1: 192.168.70.154

master2: 192.168.70.156

vip ,,,,,,192.168.70.157


二MySQL双主搭架

在两台数据库云服务器上

上传安装包

mysql-5.6.39-linux-glibc2.12-x86_64.tar。广州

解压

焦油-zxvf mysql-5.6.39-linux-glibc2.12-x86_64.tar。广州

将解压后的包移动到MySQL的basedir

mv mysql-5.6.39-linux-glibc2.12-x86_64/usr/local/mysql

创建MySQL组和用户

useradd groupadd MySQL - r - m - s/bin/bash - g MySQL MySQL

修改相关目录的权限

乔恩- r MySQL: MySQL/usr/local/mysql/

乔恩- r MySQL: MySQL/数据/MySQL

乔恩- r MySQL: mysql /etc/my.cnf

编辑配置文件

配置文件需要特别注意的地方为:

1,服务器id必须不同,否则主从搭建报错。

2主键自增参数,可以避免主键冲突的错误

master1设置如下

auto-increment-increment=2

auto-increment-offset=1

主2设置如下

auto-increment-increment=2

auto-increment-offset=2

下面给出一个比较全的可以作为参考,其他的要根据自己的实际情况修改:

vim/etc/my.cnf 

[客户]
  # password ,,,,,,=, (your_password)
  port ,,,,,,,,,,=, 3306
  socket ,,,,,,,,,=,/tmp/mysql.sock
  #设置客户端字符集
  default-character-set =, utf8
  
  (mysqld)
  
  #,generic  configuration 选项
  port ,,,,,,,,,,=, 3306
  socket ,,,,,,,,,=,/tmp/mysql.sock
  basedir ,,,,,,,,=/usr/地方/mysql
  datadir ,,,,,,,,=,/数据/mysql
  user ,,,,,,,,,,=, mysql
  
  #设置云服务器时区,建议每次都显示指定
  时区=& # 39;+ 8 # 39;
  #设置云服务器端字符集,注意和客户端字符集一样,建议都设置utf8,防止中文乱码
  character-set-server=utf8
  
  skip-name-resolve
  #是否支持federated 分布式引擎默认不支持
  #联合
  #设置sql校验模式,该设置影响到数据库对字段数据的校验严格程度
  # sql_mode =STRICT_TRANS_TABLES
  expire_logs_days =15
  #在同步配置中这个要额外注意否则容易导致主键冲突
  时间=auto-increment-increment  2
  auto-increment-offset =1
  back_log =50
  max_connections =10000
  max_connect_errors =100000
  table_open_cache =1024
  #外部锁
  max_allowed_packet =16米
  binlog_cache_size =2 m
  max_heap_table_size =64
  read_buffer_size =2 m
  read_rnd_buffer_size =, 4 m
  sort_buffer_size =8米
  join_buffer_size =, 4 m
  thread_cache_size =64
  #这个变量是针对Solaris系统的,如果设置这个变量的话,mysqld就会调用thr_setconcurrency()。#这个函数使应用程序给同一时间运行的线程系统提供期望的线程数目。
  时间=thread_concurrency  4
  #无论是否有misam表建议都16 - 128 m,如果misam表多那么建议设置为128最大不要超#过256米
  # query_cache_size =64
  # query_cache_limit =2 m
  时间=ft_min_word_len  4
  # memlock
  # 5.5以下版本建议显示设置.5.5默认是innodb
  default-storage-engine =innodb
  thread_stack =192 k
  #,读未提交,读取提交,,可重复读,可序列化的
  transaction_isolation =可重复读
  tmp_table_size =64
  #防止夸库更新混乱,同步里推荐的设置
  # replicate_wild_do_table=tang_monitor_report. %
  replicate_wild_do_table=%。%
  #建议显示指定binlog和relaylog的名字,防止因修改主机名而导致出的错
  log-bin=mysql-bin
  relay-log=mysql-relay-bin
  # binlog记录格式,建议设置一行,防止声明格式导致的数据不一直无法检测的问题
  binlog_format=混合
  #设置是否将主库的更新写入binlog ,一般情况关闭,建议关闭
  log_slave_updates
  # log_warnings
  slow_query_log
  slow_query_log_file=/数据/mysql/myslow.log
  时间=long_query_time  2
  
  innodb_buffer_pool_instances=4
  innodb_change_buffering =改变
  innodb_old_blocks_time=1000
  innodb_autoextend_increment=50
  sync_binlog=100
  innodb_open_files=1024
  innodb_file_per_table =1
  
  open-files-limit =8192
  log-error =/数据/mysql/error.log
  server-id =3306154
  #半同步配置参数,很简单吧,简单的让人震惊
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null

搭建MySQL双主MM + keepalive高可用架构的具体流程