MySQL数据库之嗯高可用群集

  

嗯群集架构概述

  
  

嗯(-主复制managerfor Mysql, Mysql主主复制管理器)是一套灵活的脚本程序,基于perl实现,用来对Mysql复制进行监控和故障迁移,并能管理Mysql -主复制的配置(同一时间只有一个节点是可写的)。

     

嗯高可用架构说明

  
  

mmm_mond:监控进程,负责所有的监控工作,决定和处理所有节点角色活动。此脚本需要在监管机上运行。
mmm_agentd:运行在每个mysql服务器上的代理进程,完成监控的探针工作和执行简单的远端服务设置。此脚本需要在被监管机上运行。
mmm_control:一个简单的脚本,提供管理mmm_mond进程的命令。
mysql-mmm的监管端会提供多个虚拟IP (VIP),包括一个可写贵宾,多个可读贵宾,通过监管的管理,这些IP会绑定在可用mysql之上,当某一台mysql宕机时,监管会将VIP迁移至其他mysql。
在整个监管过程中,需要在mysql中添加相关授权用户,以便让mysql可以支持监理机的维护。授权的用户包括一个mmm_monitor用户和一个mmm_agent用户。

     

嗯的优缺点

  
  

优点:高可用性,扩展性好,出现故障自动切换,对于主主同步,在同一时间只提供一台数据库写操作,保证的数据的一致性。
缺点:监测节点是单点,可以结合keepalive实现高可用,对主机的数量有要求,需要实现读写分离,对程序来说是个挑战。

     

实验环境部署

  
 <代码>服务器角色IP地址代理名称虚拟IP
  
  主服务器1 192.168.142.131 db1 vip192.168.142.130
  (master1)
  
  主服务器2 192.168.142.134 db2
  (master2)
  
  从服务器1 192.168.142.130 db4 vip192.168.142.251,
  192.168.142.252
  (slave1)
  
  从服务器2 192.168.142.135 db4
  (slave2)
  
  监控服务器192.168.142.136
  (监控) 
  

第一步:在四台服务器上都需要安装MySQL数据库

  

<强> 1。配置阿里云源,然后安装epel-release源

  
 <代码> [root@localhost ~] # wget - o/etc/yum.repos.d/CentOS-Base。回购http://mirrors.aliyun.com/repo/centos - 7.回购
  
  (root@localhost ~) # yum - y epel-release安装
  
  (root@localhost ~) #百胜清洗所有的,,百胜makecache  
  

<强> 2。搭建本地百胜源

  
 <代码> #安装数据库
  (root@localhost ~) # yum - y安装mariadb-server mariadb
  
  #关闭防火墙和安全功能
  (root@localhost ~) # systemctl firewalld.service停止
  (root@localhost ~) # setenforce 0
  
  #开启数据库
  (root@localhost ~) # systemctl开始mariadb.service  
  

<强> 3。修改毫升主配置文件

  
 <代码> root@localhost ~ # vim/etc/my.cnf
  #删除前9行,添加以下内容
  (mysqld)
  log_error=/var/lib/mysql/mysql。错误#错误日志的文件位置
  日志=/var/lib/mysql/mysql_log。日志#访问日志的文件位置
  log_slow_queries=/var/lib/mysql_slow_queris。日志#男人日志的文件位置
  binlog-ignore-db=mysql, information_schema # mysql, information_schema不生成二进制日志文件
  character_set_server=utf8 #字符集
  log_bin=mysql_bin #二进制日志文件功能开启
  server_id=1 #不同主机id不同
  log_slave_updates=true #授权同步
  sync_binlog=1 #二进制日志文件功能开启
  auto_increment_increment=2 #自增量
  auto_increment_offset=1 #起始值
  
  (root@localhost ~) # systemctl mariadb.service重启
  (root@localhost ~) # netstat natp | grep 3306  
  

<>强4。复制配置文件到其他三台数据库服务器,注意修改server_id

  
 <代码> [root@localhost ~] # scp/etc/my.cnf root@192.168.142.134:等/ 
  

<强> 5。进入数据库,并查看日志文件信息

  
 <代码> root@localhost ~ # mysql
  
  #查看记录日志文件名称和位置值
  MariaDB[(一)]比;显示主状态;
  + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +
  | |文件位置| Binlog_Do_DB | Binlog_Ignore_DB |
  + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +
  | mysql_bin。000001 | 245 | | mysql, information_schema |
  + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +
  1行集(0.00秒)

MySQL数据库之嗯高可用群集