linux上mysql MM(双主)架构及keepalived搭建
master1 10.1.1.14 VIP 10.1.1.16
master2 10.1.1.15 VIP 10.1.1.16
一.mysql MM配置
1.修改master1的my.cnf
# vi /etc/my.cnf
[mysqld]
basedir = /usr/local/mysql/
datadir=/usr/local/mysql/data
log-error=/usr/local/mysql/mysqld.log
port = 3306
socket=/usr/local/mysql/mysql.sock
pid-file=/usr/local/mysql/mysql.pid
expire-logs-days=10
#binlog-do-db=db1
#binlog-ignore-db=db2
server-id = 1
log-bin = binlog
relay_log = relay-bin
log_slave_updates =1
auto_increment_increment=2
auto_increment_offset=1
2.修改master2的my.cnf
# vim /etc/my.cnf
[mysqld]
basedir = /usr/local/mysql/
datadir=/usr/local/mysql/data
log-error=/usr/local/mysql/mysqld.log
port = 3306
socket=/usr/local/mysql/mysql.sock
pid-file=/usr/local/mysql/mysql.pid
expire-logs-days=10
#binlog-do-db=db1
#binlog-ignore-db=db2
server-id=2
relay_log=relay-bin
log_bin =binlog
log_slave_updates =1
auto_increment_increment=2
auto_increment_offset=2
3.创建master1复制账号
grant replication slave,replication client on *.* to 'repl'@'10.1.1.15' identified by 'repl';
4.创建master2复制账号
grant replication slave,replication client on *.* to 'repl'@'10.1.1.14' identified by 'repl';
5.为master1配置master
show master status;
change master to master_host='10.1.1.15',master_user='repl',master_password='repl',master_log_file='binlog.000005',master_log_pos=154;
6.为master2配置master
show master status;
change master to master_host='10.1.1.14',master_user='repl',master_password='repl',master_log_file='binlog.000001',master_log_pos=154;
7.启动slave
master1:
start slave;
master2:
start slave;
二.keepalived配置
1.编辑master1的keepalived配置文件
#vi /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
#设置报警通知邮件地址,可以设置多个
notification_email {
root@localhost
}
#设置邮件的发送地址
notification_email_from mysql@xiaomi.com
#设置smtp server的地址,该地址必须是存在的
smtp_server 127.0.0.1
#设置连接smtp server的超时时间
smtp_connect_timeout 30
#运行Keepalived服务器的标识,发邮件时显示在邮件标题中的信息
router_id mysql_ha
}
# 检测脚本
vrrp_script chk_mysql {
script "/etc/keepalived/mysqlcheck/check_slave.sh"
interval 2
weight 2
}
#定义VRRP实例,实例名自定义
vrrp_instance mysql-ha {
#指定Keepalived的角色,MASTER主机 BACKUP备份
state BACKUP #此处两个都设置为BACKUP
#指定HA监测的接口
interface eth0
#虚拟路由标识,这个标识是一个数字(1-255),在一个VRRP实例中主备服务器ID必须一样
virtual_router_id 68
#优先级,数字越大优先级越高,在一个实例中主服务器优先级要高于备服务器
priority 100 #从服务器99
#设置主备之间同步检查的时间间隔单位秒
advert_int 1
#设置不抢占模式(DB1设置即可)
nopreempt
#设置验证类型和密码
authentication {
#验证类型有两种{PASS|HA}
auth_type PASS
#设置验证密码,在一个实例中主备密码保持一样
auth_pass centos
}
track_script {
chk_mysql # 执行监控的服务
}
#定义虚拟IP地址,可以有多个,每行一个
virtual_ipaddress {
10.1.1.16
}
}
2.编辑心跳检测脚本:
#vim /etc/keepalived/mysqlcheck/check_slave.sh
#!/bin/bash
#This scripts is check for Mysql Slave status
counter=$(netstat -na|grep "LISTEN"|grep "3306"|wc -l)
if [ "${counter}" -eq 0 ]; then
systemctl stop keepalived
killall keepalived
fi
ping 172.25.0.41 -w1 -c1 &>/dev/null
if [ $? -ne 0 ]
then
systemctl stop keepalived
killall keepalived
fi
3.编辑master2的keepalived配置文件
# vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
#设置报警通知邮件地址,可以设置多个
notification_email {
root@localhost
}
#设置邮件的发送地址
notification_email_from mysql@xiaomi.com
#设置smtp server的地址,该地址必须是存在的
smtp_server 127.0.0.1
#设置连接smtp server的超时时间
smtp_connect_timeout 30
#运行Keepalived服务器的标识,发邮件时显示在邮件标题中的信息
router_id mysql_ha
}
# 检测脚本
vrrp_script chk_mysql {
script "/etc/keepalived/mysqlcheck/check_slave.sh"
interval 2
weight 2
}
#定义VRRP实例,实例名自定义
vrrp_instance mysql-ha {
#指定Keepalived的角色,MASTER主机 BACKUP备份
state BACKUP #此处两个都设置为BACKUP
#指定HA监测的接口
interface eth0
#虚拟路由标识,这个标识是一个数字(1-255),在一个VRRP实例中主备服务器ID必须一样
virtual_router_id 68
#优先级,数字越大优先级越高,在一个实例中主服务器优先级要高于备服务器
priority 90 #从服务器99
#设置主备之间同步检查的时间间隔单位秒
advert_int 1
#设置不抢占模式(DB1设置即可)
#nopreempt
#设置验证类型和密码
authentication {
#验证类型有两种{PASS|HA}
auth_type PASS
#设置验证密码,在一个实例中主备密码保持一样
auth_pass centos
}
track_script {
chk_mysql # 执行监控的服务
}
#定义虚拟IP地址,可以有多个,每行一个
virtual_ipaddress {
10.1.1.16
}
}
4.编辑检测脚本
# vim /etc/keepalived/mysqlcheck/check_slave.sh
#!/bin/bash
#This scripts is check for Mysql Slave status
counter=$(netstat -na|grep "LISTEN"|grep "3306"|wc -l)
if [ "${counter}" -eq 0 ]; then
systemctl stop keepalived
killall keepalived
fi
ping 172.25.0.42 -w1 -c1 &>/dev/null
if [ $? -ne 0 ]
then
systemctl stop keepalived
killall keepalived
fi
5.vip漂移检测
1)master1和master2上同时开启keepalived和mysql
2)查看master1上ip地址
3)停掉master1上的mysql服务
4)观察master1和master2上的ip地址
linux上mysql MM(双主)架构及keepalived搭建的更多相关文章
- MySQL系列详解七:MySQL双主架构演示-技术流ken
前言 在企业中,数据库高可用一直是企业的重中之重,中小企业很多都是使用mysql主从方案,一主多从,读写分离等,但是单主存在单点故障,从库切换成主库需要作改动.因此,如果是双主或者多主,就会增加mys ...
- Centos7+nginx+keepalived集群及双主架构案例
目录简介 一.简介 二.部署nginx+keepalived 集群 三.部署nginx+keepalived双主架构 四.高可用之调用辅助脚本进行资源监控,并根据监控的结果状态实现动态调整 一.简介 ...
- 企业Nginx+Keepalived双主架构案例实战
通过上一次课程的学习,我们知道Nginx+keepalived主从配置,始终有一台服务器处于空余状态,那如何更好的利用起来呢,我们需要借助Nginx+keepalived双主架构来实现,如下图通过改装 ...
- mysql双主架构
注意:最好不要用innodedb来同步数据库,要用databus来同步数据库,数据量大要用上mycat中间件 Mysql主主同步环境部署: centos 7.4 三台云主机: mysql1 :10.1 ...
- [Mysql高可用]——双主互备+keepalived
实验架构图 实验环境 主机名 操作系统 Mysql版本 keepalived版本 主机IP VIP lyj1(Master/Slave) Red Hat release 6.5 Mysql5.6 ...
- 生产环境中mysql+keepalive双主模式,keepalive守护进程实现双主切换提供数据库服务
mysql+keepalive实现浮动地址自动切换,由于keepalive无自带健康检查功能,所以必须自动编写健康检查守护进程(监控DB1和DB2数据库的监控状态,来保证浮动地址双机自动切换.) 一, ...
- keepalived+双主架构部署
在高可用集群环境中,keepalived使用的是VIP,利用keepalived自带的服务监控功能和自定义脚本来实现MYSQL故障时自带切换. Keepalived基于VRRP协议,虚拟冗余路由协议, ...
- keepalived+mysql实现双主高可用
环境: DB1:centos6.8.mysql5.5.192.168.2.204 hostname:bogon DB2:centos6.8.mysql5.5.192.168.2.205 hostn ...
- MySQL高可用性之Keepalived+MySQL(双主热备)
环境描述:OS:CentOS6.5_X64MASTER:192.168.0.202BACKUP:192.168.0.203VIP:192.168.0.204 1.配置两台Mysql主主同步[root@ ...
随机推荐
- 关于JSON 字段数据的直接查询
最新的pgSQL 对json的支持在进一步加强!虽然我也学了那么点皮毛,但是json数据对于WEB的开发确实很重要,苦苦学习了很长一段时间,不断的关系PGSQL的动向! 好在翻看很多高人的例子和介绍, ...
- VisualStateManager
管理控件状态和管理控件状态的转换逻辑 <Window.Resources> <Style TargetType="Button" x:Key="Anim ...
- IdentityServer的基本概念与特性
基本概念 IdentityServer4是一个基于OpenID Connect和OAuth 2.0的针对ASP.NET Core 2.0的框架. IdentityServer4可以帮助我们实现什么 I ...
- wcf服务端代码方式及客户端代码方式
ServiceHost host; // 全局 host = new ServiceHost(typeof(实现服务接口的类)); host.open(); 用代码配置端点的方法 host.add ...
- miniui处理多重子表级联,一次性提交多表数据的ui要点
在一个ui界面上 有a,b,c三个表 a表只有一条记录,b表有多条记录,c表有多条记录 b是a的子表,c是b的子表 都是一对多关系 一次性下载相关联的c表记录 然后mini-datagrid采用cli ...
- 将WriteableBitmap转为byte[]
原文:将WriteableBitmap转为byte[] Win8 metro中的操作与之前的版本有所不同,因此作为一个新手,我将自己的一些问题解答记录了下来,希望与大家分享!! 下面是将Writeab ...
- VirtualBOX 虚拟机安装 OS X 10.9 Mavericks 及 Xcode 5,本人X220亲测(超详细截图)
http://www.cnblogs.com/yipu/p/3611611.html http://bbs.feng.com/read-htm-tid-7625465.html OS X Maveri ...
- 朱晔的互联网架构实践心得S2E6:浅谈高并发架构设计的16招
朱晔的互联网架构实践心得S2E6:浅谈高并发架构设计的16招 概览 标题中的高并发架构设计是指设计一套比较合适的架构来应对请求.并发量很大的系统,使系统的稳定性.响应时间符合预期并且能在极端的情况下自 ...
- Postman调试中文出现乱码问题
最近在通过postman调试接口的时候,发现post的数据在中文的时候,传输到后台变成了问号(???),经过网上的资料与验证,找到了解决方案:在请求头中添加charset=UTF-8的属性,后续在进行 ...
- Hadoop 三剑客之 —— 集群资源管理器 YARN
一.hadoop yarn 简介 二.YARN架构 1. ResourceManager 2. NodeManager 3. ApplicationMa ...