转自:https://www.cnblogs.com/waterlufei/p/8135115.html
数据库这一层需要做到避免单点故障可以是主从备份和主主备份,主主备份可能有性能损耗和数据同步的问题。这里记录下主从备份,
mysql进行备份之前确保mysql的版本是一样的,我这里用的都是mysql5.7.18
1、原文博客地址:http://qizhanming.com/blog/2017/06/20/how-to-config-mysql-57-master-slave-replication-on-centos-7
这篇博客已经写的很好了,不再记录了。
mysql备份好了以后,操作主mysql上面的数据可以看到从数据库的数据实时同步的。
2、那问题来了,如果在项目中主mysql挂了,我们是要手动切换msyql吗,这样会比较麻烦的,而且这段时间项目是不能用的。这里用keepalived实现IP的vip漂移,
keepalived就是一个软件,在主mysql和从mysql上面都安装后,会有一个虚拟IP在其中的一台服务器上面,如果这台服务器宕机了,这个IP就会出现在另一台服务器上面,这是keepalived的功能,能够判断是否可用和权重大小,然后自动漂移IP,这个IP是虚拟IP,我们可以自己随意设置,不过要跟主,从mysql的IP在同一个网段,云服务器好像需要再设置下默认是关闭的,如果是主机是可以直接用的。
1、安装keepalived
# yum install keepalived –y
2、备份keepalived.conf
cp /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.back
3、编辑keepalived.conf
global_defs {
notification_email{
xxx@qq.com
}
notification_email_from waterlufei123@qq.com
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id KeepAlive_Mysql
}
vrrp_script vs_mysql_82 {
script "/etc/keepalived/checkMySQL.sh"
interval 60
}
vrrp_instance VI_82 {
state BACKUP
nopreempt
interface eth1
virtual_router_id 82
priority 100
advert_int 5
authentication {
auth_type PASS
auth_pass 1111
}
track_script {
vs_mysql_82
}
virtual_ipaddress {
192.168.108.156/24 brd 192.168.108.255 dev eth1 label eth1:1
}
}
virtual_server 192.168.108.156 3306 {
delay_loop 2
lb_algo wrr
lb_kind DR
persistence_timeout 60
protocol TCP
real_server 192.168.108.146 3306 {
weight 3
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 3306
}
}
}
其中/etc/keepalived/checkMySQL.sh需要新建,内容为:
echo "enter mysql_check.sh" >> /etc/keepalived/check_mysql.log
MYSQL=/usr/bin/mysql
MYSQL_HOST=127.0.0.1
MYSQL_USER=user
MYSQL_PASSWORD=password
MYSQL_PORT=3306
# 日志文件
LOG_FILE=/etc/keepalived/check_mysql.log
# 检查次数
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} -P${MYSQL_PORT} -e "show status;" >/dev/null 2>&1
if [ $? = 0 ] ;then
MYSQL_OK=1
else
MYSQL_OK=0
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
#echo `date --date=today +"%Y-%M-%d %H:%m:%S"` - [INFO] - mysql available: success[$MYSQL_OK] >> $LOG_FILE
exit 0
fi
if [ $MYSQL_OK -eq 0 ] && [ $CHECK_TIME -eq 0 ]
then
/etc/init.d/keepalived stop
echo `date --date=today +"%Y-%M-%d %H:%m:%S"` - [INFO] - mysql invaild. keepalived stop. >> $LOG_FILE
exit 1
fi
sleep 1
done
添加执行权限:
shell > chmod +x /etc/keepalived/checkMySQL.sh
手动执行下这个脚本,看看返回是否是0,如果是1,请检查mysql连不上的原因:
shell > /etc/keepalived/checkMySQL.sh
shell > echo $?
从库的keepalived.conf为:
global_defs {
notification_email{
1163804452@qq.com
}
notification_email_from waterlufei123@qq.com
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id KeepAlive_Mysql
}
vrrp_script vs_mysql_82 {
script "/etc/keepalived/checkMySQL.sh"
interval 60
}
vrrp_instance VI_82 {
state BACKUP
nopreempt
interface eth0
virtual_router_id 82
priority 90
advert_int 5
authentication {
auth_type PASS
auth_pass 1111
}
track_script {
vs_mysql_82
}
virtual_ipaddress {
192.168.108.156/24 brd 192.168.108.255 dev eth0 label eth0:1
}
}
virtual_server 192.168.108.156 3306 {
delay_loop 2
lb_algo wrr
lb_kind DR
persistence_timeout 60
protocol TCP
real_server 192.168.108.145 3306 {
weight 3
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 3306
}
}
}
/etc/keepalived/checkMySQL.sh文件一样。
然后主从服务器都启动keepalived:
shell > service keepalived start
shell > chkconfig keepalived on
查看虚拟VIP
# ip addr
连接数据库IP是192.168.108.156,当从库坏了以后不应该主库,当主库坏了以后,VIP会漂移到145上,当我们继续访问192.168.108.156时,实际访问的是145上的数据库
总的来说就是keepalived可以实现生成虚拟IP的功能,但是已什么为条件生成转移VIP呢?所以这里就加了checkMySQL.sh配置文件,根据mysql的状态漂移vip,然后呢,然后这里keepalived还可以用到其他地方,例如nginx,然后弄一个checkNginx.conf之类的,实现nginx的自动切换,这里也就是 说说还没做过
相关推荐
MySQL 主从复制负责数据同步,Keepalived 负责监控主服务器状态并在故障发生时进行切换。 1. **MySQL 主从复制**:通过主服务器和从服务器之间的数据同步,实现数据冗余。 2. **Keepalived**:用于监控主服务器的...
Mysql服务器主从复制主主+keepalived实现Mysql故障自动切换.doc 在本文中,我们将详细介绍如何使用Mysql服务器的主从复制和Keepalived来实现Mysql故障自动切换。该方法可以确保Mysql数据库的高可用性和自动故障转移...
MHA(Master High Availability)是针对MySQL主从复制的一种高可用性管理工具,它能够在主数据库出现故障时快速检测并自动将备用服务器提升为主服务器,同时最小化数据丢失。MHA不仅包括故障检测,还提供了完整的...
Keepalived 可以监控 MySQL 数据库的状态,并在出现故障时自动切换到备用节点,以确保 MySQL 数据库的高可用性。 MySQL 高可用架构实现 Keepalived 是一种常见的解决方案,旨在提高 MySQL 数据库的可用性和可靠性。...
### 使用Keepalived实现对MySQL主从复制的主备自动切换 #### 一、概述 在高可用(High Availability, HA)系统设计中,保证关键服务的不间断运行至关重要。MySQL作为广泛使用的开源关系型数据库管理系统,其高可用...
它能够在0到30秒内自动完成数据库故障切换,并在切换过程中尽力保证数据的一致性。 **MHA组成**: - **MHAManager(管理节点)**:负责监控主数据库的状态、执行故障检测与恢复操作。可以单独部署于一台服务器,也...
总结,这个方案利用 MySQL 的主主复制实现了数据的实时备份,而 keepalived 通过 VRRP 协议确保了虚拟 IP 的高可用性。在实际应用中,这样的架构可以有效地防止单点故障,提高服务的稳定性和可靠性。
11.MySQL主从集群构建及故障切换.mp4 12.使用Binlog日志快速恢复MySQL数据.mp4 13.MySQL引擎MyISAM与InnoDB讲解.mp4 14.MySQL数据库索引及慢查询讲解.mp4 15.MySQL数据库高效优化解析.mp4 16.构建MySQL+keepalived高...
MySQL主从复制是MySQL数据库的一种高可用解决方案,通过将主数据库的更新实时同步到从数据库,实现数据备份和故障切换。主从复制的基本流程是:主数据库上的写操作生成binlog(二进制日志),然后将这些日志传送到...
本配置文件集合主要用于实现基于 CentOS 7 的多节点环境中,MySQL 双主读写分离以及故障自动切换的解决方案。下面将详细介绍这三个组件及其相互作用。 1. **Keepalived**: Keepalived 是一个开源项目,主要用于...
2. **Keepalived**:主要用于实现Linux平台上的高可用性,它基于VRRP协议,能够在一组服务器之间实现虚拟路由冗余,当主服务器出现故障时自动将流量切换至备份服务器,从而确保服务的连续性。 3. **MyCat**:作为一...
1. **主从复制**:MySQL主从复制通过binlog日志实现,主节点将所有改变写入binlog,从节点读取并应用这些日志。配置文件`my.cnf`中的`server-id`、`log-bin`等选项用于设置复制。 2. **GTID(Global Transaction ...
`MHA`是一个用于MySQL集群的高可用性管理工具,它能实时监控MySQL主从复制的状态,并在主服务器故障时自动选择最佳的备份服务器升级为主,同时处理数据同步,确保数据一致性。MHA不仅可以检测并处理主服务器的故障,...
而Keepalived则是用来实现服务的高可用性,通过VRRP协议确保在主服务器故障时能快速切换到备份服务器。 **Tomcat的安装与配置** 1. **下载Tomcat**:从官方网站获取最新版本的Tomcat(如9.0.20),并将tar.gz包...
因此,通过Keepalived实现的MySQL双机热备方案旨在提供无缝切换的高可用性,确保在主服务器故障时,备份服务器能立即接管服务,避免数据丢失或服务中断。 二、Keepalived简介 Keepalived是一款基于VRRP协议的高可用...
当主节点发生故障时,Keepalived可以自动将虚拟IP地址切换到备用节点,从而保证服务的连续性。 #### 11. 数据库备份与HA的互补作用 即使部署了高可用架构,数据库的备份工作仍然是必须的。高可用架构主要防止了...
在云服务、Web服务器群、数据库集群等领域,Keepalived被广泛应用于构建高可用架构,如搭建HAProxy+Keepalived的负载均衡解决方案,或者MySQL主从复制配合Keepalived实现数据库服务的高可用。 总结,Keepalived是...