mysql双主+keepalived【转】
简单原理
1、在两台服务器上分别部署双主keepalived,主keepalived会在当前服务器配置虚拟IP用于mysql对外提供服务
2、在两台服务器上分别部署主主mysql,用于故障切换
3、当mysql服务器挂掉后,主keepalived会降低当前机器权重,备keepalived服务器会把虚拟IP抢过来配置在备服务器上,使备服务器的mysql能接替工作继续对外提供服务
4、由于keepalived只能检测服务器是否宕机来实现故障自动切换,但不能针对应用级别(mysql)的检测,因此,需要编写脚本实时监测mysql服务是否运行正常,当检测mysql运行不正常时就降低权重,来实现故障自动切换
角色分配:
| IP地址 | 部署应用 |
|---|---|
| 192.168.1.200 | mysql001+keepalived01 |
| 192.168.1.201 | mysql002+keepalived02 |
虚拟IP192.168.1.100初始配置在keepalived01,无需手动配置,keepalived会自动配置
准备工作:
#关闭iptables
service iptables stop
chkconfig iptables off
#关闭selinux
setenforce 0
修改/etc/selinux/config文件,将SELINUX=enforcing改为SELINUX=disabled
#同步主机时间
ntpdate 202.120.2.101
=====================================================================
一、配置mysql双主服务
#用yum安装mysql服务
yum install MySQL-shared-compat-5.6.23-1.el6.x86_64.rpm
yum install MySQL-server-5.6.23-1.el6.x86_64.rpm
yum install MySQL-client-5.6.23-1.el6.x86_64.rpm
yum install MySQL-devel-5.6.23-1.el6.x86_64.rpm
yum install MySQL-shared-5.6.23-1.el6.x86_64.rpm
#创建数据目录
mkdir -pv /home/mydata/data
chown -R mysql.mysql /home/mydata
chmod -R +w /home/mydata
#修改主配置文件
vi /etc/my.cnf
#在mysql001上
[mysqld]
datadir = /home/mydata/data #mysql的数据存放位置
port = 3306 #mysql的端口号
socket = /var/lib/mysql/mysql.sock
log-bin = master-bin
server_id = 1 #mysql的ID号
log-bin = mysql-bin
relay-log = mysql-relay-bin
replicate-wild-ignore-table = mysql.%
replicate-wild-ignore-table = test.%
replicate-wild-ignore-table = information_schema.%
skip-external-locking
key_buffer_size = 256M
max_allowed_packet = 1M
table_open_cache = 256
pid-file = /home/mydata/data/mysql.pid
sort_buffer_size = 1M
read_buffer_size = 1M
read_rnd_buffer_size = 1M
myisam_sort_buffer_size = 64M
thread_cache_size = 8
query_cache_size= 16M
innodb_file_per_table = on
thread_concurrency = 8
skip_name_resolve = on
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
#在mysql002上
[mysqld]
datadir = /home/mydata/data
port = 3306
socket = /var/lib/mysql/mysql.sock
log-bin = master-bin
server_id = 2
log-bin = mysql-bin
relay-log = mysql-relay-bin
replicate-wild-ignore-table = mysql.%
replicate-wild-ignore-table = test.%
replicate-wild-ignore-table = information_schema.%
skip-external-locking
key_buffer_size = 256M
max_allowed_packet = 1M
table_open_cache = 256
pid-file = /home/mydata/data/mysql.pid
sort_buffer_size = 1M
read_buffer_size = 1M
read_rnd_buffer_size = 1M
myisam_sort_buffer_size = 64M
thread_cache_size = 8
query_cache_size= 16M
innodb_file_per_table = on
thread_concurrency = 8
skip_name_resolve = on
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
#初始化mysql
/usr/bin/mysql_install_db --datadir=/home/mydata/data --user=mysql
#相互为对方主机授权复制账号
grant replication slave on *.* to 'repl_user'@'192.168.%.%' identified by 'repl_passwd';
#查看master的状态
show master status;
#授权给check用户,用来检测mysql
grant replication client on *.* to 'check'@'localhost' identified by 'check';
#配置对方为自己的master
在mysql001上:
change master to \
master_host='192.168.1.201',
master_user='repl_user',
master_password='repl_passwd',
master_log_file='mysql-bin.000003',
master_log_pos=333; 【这个数字是上面show master status;】
在mysql002上:
change master to \
master_host='192.168.1.200',
master_user='repl_user',
master_password='repl_passwd',
master_log_file='mysql-bin.000003',
master_log_pos=333;
#启动服务,两台机器上都执行
start slave;
#查看是否运行正常
show slave status\G;
二、配置keepalived
在mysql001上:
vi /etc/keepalived/keepalived.conf
#######################################################
! Configuration File for keepalived
global_defs {
notification_email {
2011820123@qq.com
}
notification_email_from keepalived@localhost
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id MYSQL_DEVEL
}
vrrp_script check_mysqld { #设置检测脚本
script "/etc/keepalived/check.sh" #指定检测脚本的存放位置
interval 2 #间隔时间
weight -51 #权重,降权51
}
vrrp_instance VI_1 {
state BACKUP #注意,这里两台服务器都要是BACKUP
interface em1
virtual_router_id 60
priority 100
nopreempt
authentication {
auth_type PASS
auth_pass 1111
}
track_script {
check_mysqld
}
virtual_ipaddress {
192.168.1.100 #虚拟IP
}
}
#######################################################
在mysql002上:
vi /etc/keepalived/keepalived.conf
#######################################################
! Configuration File for keepalived
global_defs {
notification_email {
2011820123@qq.com
}
notification_email_from keepalived@localhost
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id MYSQL_DEVEL
}
vrrp_script check_mysqld {
script "/etc/keepalived/check.sh"
interval 2
weight -51
}
vrrp_instance VI_1 {
state BACKUP #注意,这里两台服务器都要是BACKUP
interface em1
virtual_router_id 60
priority 90
authentication {
auth_type PASS
auth_pass 1111
}
track_script {
check_mysqld
}
virtual_ipaddress {
192.168.1.100
}
}
#######################################################
"state BACKUP”,在这里两台服务器要都设为BACKUP,如果一台是MASTER,另一台是BACKUP,那么当MASTER恢复数据之后,主keepalived要切换到MASTER上,这样BACKUP上的数据就会丢失。因此在这两台mysql服务器上都设置成BACKUP,那么当MASTER恢复后,不会自动切换回去
#重启keepalived服务
service keepalived restart
五、编辑mysql监控脚本
vi /etc/keepalived/check.sh
#######################################################
#/bin/bash
live=`ss -tnlp | grep 3306 | wc -l` #检查mysql的3306端口是否存在
yes=`mysql -ucheck -pcheck -e "show slave status\G" | head -13 | tail -2 | awk -F: '{print $2}' | grep Yes | wc -l` #检查‘show slave status’是否正常
if [ $live -ge 1 ];then #如果$live大于等于1,执行下步操作
if [ $yes -eq 2 ];then #如果‘show slave status’出现两个yes,就退出
exit 0
else
/etc/init.d/keepalived restart #否则,重启keepalived服务,退出
exit 1
fi
else
/etc/init.d/keepalived restart #如果$live小于1,那么重启keepalived服务
exit 1
fi
#######################################################
#给脚本执行权限
chmod +x /etc/keepalived/check.sh
转自:
mysql双主+keepalived - 今日头条(www.toutiao.com)
http://www.toutiao.com/i6384270119261962753/
mysql双主+keepalived【转】的更多相关文章
- mysql双主+keepalived
环境 OS: centos7Mysql 版本: mysql 5.7Keepalived: keepalived-1.2.20Mysql-vip:192.168.41.100Mysql-master1: ...
- MySQL 双主+keepalived 详细文档 M-M+keepalived
1. 操作系统,系统环境,目结结构,用户,权限,日志路径,脚本2. 配置规范化 1.1 操作系统准备 操作系统 Kylin Linux release 3.3.1707 (Core)数据库版本 mys ...
- Mysql双主 keepalived+lvs实现mysql高可用性
MySQL复制 能够保证数据的冗余的同时可以做读写分离来分担系统压力,如果是主主复制还可以很好的避免主节点的单点故障.但是MySQL主主复制存在一些问题无法满足我们的实际需要:未提供统一访问入口来实现 ...
- 004.MySQL双主+Keepalived高可用
一 基础环境 主机名 系统版本 MySQL版本 主机IP Master01 CentOS 6.8 MySQL 5.6 172.24.8.10 Master02 CentOS 6.8 MySQL 5.6 ...
- centos7下mysql双主+keepalived
一.keepalived简介 keepalived是vrrp协议的实现,原生设计目的是为了高可用ipvs服务,keepalived能够配置文件中的定义生成ipvs规则,并能够对各RS的健康状态进行检测 ...
- MySQL双主+keepalived实现高可用实现(热备)
环境:centos6.7 最小化安装 192.168.100.152 master 主192.168.100.153 slave 从192.168.100.132 v_ip 浮动IP 配置ssh密码登 ...
- mysql双主+keepalived架构
架构展示 操作系统 centos6.5 数据库 mysql5.7 master1 10.0.254.148 master2 10.0.254.147 VIP 10.0.254.88 (keepaliv ...
- MySQL双主+Keepalived高可用
原文转自:https://www.cnblogs.com/itzgr/p/10233932.html作者:木二 目录 一 基础环境 二 实际部署 2.1 安装MySQL 2.2 初始化MySQL 2. ...
- Mysql 双主--keepalived
简介 编辑 Keepalived的作用是检测服务器的状态,如果有一台web服务器宕机,或工作出现故障,Keepalived将检测到,并将有故障的服务器从系统中剔除,同时使用其他服务器代替该服务器的工作 ...
随机推荐
- SQL Sever——远程过程调用失败(0x800706be)
最近重装了系统,VS和SQL Sever莫名奇妙的不能用了.下面总结一下这个过程中遇到的问题,跟大家分享一下经验~~ 大概是以前的安装过程都十分顺利,这次,在尝试了数次登陆不上去之后,我仍然怀疑是自己 ...
- Alpha冲刺——day8
Alpha冲刺--day8 作业链接 Alpha冲刺随笔集 github地址 团队成员 031602636 许舒玲(队长) 031602237 吴杰婷 031602220 雷博浩 031602634 ...
- tp3.2.3运用phpexcel将excel文件导入mysql数据库
1,下载PHPExcel 2,配置将下载好的PHPExcel文件与PHPExcel.php 放到thinkphp 根目录 include/Library/Org/Util/下面 3,同时将PHPExc ...
- EntityFramework异常The specified cast from a materialized 'System.Double' type to the 'System.Single' type is not valid.
实体类: public class ReportEntity { public string FactorName { get; set; } public double MaxVal { get; ...
- windows无法安装到这个磁盘 gpt分区形式
利用U盘装系统的步骤 工具: Rufus 下载地址:http://rufus.akeo.ie/?locale=zh_CN -------------------------------------- ...
- [代码]--IIS发布网站浏览之后看到的是文件目录 & Internal Server Error 处理程序“ExtensionlessUrlHandler-ISAPI-4.0_64bit”在其模块列表中有一个错误模块“IsapiModule” 解决方法 & App_global.asax.pduxejp_.dll”--“拒绝访问。 ”
Q:IIS发布网站浏览之后看到的是文件目录 A:它出现了一个说到.NET4.0 更高框架什么的错误,所以我将 .NTE CRL版本由4.0改为2.0了,改为2.0后就出现了只能浏览文件目录了.改为4. ...
- SP2713 GSS4
题目链接 这是一道假题,表面上看起来,好像使用了什么奇妙的操作,其实就是一个无脑暴力 我们会发现,即使是\(1e18\),在开方\(6\)次之后也已经变成了\(1\),而\(1\)再怎么开方还是\(1 ...
- MySQL中使用Like模糊查询太慢
问题:明明建立了索引,为何Like模糊查询速度还是特别慢? Like是否使用索引? 1.like %keyword 索引失效,使用全表扫描.但可以通过翻转函数+like前模糊查询+建立翻转函数索 ...
- 【BZOJ1044】[HAOI2008]木棍分割(动态规划,贪心)
[BZOJ1044][HAOI2008]木棍分割(动态规划,贪心) 题面 BZOJ 洛谷 题解 第一问随便二分一下就好了,贪心\(check\)正确性显然. 第二问随便前缀和+单调队列优化一下\(dp ...
- 洛谷P3227 切糕
最小割模板. 题意:你要在一个三维点阵的每个竖条中删去一个点,使得删去的点权和最小. 且相邻(四联通)的两竖条之间删的点的z坐标之差的绝对值不超过D. 解: 首先把这些都串起来,点边转化,就变成最小割 ...