keepalived 构建主备mysql

Mysql主主安装配置:
安装前确认:版本号、校验码(md5sum)、端口号,安装路径
安装依赖:
yum install gcc gcc-c++ -y
yum install cmake -y
yum install ncurses-devel libtool -y
yum install bison -y

创建mysql需要的文件夹:
mkdir /usr/local/mysql/{etc,logs,data}
mkdir /usr/local/mysql/logs/{bin-log,relay-log,slow-log,error-log}

chown mysql:mysql /usr/local/mysql

创建一个mysql的程序运行用户:
sudo useradd –s /sbin/nologin mysql

编译安装:
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql/ -DMYSQL_DATADIR=/usr/local/mysql/data -DMYSQL_USER=mysql
make && make install
备注:如果编译出错,可以先find / -name CMakeCache.txt,执行删除,然后再根据报错排除错误,执行重新编译

赋予文件夹权限:
chown –R mysql:mysql /usr/local/mysql

配置文件的配置:
cp support-files/my-innodb-heavy-4G.cnf /etc/my.cnf

初始化mysql:        /usr/local/mysql/scripts/mysql_install_db --user=mysql  --defaults-file=/usr/local/mysql/etc/my.cnf --basedir=/usr/local/mysql/basedir --datadir=/usr/local/mysql/data

启动mysql: usr/local/mysql/basedir/bin/mysqld_safe --user=mysql

停止:/usr/local/mysql/basedir/bin/mysqladmin  -uroot –p 

(禁止通过kill的方式停止进程)
重写了配置文件后,启动报错:
查看错误日志排查错误/usr/local/mysql/logs/error-log/
查报错,百度经验需要重新初始化,初始化后解决问题

Mysql创建用户修改权限:
set password for root=password(‘12345678’)
grant all privileges on . to ‘sas’@’%’ identified by ‘12345678’;
delete from mysql.user where password=””;
主root:密码:12345678
从root:密码:12345678

创建一个可供主从复制的数据库用户:
grant replication slave on . to ‘slave‘@‘%‘ identified by ‘12345678‘;

查看二进制日志,做主主的复制:
show master status;
stop slave;
change master to master_host=‘192.168.102.26‘,master_user=‘slave‘,master_password= ‘12345678‘,master_log_file=‘binlog.000001‘,master_port=3306,master_log_pos=244;
start slave;
show slave status;

做成系统服务:
ln -s /usr/local/mysql/bin/ /usr/bin
ln -s /usr/local/mysql/lib/
/usr/lib
cp support-files/mysql.server /etc/init.d/mysqld -p
chmod 755 /etc/init.d/mysqld
chown mysql.mysql -R /usr/local/mysql
chkconfig mysqld on

安装keepalived:
tar –xf keepalived-1.2.7.tar.gz
./configure --prefix=/usr/local/keepalived
make
make install
cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
mkdir -pv /etc/keepalived
cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
ln -s /usr/local/keepalived/sbin/keepalived /sbin/

修改配置文件:

vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived

global_defs {

 notification_email { 

 [email protected] 

 }  

 notification_email_from [email protected] 

 smtp_server mail.163.com 

 smtp_connect_timeout 30 

 router_id MySQL-ha 

 }  

vrrp_instance VI_1 {

 state BACKUP   #两台配置此处均是BACKUP  

 interface eth0  #网卡,可使用ifconfig查看

 virtual_router_id 51 

 priority 100   #优先级,另一台改为90  

 advert_int 1 

 nopreempt  #不抢占,只在优先级高的机器上设置即可,优先级低的机器不设置  

 authentication { 

 auth_type PASS 

 auth_pass keepalivedpass 

 }  

 virtual_ipaddress { 

 192.168.1.200  #虚拟ip

 }  

 }  

