MySQL主主+Keepalived实现高可用

在企业中,数据库高可用一直是企业的重中之重,中小企业很多都是使用mysql主主方案,一主多从,读写分离等,但是单主存在单点故障,从库切换成主库需要作改动。因此,如果是双主或者多主,就会增加mysql入口,增加高可用。不过多主需要考虑自增长ID问题,这个需要特别设置配置文件,比如双主,可以使用奇偶,总之,主之间设置自增长ID相互不冲突就能完美解决自增长ID冲突问题

主主方案实现思路

1、 两台mysql都可读写,互为主备。默认只使用一台masterA负责数据的写入,另一台masterB备用处于备用状态;

2、 masterA是masterB的主库,masterB又是masterA的主库,它们互为主从;

3、 两台主库之间做高可用,可以采用keepalived等方案,使用VIP对外提供服务;

4、所有提供服务的从服务器与masterB进行主从同步(双主多从);

5、建议采用高可用策略的时候,masterA或masterB均不因宕机恢复后而抢占VIP(非抢占模式);

这样做可以在一定程度上保证主库的高可用,在一台主库down掉之后,可以在极短的时间内切换到另一台主库上,尽可能减少主库宕机对业务造成的影响,减少了主从同步给生产主库带来的压力;

实验步骤:

master:192.168.200.111

slave:192.168.200.112

配置master1服务器:

1.修改配置文件

vim /etc/my.cnf

添加内容

[mysqld]

server-id=1

log-bin=mysql-binlog#打开二进制功能

log-slave-updates=true#将复制事件写入binlog,一台服务器既做主库又做从库此选项必须要开启

max_binlog_size=1024M#binlog单文件最大值

auto_increment_offset = 1#自增长ID数

auto_increment_increment = 2#奇数ID

replicate-ignore-db = information_schema#忽略不同步主从的数据库

replicate-ignore-db = performance_schema

replicate-ignore-db = test

replicate-ignore-db = mysql

max_connections = 3000

max_connect_errors = 30

skip-character-set-client-handshake#忽略应用程序想要设置的其他字符集

init-connect=‘SET NAMES utf8‘#连接时执行的SQL

character-set-server=utf8#服务端默认字符集

wait_timeout=1800#请求的最大连接时间

interactive_timeout=1800#和上一参数同时修改才会生效

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES#sql模式

relay-log=relay-log-bin#开启中继日志

relay-log-index=slave-relay-bin.index

 2.重启数据库

systemctl restart mariadb

3.登录数据库进行授权

mysql -uroot -p‘密码‘

3.给master2授权

grant replication slave on *.* to ‘repl‘@‘192.168.200.112‘ identified by ‘123456‘;

4.刷新授权表

flush privileges;

5.查看信息表

show master status;

类似上表

配置master2服务器:

1.修改配置文件

vim /etc/my.cnf

添加内容:

[mysqld]

server-id       = 2

log-bin=mysql-binlog

log-slave-updates=true

max_binlog_size=1024M

auto_increment_offset = 2

auto_increment_increment = 2#偶数ID

replicate-ignore-db = information_schema

replicate-ignore-db = performance_schema

replicate-ignore-db = test

replicate-ignore-db = mysql

max_connections = 3000

max_connect_errors = 30

skip-character-set-client-handshake

init-connect=‘SET NAMES utf8‘

character-set-server=utf8

wait_timeout=1800

interactive_timeout=1800

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

relay-log=relay-log-bin

relay-log-index=slave-relay-bin.index

2.重启数据库

systemctl restart mariadb

3.登录数据库进行授权

mysql -uroot -p‘密码‘

4.给master1授权

grant replication slave on *.* to ‘repl‘@‘192.168.200.111‘ identified by ‘123123‘;

5.刷新授权表

flush privileges;

6.查看信息表

show master status;

类似上表

实现主主复制:

配置master1数据库:

1.登录到数据库

mysql -uroot -p‘密码‘

2.停掉从服务

stop slave;

3.指向master2

