企业级-Mysql双主互备高可用负载均衡架构(基于GTID主从复制模式)

前言:

原理与思想

这里选用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 [email protected]‘192.168.1.32‘identified by ‘123456‘;

B服务器mysql实例3310:

    grant replication slave,replication client on *.* to [email protected]‘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、客户端连接数据库

基本不会有影响

后续:欢迎评判!

时间: 2024-10-21 20:50:42

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

Mysql5.7.22+Keepalived双主互备高可用集群

DB1:192.168.254.128DB2:192.168.254.129配置前进行校时操作#安装ntpdate工具yum install ntpdate -y#使用ntpdate校时(后面的是ntp服务器)ntpdate pool.ntp.org 配置mysql双主备 安装数据库链接(在主页数据库里面可以看到)http://blog.51cto.com/10158955/1926574 DB1修改配置文件(需重启)vi /etc/my.cnf#在[mysqld]添加server-id=166

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

1.本文的架构图: 阐述各服务器用途: 1.haproxy在本构架中实现的是:负载均衡 2.keepalived实现对haproxy的高可用 3.apache static 实现静态页面的访问 4.aoache dynamic实现动态页面的访问,图中有两个是实现负载均衡的 配置各功能模块: 一.配置haproxy和keepalived 验证: 1.当一台keepalived宕机后,VIP会不会转移到另外一台服务器 2.当一台haproxy服务出故障,VIP会不会转移到另外一台服务器 注意: 那如

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

参考文章 http://xz159065974.blog.51cto.com/8618592/1405812 http://blog.chinaunix.net/uid-25266990-id-3989321.html http://my.oschina.net/davehe/blog/162560 http://www.osyunwei.com/archives/7512.html http://fighter.blog.51cto.com/1318618/1254815/ Haproxy+K

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

一.Mysql双主互备+keeplived高可用架构介绍 Mysql主从复制架构可以在很大程度保证Mysql的高可用,在一主多从的架构中还可以利用读写分离将读操作分配到从库中,减轻主库压力.但是在这种架构中,主库出现故障时需要手动将一台从库提升为主库.在对写操作要求较高的环境中,主库故障在主从架构中会成为单点故障.因此需要主主互备架构,避免主节点故障造成写操作失效. 在双主互备的架构中,每台Mysql都充当主服务器,同时充当对方的从服务器.在任意一台服务器上的写操作都会被复制到另一台服务器上,从

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

环境: ubuntu18.04.2 mysql5.7.21 1 #1)安装keepalived并将其配置成系统服务.master1和master2两台机器上同样进行如下操作: 2 apt-get install libssl-dev 3 apt-get install openssl 4 apt-get install libpopt-dev 5 [[email protected] ~]# cd /usr/local/src/ 6 [[email protected] src]# wget h

Mysql+keeoalived双主热备高可用操作记录

我们通常说的双机热备是指两台机器都在运行,但并不是两台机器都同时在提供服务.当提供服务的一台出现故障的时候,另外一台会马上自动接管并且提供服务,而且切换的时间非常短.之前梳理了Mysql主从同步,下面说下Mysql+keeoalived双主热备高可用方案的实施. 1)Keepalived的工作原理是VRRP(Virtual Router Redundancy Protocol)虚拟路由冗余协议.在VRRP中有两组重要的概念:VRRP路由器和虚拟路由器,主控路由器和备份路由器. 2)VRRP路由器

Mysql+Keepalived双主热备高可用操作步骤详细解析

mysql+keepalived双主热备高可用的介绍: 我们通常说的双机热备是指两台机器都在运行,但并不是两台机器都同时在提供服务.当提供服务的一台出现故障的时候,另外一台会马上自动接管并且提供服务,而且切换的时间非常短.MySQL双主复制,即互为Master-Slave(只有一个Master提供写操作),可以实现数据库服务器的热备,但是一个Master宕机后不能实现动态切换.使用Keepalived,可以通过虚拟IP,实现双主对外的统一接口以及自动检查.失败切换机制,从而实现MySQL数据库的

MySQL双主互备模式架构

MySql双主互备架构模式 操作系统 CentOS 6.3 MySql版本 mysql-5.0.56 keepalived keepalived-1.1.19.tar.gz Master DB1配置文件 修改MySql 配置文件  /etc/my.cnf 增加以下段落 [mysqld] server-id=1    节点标示 log-bin=mysql-bin   开启mysql的binlog日志功能 relay-log = mysql-relay-bin  用来定义日志文件命名格式 repli

mysql双主互备

一.安装mysql 各种方式太多了 二.摘录自:https://linux.cn/thread-14135-1-1.html 1)首先在DB1上my.cnf 中[mysqld] 字段中添加如下内容:server-id = 1 //数据库ID号, 为1时表示为Master,其中master_id必须为1到232–1之间的一个正整数值;log-bin=mysql-bin //启用二进制日志: relay-log=mysql-relay-bin  //用来定义relay-log日志文件命名格式repl