virtual_server 192.168.1.200 3306 {

 delay_loop 2   #每个2秒检查一次real_server状态  

 lb_algo wrr   #LVS算法  

 lb_kind DR    #LVS模式  

 persistence_timeout 60   #会话保持时间  

 protocol TCP 

 real_server 192.168.1.104 3306 {    #真实ip

 weight 3 

 notify_down /etc/keepalived/check_keepalived  #检测到服务down后执行的脚本  

 TCP_CHECK { 

 connect_timeout 10    #连接超时时间  

 nb_get_retry 3       #重连次数  

 delay_before_retry 3   #重连间隔时间  

 connect_port 3306   #健康检查端口  

 }  

}
}

编辑服务down后执行的脚本:
Vim /etc/keepalived/check_keepalived
#!/bin/bash
MYSQL=/usr/local/mysql/bin/mysql
MYSQL_HOST=192.168.100.102 #根据实际填写
MYSQL_USER=root
MYSQL_PASSWORD=123456
CHECK_TIME=3
#mysql is working MYSQL_OK is 1 , mysql down MYSQL_OK is 0
MYSQL_OK=1
function check_mysql_helth (){
$MYSQL -h $MYSQL_HOST -u $MYSQL_USER -p${MYSQL_PASSWORD} -e "show status;" >/dev/null 2>&1
if [ $? = 0 ];then
MYSQL_OK=1
echo mysql ok
else
MYSQL_OK=0
echo mysql no ok
fi
return $MYSQL_OK
}

while [ $CHECK_TIME -ne 0 ]
do
let "CHECK_TIME -= 1"
check_mysql_helth
if [ $MYSQL_OK = 1 ]; then
CHECK_TIME=0
exit 0
fi
if [ $MYSQL_OK -eq 0 ] && [ $CHECK_TIME -eq 0 ]
then
/etc/init.d/keepalived stop
exit 1
fi
sleep 1
done

启动keepalived:
service keepalived restart

查询VIP:
Ip addr
防火墙放开vrrp协议
防火墙开放
#iptables?-I?INPUT?-i?eth0?-d?224.0.0.0/8?-p?vrrp?-j?ACCEPT
#iptables?-I?OUTPUT?-o?eth0?–d 224.0.0.0/8?-p?vrrp?-j?ACCEPT
iptables -A INPUT -i eth0 -p vrrp -s 192.168.1.107 -j ACCEPT (对方ip地址)

iptables -A INPUT -p vrrp -j ACCEPT
验证:
1、在主库执行增删改操作,在从库观察状态是否同步
2、在从库执行增删改操作,在主库观察状态是否同步
3、停主的keepalived,查看从的ip,是否绑定成功

问题总结:
1、权限问题:
现象:初始化没有报成功,没有错误日志
分析:可能是由于无法写入而造成的异常
方案:检查用户权限、文件夹权限(包括一级目录的权限)
2、同步失败:
现象:查看从状态,显示的是ok
分析:可能是由于初始同步有问题,检查两库的状态
方案:重新同步主从数据库,若还是无法同步,可能是由于tar包损坏,查看MD5值,重新下载安装
3、5.5和5.6区别:
两个版本设置字符集不同,5.6版本增加了uuid的概念
4、keepalived绑定VIP失败:
方案:检查配置文件的问题
1)是否有多余的部分
2)检查防火墙的配置,放行vrrp协议
3)将检查健康状况脚本放在邮件配置下方

原文地址:http://blog.51cto.com/11962757/2084073

时间: 2024-11-05 22:35:02

keepalived 构建主备mysql的相关文章

mysql主从配置&&基于keepalived的主备切换

mysql互为主从设置 && 主备切换配置 需求说明: 1.公司架构一直是一台单独的mysql在线上跑,虽然一直没有出现什么宕机事件,但是出于一个高可用的考虑,提出主从备份.主备切换的需求: 2.实现这个需求的前一段时间只是在做数据库备份的时候实现了主从热备,为了实现主备切换功能,继续操作上述需求: 实验环境: master1:10.1.156.3:3306 master2:10.1.156.5:3306 my.cnf配置文件关于主从这块的修改: master1: server-id =

keepalived结合MHA实现mysql高可用

本例结合本博另一篇文章 MHA-大杀器实现MYSQL单主宕机时,VIP漂移实现高可用,环境请参考上一篇文章 本例使用keepalived-1.1.20.tar.gz版本 [[email protected] keepalived-1.1.20]# ./configure --sysconf=/etc/ #此项表示设置keepalived的根目录 如果编译报错"configure: error: Popt libraries is required" 则yum -y install po