change master to master_host=‘192.168.200.112‘,master_port=3306,master_user=‘repl‘,master_password=‘123123‘,master_log_file=‘mysql-binlog.000001‘,master_log_pos=889;

#对应master2的IP地址、设置密码、binlog进程数和position号

4.开启从服务

start slave;

5.查看从服务信息

show slave status\G

#确保两个线程处于开启状态

master2数据库与master1数据库步骤相同

唯一不同的是指向命令

change master to master_host=‘192.168.200.111‘,master_port=3306,master_user=‘repl‘,master_password=‘123123‘,master_log_file=‘mysql-binlog.000004‘,master_log_pos=486;

 #对应master1的IP地址、设置密码、进程数和position号

查看从服务信息

show slave status\G

 
#确保两个线程处于开启状态

进行测试:
测试环境,可以保证没数据写入。步骤是:先masterA锁表-->masterA备份数据-->masterA解锁表 -->masterB导入数据-->masterB设置主从-->查看主从

1.在master1数据库中创建库

create database hhh;

2.在master2中查看数据库

show databases;

 3.在master2中创建库jjj

create database jjj;

4.在master1中查看数据库

show databases;

 实现主主复制

配置keepalived实现主主复制高可用

配置master1数据库:

1.安装keepalived软件

yum -y install keepalived

2.修改keepalived配置文件

vim /etc/keepalived/keepalived.conf

修改内容:

! Configuration File for keepalived

 

global_defs {

   router_id LVS_MASTER-A#指定LVS负载标识

}

 

vrrp_script mysql {

    script "/opt/mysql.sh"#准备触发脚本

    interval 2

    weight -5                 

    fall 2                 

    rise 1

}

 

vrrp_instance VI_1 {

    state BACKUP

    interface eno16777728#本机网卡名

    virtual_router_id 51

priority 100#优先级

nopreempt#采用不抢占模式

    advert_int 1

    authentication {

        auth_type PASS

        auth_pass 1111

    }

    track_script {

        mysql#指定要触发的脚本

    }

    virtual_ipaddress {

        192.168.200.254#指定VIP地址

    }

}

3.编辑触发脚本

vim /opt/mysql.sh

编辑内容:

#!/bin/bash

counter=$(netstat -na|grep "LISTEN"|grep "3306"|wc -l)

if [ "${counter}" -eq 0 ]; then

systemctl stop keepalived

fi

4.给与脚本执行权限

chmod +x /opt/mysql.sh

5.重启keepalived服务使其生效

systemctl start keepalived

6.查看IP信息

ip a

 #VIP地址为254被篇master1所占用

7.查看日志信息

tail -f /var/log/messages

master2数据库操作与master1相同

唯一不同的地方是keepalived配置文件做调整

vim /etc/keepalived/keepalived.conf

! Configuration File for keepalived

 

global_defs {

   router_id LVS_MASTER-B

}

 

vrrp_script mysql {

    script "/opt/mysql.sh"

    interval 2

    weight -5                 

    fall 2                 

    rise 1

}

 

vrrp_instance VI_1 {

    state BACKUP

    interface eno16777728

    virtual_router_id 51

    priority 99

    nopreempt

    advert_int 1

    authentication {

        auth_type PASS

        auth_pass 1111

    }

    track_script {

        mysql

    }

    virtual_ipaddress {

        192.168.200.254

    }

}

实现双主复制并给予keepalived实现高可用

原文地址:https://www.cnblogs.com/990114-jhc/p/11690429.html

时间: 2024-10-07 22:43:29

MySQL主主+Keepalived实现高可用的相关文章

mysql主主复制+keepalived实现高可用

mysql最简单的高可用 2台pc机 mysql主主复制实现数据的同步 keepalive实现双机热备,保证服务的正常运行 1.环境 Master1  10.0.0.201 Master2 10.0.0.202 2.Master1操作授权 mysql>grant replication slave on *.* to'admin'@'10.0.0.202' identified by '123456';///授权 mysql>show master status\G; 3.Master2操作授

