MySQL架构,嗯部署实例

  

嗯架构的来源

  
      <李>众所周知,MySQL自身提供了主从复制,然后可以很轻松实现-主双向复制,同时再为其中一个主节点搭建一个奴隶库。这样就实现了MySQL-MMM架构的基础:master1和master2之间双向复制,同时master1和Slave1之间是主从复制。   <李>这样整个体系中存在两个主人,正常情况下只有一个主人对外提供写服务。如果对外提供服务的主人意外宕机了,这是MySQL本身并不具备故障转移切换的能力,尽管集群中仍然有一个正常的主节点,但应用仍不可用.mysql-mmm就是为了解决这个问题诞生的。   
  

嗯架构的原理

  
      <李> MySQL-MMM是MySQL -主复制经理(MySQL主主复制管理器)的简称,是谷歌的开源项目(Perl脚本),主要用来监控MySQL主主复制并做失败转移   <李>其原理是将真实数据库节点的IP (RIP)映射为虚拟IP (VIP)集,在这个虚拟的IP集中,有一个专用于写的IP,多个用于阅读的IP,这个用于写的VIP映射着数据库集群中的两台主的真实IP (RIP),以此来实现故障转移的切换,其他读的贵宾可以用来均衡读(平衡)。   
  

嗯机构优缺点

  

优点

  
      <李>使用Perl脚本语言开发及完全开源李   <李>提供了读写VIP(虚拟IP),使服务器角色的变更对前端应用透明李   <李>嗯提供了从服务器的延迟监控李   <李>嗯提供了主数据库故障转移后从服务器对新主的重新同步功能李   <李>很容易对发生故障的主数据库重新上线李   
  

缺点

  
      <李>发布时间比较早不支持MySQL新的复制功能(基于GTID的复制)   <李>没有读负载均衡的功能李   <李>在进行主从切换时,容易造成数据丢失李   <李>嗯监控服务存在单点故障李   
  

嗯架构原理图

  

 MySQL架构,嗯部署实例

  

实验部署

  

环境部署

  
 <代码> master1IP地址:192.168.144.167
  master2IP地址:192.168.144.151
  slave1IP地址:192.168.144.168
  slave2IP地址:192.168.144.145
  monitorIP地址:192.168.144.164  
  

在master1 \ master2 \ slave1 \ slave2服务器中安装MYSQL数据库

  
 <代码> [root@master1 ~] # wget - o/etc/yum.repos.d/CentOS-Base。回购http://mirrors.aliyun.com/repo/centos - 7.回购//获取源地址
  (root@master1 ~) # yum - y安装epel-release//安装epel源
  (root@master1 ~) #百胜清洗所有的,,百胜makecache//百胜缓存清空
  (root@master1 ~) # yum - y安装mariadb-server mariadb//安装mariadb数据库
  (root@master1 ~) # systemctl firewalld停止。服务//关闭防火墙
  (root@master1 ~) # setenforce 0
  (root@master1 ~) # systemctl mariadb开始。服务//开启数据库代码 
  

修改master1数据库配置文件

  
 <代码> [root@master1 ~] # vim/etc/my.cnf//进入编辑配置文件
  (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//二进制文件
  character_set_server=utf8//字符集
  log_bin=mysql_bin//二进制日志文件
  server_id=11//服务id(不能相同)
  log_slave_updates=true//允许从服务器更新
  sync_binlog=1//同步日志
  auto_increment_increment=2//自增列
  auto_increment_offset=1//起始点
  (root@master1 ~) # systemctl mariadb重启。服务//重启数据库代码 
  

使用scp复制数据库配置文件到其他MySQL服务,并在其他MySQL服务器中修改server_id

  
 <代码> [root@master1 ~] # scp/etc/my.cnf root@192.168.144.151:/etc/(服务器id=22)
  (root@master1 ~) # scp/etc/my.cnf root@192.168.144.168:/etc/(服务器id=33)
  (root@master1 ~) # scp/etc/my.cnf root@192.168.144.145:/etc/(服务器id=44)
  (root@master1 ~) # netstat -anpt | grep 3306//查看端口3306
  tcp 0 0 0.0.0.0:3306 0.0.0.0: * 4235/mysqld听 
  

配置主主复制

  
master1
  
 <代码> mysql (root@master1 ~) # # #进入数据库
  
  MariaDB[(一)]比;显示主状态;# #查看主服务器的状态信息
  + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +
  | |文件位置| Binlog_Do_DB | Binlog_Ignore_DB |
  + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +
  | mysql_bin。000001 | 245 | | mysql, information_schema |
  + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +
  1行集(0.00秒)
  
  MariaDB[(一)]比;格兰特复制奴隶*。*“复制”@“192.168.144。%”被“123456”;//授权给144段的网段复制的权限用户名复制密码123456
  查询好,0行影响(0.00秒)

MySQL架构,嗯部署实例