前言:
         原理与思想
       这里选用GTID主从复制模式Mysql主从复制模式,是为了更加确保主从复制的正确性、健康性与易配性。这里做的是两服务器A,B各有Mysql实例3310,两个实例间互为主从
       主从复制模式采用GTID主从复制模式,在服务器A,B上配置keepalived负载均衡,通过VIP连接数据库,目的是一旦有某数据库宕机,keepalived 就会立即建VIP执行另外一台
       健康的数据库实例上,实现快速切换,避免单点故障,从而保证业务的正常运行。
 

 
        这里只做了 双主+keepalived  , 对于读写要求很大大的环境,推荐架构是,双主多从(可以通过集群管理软件MMM来实现高可用架构)读写分离,当然代价也是比较高的 。
        读写分离实现方法:
               1、程序实现:程序端预留接口,当对于已经在运行的环境,重新修改程序,貌似不大现实
               2、Mysql_proxy :官方的一种实现方式,但是官方建议不要再生产环境中使用,所以不推荐
               3、Amoeba 软件分离 (推荐使用)
架构图:
 
 
          
 
一、环境要求:
服务器A: 192.168.1.31 系统环境:CetnOS6.5、Mysql-5.6.19(主从)、Keepalived(master)
服务器B: 192.168.1.32 系统环境:CetnOS6.5、Mysql-5.6.19(从主)、Keepalived(back)

二、安装Mysql 与 主从配置
      (mysql安装步骤略)
     这里服务器A上配置实例为3310,服务器B上的实例也为3310 (双主同样端口号的好处是在故障切换的时候)
     安装好mysql后修改配置文件
 
1、修改A服务器上的mysql配置文件my.cnf
               在my.cnf文件里加入参数(注意不要重复定义参数)
                
server-id       = 201                    //这里的ID号与从库上或者主库上的ID必须保证不一样
log-bin=mysql-bin                    //可以自定义 这里定义为 log-bin=/data/log-bin/log-bin-3310
binlog_format=row                    //主从复制模式
log-slave-updates=true                 //slave 更新是否记入日志
gtid-mode=on                                   // 启用gtid类型,否则就是普通的复制架构

enforce-gtid-consistency=true          //强制GTID 的一致性 
master-info-repository=TABLE        //主服信息记录库=表 /文件
relay-log-info-repository=TABLE    //中继日志信息记录库

sync-master-info=1                         //同步主库信息
slave-parallel-workers=4                 //从服务器的SQL 线程数,要复制库数目相同
binlog-checksum=CRC32                   // 校验码 ,可以自定义
master-verify-checksum=1               //主服校验

slave-sql-verify-checksum=1             //从服校验

binlog-rows-query-log_events=1     //二进制日志详细记录事件
report-port=3310                               //提供复制报告端口,当前实例端口号
report-host=192.168.1.31                   //提供复制报告主机,本机的ip地址

2、修改B服务器上的mysql配置文件my.cnf
          在my.cnf文件里加入参数(注意不要重复定义参数)
                   
server-id       = 202                    //这里的ID号与从库上或者主库上的ID必须保证不唯一
log-bin=mysql-bin                    //可以自定义 这里定义为 log-bin=/data/log-bin/log-bin-3310
binlog_format=row                    //主从复制模式
log-slave-updates=true                 //slave 更新是否记入日志
gtid-mode=on                                   // 启用gtid类型,否则就是普通的复制架构

enforce-gtid-consistency=true          //强制GTID 的一致性 
master-info-repository=TABLE        //主服信息记录库=表 /文件
relay-log-info-repository=TABLE    //中继日志信息记录库

sync-master-info=1                         //同步主库信息
slave-parallel-workers=4                 //从服务器的SQL 线程数,要复制库数目相同
binlog-checksum=CRC32                   // 校验码 ,可以自定义
master-verify-checksum=1               //主服校验

slave-sql-verify-checksum=1             //从服校验

binlog-rows-query-log_events=1     //二进制日志详细记录事件
report-port=3310                              //提供复制报告端口,当前实例端口号
report-host=192.168.1.32                   //提供复制报告主机,本机的ip地址