web集群综合项目keepalived+lvs+lamp+nfs+mysql

web集群综合项目 实验描述: 在此项目中,为了使公司内部的web站点提供更稳定的服务,搭建负载均衡群集以及故障转移群集,具体拓扑环境如下: 实验环境: 主机 Ip地址 软件 主调度器 192.168.100.150 kernel-devel openssl-devel popt-devel  ipvsadm keepalived-1.2.13.tar.gz 从调度器 192.168.100.151 kernel-devel openssl-devel popt-devel  ipvsadm k

​Keepalived双机热备

Keepalived双机热备 Keepalived是专门针对LVS设计的一款强大的辅助工具,主要用来提供故障切换和健检查功能,如判断LVS负载调度器.节点服务器的可用性,及时隔离并替换为新的服务器,当故障主机恢复后将其重新加入群集.在非LVS群集环境中使用时Keepalived也可以作为热备软件使用. Keepalived采用VRRP(virtual  router  redundancy protocol,虚拟路由冗余协议)热备份协议,以软件的方式实现linux服务器的多机热备功能.VRRP是

nginx+keepalived构建主备负载均衡代理服务器

一.架构 二.唠叨一会原理: 1.nginx Nginx进程基于于Master+Slave(worker)多进程模型,自身具有非常稳定的子进程管理功能.在Master进程分配模式下,Master进程永远不进行业务处理,只是进行任务分发, 从而达到Master进程的存活高可靠性,Slave(worker)进程所有的业务信号都 由主进程发出,Slave(worker)进程所有的超时任务都会被Master中止,属于非阻塞式任务模型. 2.keepalived Keepalived是Linux下面实现V

负载均衡高可用之LVS+Keepalived(DR/主备)+apache

负载均衡高可用之LVS+Keepalived(DR/主备)+apache 介绍: LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统.本项目在1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一. LVS集群采用IP负载均衡技术和基于内容请求分发技术.调度器具有很好的吞吐率,将请求均衡地转移到不同的服务器上执行,且调度器自动屏蔽掉服务器的故障,从而将一组服务器构成一个高性能的.高可用的虚拟服务器.整个服务器集群的结构对客户

Nginx+keepalived双机热备+负载均衡 ???待续

keepalived+nginx双机热备+负载均衡 最近因业务扩展,需要将当前的apache 转为nginx(web), 再在web前端放置nginx(负载均衡).同时结合keepalived 对前端nginx实现HA.nginx进程基于于Master+Slave(worker)多进程模型,自身具有非常稳定的子进程管理功能.在Master进程分配模式下,Master进程永远不进行业务处理,只是进行任务分发,从而达到Master进程的存活高可靠性,Slave(worker)进程所有的业务信号都 由

Nginx + Keepalived(主备模式)实现负载均衡高可用浅析

概述 目前关于负载均衡和高可用的架构方案能找到相当多且详尽的资料,此篇是自己学习相关内容的一个总结,防止将来遗忘再次重新查找资料,也避免踩相同的坑. 此次配置的负载均衡与高可用架构:Nginx + Keepalived(主备模式),Nginx 使用反向代理实现七层负载均衡. 众所周知,Nginx 是一款自由的.开源的.高性能HTTP服务器和反向代理服务器,也是一个IMAP.POP3.SMTP代理服务器. 也就是说Nginx本身就可以托管网站(类似于Tomcat一样),进行HTTP服务处理,也可以

keepalived双机热备nginx

nginx目前是我最常用的反向代理服务,线上环境为了能更好的应对突发情况,一般会使用keepalived双机热备nginx或者使用docker跑nginx集群,keepalived是比较传统的方式,虽然用docker跑nginx集群更方便,但传统的方式总是有他的可取之处,并且多学一些东西也很好.以后也会写如何使用docker跑nginx集群. 环境准备: 2台centos: 192.168.0.105 和192.168.0.118, 虚拟IP(VIP)为192.168.0.119 配置keepa