mysql学习-mysql8.0配置双主复制+keepalived实现高可用架构

一般小型公司数据库,使用主从复制即可保证数据库的高可用,但是一旦主数据库故障,切换到从库需要一定的时间,这样就导致了停机时间过长,不能及时恢复业务.使用双主(master)配合keepalived这种mysql高可用架构也是基于主从复制的原理而搭建的.这是一种简单.便捷的解决方案,在高可用集群环境中,keepalived使用vip,利用keepalived自带的服务监控功能和自定义脚本来实现mysql故障时自动切换. 1.mysql双主复制介绍 双主复制,就是相互做主从复制,每个master既是

mysql主主复制+keepalived 打造高可用mysql集群

为了响应公司需求,打造出更安全的mysql集群,能够实现mysql故障后切换,研究了几天终于有了成果,一起分享一下. 首先介绍一下这套集群方案实现的功能 1.mysql服务器故障后自动转移,修好后自动切回 2.mysql服务故障自动转移,修好后自动切回 3.可以实现在几秒钟内转移 以下内容均是实验环境,请根据实际情况修改响应参数 实验环境: mysql1 ip:10.1.1.20 mysql2  ip:10.1.1.21 mysql vip:10.1.1.25 三台机器均安装centos 6.5

MySQL双主+keepalived实现高可用

mysql+keepalived实现高可用+主主复制模式 为了解决mysql的单点故障问题,衍生出很多mysql的高可用方案: keepalived+双主.MHA.PXC.MMM.Hearbeat+DRBD等,比较常用的一般是keepalived+双主,MHA和PXC 在此搭建实验环境,实现keepalived+mysql双主模式. 实验思路: 两台MySQL互为主从关系(双主),通过keepalived配置虚拟vip,实现当其中的一台MySQL数据库宕机后,应用能自动切换到另外一台MySQL数

keepalived双主模式实现nginx高可用及LNAMMP架构

keepalived双主模式实现nginx高可用及LNAMMP架构 一.利用keepalived实现nginx调度器高可用: 二.构建LNAMMP架构: 1) Nginx既是前端调度器,又是缓存服务器: 2) 将php的session缓存于memcached中: 3) 在Apache和php上部署Discuz论坛程序: 4) 使用https连接,即使用户使用的是http协议也可以以https协议进行访问: ---------------------------------------------

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

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

Linux集群(keepalived介绍,Keepalived配置高可用集群,Keepa+mysql

一.Linux集群概述 根据功能划分为两大类:高可用和负载均衡 (1)高可用集群通常为两台服务器,台工作,另外一台作为准备,当提供服务的机器宕机,另外一台将接替继续提供服务. 实现高可用的开源软件有:heartbeat,keepalived (2)负载均衡集群:需要有一台服务器作为分发器,它负责吧用户的请求分发给后端的服务器处理,在这个集群里,除了分发器外,就是给用户提供服务的服务器了,这些服务器数量最少为2 实现负载均衡的开源软件有LVS,keepalived,haproxy,nginx,商业

keepalived配置高可用集群

准备工作 1.设备分配 192.168.137.100    master 192.168.137.150    backup 192.168.137.254    vip 2.两台设备均安装keepalived yum install -y keepalived 3.两台设备均安装nginx yum install -y nginx 主设备配置 1.编辑keepalived配置文件 [[email protected] ~]# > /etc/keepalived/keepalived.conf

haproxy+keepalived实现高可用负载均衡

软件负载均衡一般通过两种方式来实现:基于操作系统的软负载实现和基于第三方应用的软负载实现.LVS就是基于Linux操作系统实现的一种软负载,HAProxy就是开源的并且基于第三应用实现的软负载. HAProxy相比LVS的使用要简单很多,功能方面也很丰富.当 前,HAProxy支持两种主要的代理模式:"tcp"也即4层(大多用于邮件服务器.内部协议通信服务器等),和7层(HTTP).在4层模式 下,HAProxy仅在客户端和服务器之间转发双向流量.7层模式下,HAProxy会分析协议,