replicate-wild-ignore-table=mysql.%
replicate-wild-ignore-table=test.%
replicate-wild-ignore-table=performance_schema.%

(可以在配置文件里加入,作用屏蔽要复制的库)


3、授权
     A服务器mysql实例3310:
    grant replication slave,replication client on *.* to slave@'192.168.1.32'identified by '123456';
 
     B服务器mysql实例3310:
    grant replication slave,replication client on *.* to slave@'192.168.1.32'identified by '123456';   
================================================================================
     A服务器mysql实例3310:
    change master to master_host='192.168.1.32',master_port=3310,master_user='slave',master_password='123456',master_auto_position=1;
           注意:这里要是不配置参数master_port=3311,默认的会去找3306
     B服务器mysql实例3310:
    change master to master_host='192.168.1.31',master_port=3310,master_user='slave',master_password='123456',master_auto_position=1;
==================================================================================
        A、B服务器上开启主从复制:start slave;
4、查看状态
          A服务器:show slave status\G;show processlist;
    
                    
          B服务器:show slave status\G; show processlist;
          
          #show processlist;
              
 
 

5、到这里A、B服务器间基于GTID主从复制模式已经配置好了,测试下
          在A服务器3310实例上:drop databse test;B服务器3310上查看状态:show databases;
          在B服务器3310实例上:create database wll_test;  A服务器上3310上查看状态:show databases;

三、安装配置Keepalived负载均衡器
 1、官网下载www.keepalived.org
          在A服务器和B服务器上安装keepalived
          #tar zxvf  keepalived-1.2.20.tar.gz
          #cd  keepalived-1.2.20.tar.gz     
          #./configure --sysconf=/etc --with-kernel-dir=/usr/local/src/kernels/2.6.32-573.el6.x86_64
          #make&&make install
          #ln -s /usr/local/sbin/keepalived /sbin/
          #ln -s /usr/local/keepalived-1.2.20 /usr/local/keepalived
          #chkconfig --level 35 keepalived on
 2、配置keepalived
 
                    #配置A服务器
                    
 
              #配置B服务器
                    
         
 
 
3、# /etc/keepalived/change_mysql.sh 脚本内容为强杀死keepalived进程
                    
                    
4、#配置好后开启两服务器 keepalived 
                         #/etc/init.d/keepalived start
                         #ps aux | grep keepalived
5、查看状态
          # ip a
          
 
keepalived的工作机制是:每2秒检查一次real_server的监控状态,一旦发现数据库down了,此时VIP就会转移到另外一台上,从而实现故障快速切换,用户在通过VIP连接
基本可以保持一直连接状态。
 
四、测试切换
               先检查服务器A与服务器B上的Mysql实例与keepalived是否都为开启状态
          1、此时VIP在服务器B上
               
               在B服务器上将Mysql实例3310 stop
               # /etc/init.d/mysqld_3310 stop
      
                 可以看到VIP马上就切换到了服务器A 192.168.1.31这台上
               
          2、客户端连接数据库
                基本不会有影响
               
 
 
后续:欢迎评判!
               
 

