Mysql主主复制+keepalived
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->grant replication slave on *.* to 'admin'@'10.0.0.201' identified by '123456';授权
mysql->show master status\G;
4》主1-201上操作
change master to
master_host='10.0.0.202',
master_user='admin',
master_password='123456',
master_log_file='mysql-bin.000006',
master_log_pos=242;
mysql->start slave;
mysql->show slave status\G;
5》主2-202上操作
change master to
master_host='10.0.0.201',
master_user='admin',
master_password='123456',
master_log_file='mysql-bin.000002',
master_log_pos=242;
mysql->start slave;
mysql->show slave status\G;
6》主201 和202同时安装keepalived
# tar -xvf keepalived-1.1.20.tar.gz
# cd keepalived-1.1.20
#./configure --prefix=/usr/local/keepalived
# make && make install
# cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/
# cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
# mkdir /etc/keepalived
# cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
# cp /usr/local/keepalived/sbin/keepalived /usr/sbin/
7》keepalived配置文件
! Configuration File for keepalived
global_defs {
notification_email {
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 192.168.200.1
smtp_connect_timeout 30
router_id MYSQLHA_DEVEL
}
vrrp_script check_mysqld {
script "/etc/keepalived/mysqlcheck/check_mysql.sh" #检查MYSQL 复制状态脚本
interval 2
weight 2
}
vrrp_instance VI_1 {
state BACKUP #这里主201和主202都写上BACKUP
interface eth1 #vip对外的网络接口
virtual_router_id 80 #标识号。。主主要统一起来
priority 100 #优先级。主202上改成90
advert_int 2
nopreempt #不抢占模式。在优先级高的那台设置此参数,一般在主上设置,主的优先级高
authentication {
auth_type PASS
auth_pass 1111
}
track_script {
check_mysqld #调用MYSQL脚本的函数
}
virtual_ipaddress {
10.0.2.204/16
}
}
当master down了,backup接管了,master再次起来,不会再成为master。否则master恢复了再接管的话。如果出现问题了,则切换两次对生站业务来说并不好。
解决方法是:
state 都设置为Backup,在优先级高的那台设置参数nopreempt.
8》监控MYSQL 复制状态的脚本
#!/bin/bash
#Totle:check_mysql
#Description:Check mysql status
#system:Use Linux
#Author:Alvin
#Version:1.0
#DateTime:2014-09-09
#======================================
#Set mysql host
#每个机器改成自己的IP地址和远程授权的用户
Host_S=10.0.0.201
User_S=admintest
Pwss_S=123456
Port_S=3306
#======================================
#Function-->Check_mysql_IO
#=====================================
Check_mysql_IO()
{
Check_IO=`mysql -u$User_S -p$Pwss_S -h $Host_S -P $Port_S -e "show slave status\G" | grep "Runnin" | sed 's/ //g' | grep "IO" | awk -F: '{print $NF}' | grep "Yes" | wc -l`
Check_SQL=`mysql -u$User_S -p$Pwss_S -h $Host_S -P $Port_S -e "show slave status\G" | grep "Runnin" | sed 's/ //g' | grep "SQL" | awk -F: '{print $NF}' | grep "Yes" | wc -l`
if [ $Check_IO -ne 1 -o $Check_SQL -ne 1 ]
then
/etc/init.d/keepalived stop
return 1
else
Check_PID=`/etc/init.d/keepalived status | grep "pid" | wc -l`
if [ $Check_PID -eq 1 ]
then
echo "OK"
exit 0
else
/etc/init.d/keepalived start
if [ $? -eq 0 ]
then
echo "keepalived start ok" >/tmp/checkmysql.log
exit 0
else
echo "keepalived start fail..">/tmp/checkmysql.log
return 1
fi
fi
fi
}
#======================================
#Function-->Main
#=====================================
Main()
{
Check_mysql_IO
if [ $? -eq 1 ]
then
echo "Mysql $Host_S IO or SQL error" | mail -s "Mysql IO error" 50738846@qq.com
exit 1
fi
}
Main;
9》在201和202远程授权VIP登陆用户
>grant all on *.* to admintest@'%' identified by '123456';
10》最后测试
通常VIP模式是在201上面的,我们在202测试一下,。用VIP登陆是否看到是的201 ,
# mysql –u admintest –p 123456 –h 10.0.2.204 –P 3306
mysqlàshow variables like '%hostname%';
mysqlàshow variables like '%server_id%';
接下来。我们测试这个主主切换。是否OK?我们在201上。将SLAVE IO 给stop掉。
mysql->slave stop;
然后退出来。看看201的VIP还是否存在?如果不存在。那么202上是否已经接管了VIP?
Mysql主主复制+keepalived的更多相关文章
- mysql传统主从、双主复制+keepalived配置步骤
mysql主从.主主复制(双主复制)配置步骤 一:MySQL复制: MySQL复制简介: 将master服务器中主数据库的ddl和dml操作通过二进制日志传到slaves服务器上,然后在master服 ...
- Keepalived+Lvs+Mysql主主复制
一简单介绍 Keepalived+lvs+mysql主主复制是比較经常使用的一种Mysql高可用方案,当中lvs 提供读负载均衡,Keepalived通过虚拟vip漂移实现故障自己主动转移,而Mysq ...
- keepalived+mysql双主复制高可用方案
MySQL双主复制,即互为Master-Slave(只有一个Master提供写操作),可以实现数据库服务器的热备,但是一个Master宕机后不能实现动态切换.而Keepalived通过虚拟IP,实现了 ...
- 利用LVS+Keepalived搭建Mysql双主复制高可用负载均衡环境
应用背景: MySQL复制(主主,主从...)能在保证数据的备份的同时也能够做读写分离分摊系统压力,但是发生单点故障时,需要手动 切换到另外一台主机.LVS和Keppalived可以设定一个VIP来实 ...
- MySQL主主复制以及使用keepalived保证高可用
1:准备工作 MySQL的安装步骤在此处省略:安装完成一定要做以下准备工作,初始化MySQL,/usr/bin/mysql_secure_installation,设置root密码,删除无效账户以及t ...
- MySQL 5.7 双主复制+keepalived,常规业务一般够用了
业务需求: 为Zabbix搭建2个数据库,一个库给服务器监控用,一个库给网络监控用. 硬件: 两台服务器,硬盘是1.2 T SSD卡,内存128G 架构: 希望做双主复制+keepalived,架构大 ...
- Keepalived + Mysql 主主复制高可用
环境 系统:Centos 7.4 x64 服务:Mariadb 5.5 .Keepalived 1.3.5.6 结构 主1:192.168.1.108 主2:192.168.1.109 VIP:19 ...
- MySQL进阶:主主复制+Keepalived高可用
Blog:博客园 个人 概述 mysql主主复制 所谓主主复制,即双主备份,或者叫互作主从复制,每台master既是master,又是slave.这种方案,既做到了访问量的压力分流,同时也解决了单点故 ...
- mysql 主主复制(双主复制)+ 配置KEEPALIVED实现热备
binlog-do-db和replicate-do-db表示需要同步的数据库 binlog-ignore-db和replicate-ignore-db表示不需要同步的数据库 云端服务器为master配 ...
随机推荐
- KEGG Pathway Anonatation
转载于 Original 2017-06-20 liuhui 生信百科 KEGG 数据库中,把功能相似的蛋白质归为同一组,然后标上 KO 号.通过相似性比对,可以为未知功能的蛋白序列注释上 KO 号. ...
- C#枚举(enum)、常量(const)和readonly
const修饰的是(类)静态常量,,其值是在编译期间确定的readonly修饰的是动态常量. A.C#中的const和readonly的区别 C#中定义常量有两种方式,一种叫做静态常量,使用“cons ...
- C++ primer plus
给cout指针,默认打印指针地址,但如果指针的类型的char*,将打印指向的字符串,如果要显示的是字符串的地址,将指针强制转换为另一种类型 char* animal cout << ani ...
- Linux内核系统调用列表
一.进程控制: fork 创建一个新进程 clone 按指定条件创建子进程 execve 运行可执行文件 exit 中止进程 _exit 立即中止当前进程 getdtablesize 进程所能打开的最 ...
- Dreamweaver 中文乱码
定义当前页面的编码属性 Ctrl+j 标题/编码 将编码改成UTF8即可 PhpStorm FILE->Setting->File Encoding->将U ...
- xUtils怎么post请求上传字符串
xUtils算是一个非常实用老牌的框架了,但是有些情况,特别是网络请求部分,总是不太方便.需要折腾下才了解用法.今天来聊聊网络模块的用法. 其实看例子就明白了,post JSON数据也是一样道理,这里 ...
- MyBatis 学习记录1 一个简单的demo
主题 最近(N个月前)clone了mybatis的源码..感觉相比于spring真的非常小...然后看了看代码觉得写得很精简...感觉我的写代码思路和这个框架比较相似(很难具体描述...就是相对来说比 ...
- mysql主从错误180301
Fatal error: The slave I/O thread stops because master and slave have equal MySQL server ids; these ...
- 【HDU3853】LOOPS
题意 有一个R*C的方格.一个人想从(1,1)走到(r,c).在每个格子都有三种选择,向下,向右,或者原地不动.每个格子里的每个选择都有一定的概率.而每次移动都需要消耗2点的能量,问期望消耗的能量是多 ...
- Spark 性能相关参数配置详解-压缩与序列化篇
随着Spark的逐渐成熟完善, 越来越多的可配置参数被添加到Spark中来, 本文试图通过阐述这其中部分参数的工作原理和配置思路, 和大家一起探讨一下如何根据实际场合对Spark进行配置优化. 由于篇 ...