企业级-Mysql双主互备高可用负载均衡架构(基于GTID主从复制模式)(原创)的更多相关文章

  1. 【Keepalived+MySQL】MySQL双主互备+高可用

    一.基本信息说明 [DB1] IP: 192.168.102.144 hostname: LVS-Real1 [DB2] IP: 192.168.102.145 hostname: LVS-Real2 ...

  2. keepalived + haproxy 实现web 双主模型的高可用负载均衡--转

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://xz159065974.blog.51cto.com/8618592/140581 ...

  3. haproxy + keepalived 实现web 双主模型的高可用负载均衡

    参考文章 http://xz159065974.blog.51cto.com/8618592/1405812 http://blog.chinaunix.net/uid-25266990-id-398 ...

  4. Mysql双主互备+keeplived高可用架构介绍

    一.Mysql双主互备+keeplived高可用架构介绍 Mysql主从复制架构可以在很大程度保证Mysql的高可用,在一主多从的架构中还可以利用读写分离将读操作分配到从库中,减轻主库压力.但是在这种 ...

  5. Mysql双主互备+keeplived高可用架构(部分)

    一.Mysql双主互备+keeplived高可用架构介绍 Mysql主从复制架构可以在很大程度保证Mysql的高可用,在一主多从的架构中还可以利用读写分离将读操作分配到从库中,减轻主库压力.但是在这种 ...

  6. Mysql+Keepalived双主热备高可用操作记录

    我们通常说的双机热备是指两台机器都在运行,但并不是两台机器都同时在提供服务.当提供服务的一台出现故障的时候,另外一台会马上自动接管并且提供服务,而且切换的时间非常短.MySQL双主复制,即互为Mast ...

  7. 使用Keepalived实现Nginx的自动重启及双主热备高可用

    1.概述 之前我们使用Keepalived实现了Nginx服务的双机主备高可用,但是有几个问题没有解决,今天一起探讨一下. 1)在双机主备机制中,Keepalived服务如果宕了,会自动启用备机进行服 ...

  8. 搭建 Keepalived + Nginx + Tomcat 的高可用负载均衡架构

    1 概述 初期的互联网企业由于业务量较小,所以一般单机部署,实现单点访问即可满足业务的需求,这也是最简单的部署方式,但是随着业务的不断扩大,系统的访问量逐渐的上升,单机部署的模式已无法承载现有的业务量 ...

  9. [转]搭建Keepalived+Nginx+Tomcat高可用负载均衡架构

    [原文]https://www.toutiao.com/i6591714650205716996/ 一.概述 初期的互联网企业由于业务量较小,所以一般单机部署,实现单点访问即可满足业务的需求,这也是最 ...

随机推荐

  1. 洛谷 P4169 [Violet]天使玩偶/SJY摆棋子 解题报告

    P4169 [Violet]天使玩偶/SJY摆棋子 题目描述 \(Ayu\)在七年前曾经收到过一个天使玩偶,当时她把它当作时间囊埋在了地下.而七年后 的今天,\(Ayu\) 却忘了她把天使玩偶埋在了哪 ...

  2. linux内核设计与实现一书阅读整理 之第一二章整合

    第一章:Linux内核简介 一.Unix和linux Unix是一个强大.健壮和稳定的操作系统. 1.Unix内核特点 十分简洁:仅提供几百个系统调用并且有明确的目的: 在Unix中,大部分东西都被( ...

  3. Linux内核分析第二周--操作系统是如何工作的

    Linux内核分析第二周--操作系统是如何工作的 李雪琦 + 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course ...

  4. Java之基础20160806

    注意这里介绍的JAVA基础是指你对C语言已经比较熟练或者有一定基础了,再学习如下这知识就会比较快. 1.JAVA也是从MAIN开始执行,但是要先定义类,文件名要与类名一致并且类名首字母要大写,同时JA ...

  5. JavaScript的变量预解析特性

    JavaScript是解释型语言是毋庸置疑的,但它是不是仅在运行时自上往下一句一句地解析的呢?事实上或某种现象证明并不是这样的,通过<JavaScript权威指南>及网上相关资料了解到,J ...

  6. Codeforces 894.E Ralph and Mushrooms

    E. Ralph and Mushrooms time limit per test 2.5 seconds memory limit per test 512 megabytes input sta ...

  7. 洛谷P3799 妖梦拼木棒

    P3799 妖梦拼木棒 53通过 345提交 题目提供者orangebird 标签 难度普及/提高- 时空限制1s / 128MB 提交  讨论  题解 最新讨论更多讨论 暂时没有讨论 题目背景 上道 ...

  8. 安装好dashboard 登录出现错误

    验证发生错误.请稍后再试一次. While turning SELinux off certainly does the trick, it is somewhat like using a sled ...

  9. Tests for normality正态分布检验

    欢迎关注博主主页,学习python视频资源,还有大量免费python经典文章 sklearn实战-乳腺癌细胞数据挖掘(博主亲自录制视频教程) https://study.163.com/course/ ...

  10. Codeforces 807 B T-Shirt Hunt

    B. T-Shirt Hunt http://codeforces.com/problemset/problem/807/B time limit per test 2 seconds memory ...