利用Keepalived构建高可用的MySQL
公司大牛让用keepalived构建高可用的MySQL,在网上看到一篇很完整的文章,于是乎照着前辈的足迹,加上自己补充。如上述均正确配置
前言:公司大牛让用keepalived构建高可用的MySQL,在网上看到一篇很完整的文章,于是乎照着前辈的足迹,加上自己补充。
环境拓扑如下:
MySQL-VIP:192.168.1.150
MySQL-master1:192.168.1.151
MySQL-master2:192.168.1.152
OS版本:RedHat 5.4
MySQL版本:5.0.77
Keepalived版本:1.1.20
一、MySQL master-master的安装及配置
1、安装mysql
#yum install mysql-server -y \\为了节省时间,这里两台server都直接yum装,希望你配好了yum源。
2、修改配置文件
On server1:
#vim /etc/my.cnf
[mysqld]
server-id = 10
log-bin = mysql-bin
replicate-do-db = ccledb
auto-increment-increment = 2
auto-increment-offset = 1
On server2 :
#vim /etc/my.cnf
[mysqld]
server-id = 20
log-bin = mysql-bin
replicate-do-db = ccledb
auto-increment-increment = 2
auto-increment-offset = 2
3、建立授权用户
On server1:
mysql> grant replication client,replication slave on *.* to cclo1@’192.168.1.%’ identified by ‘123456’;
On server2:
mysql> grant replication client,replication slave on *.* to cclo2@’192.168.1.%’ identified by ‘123456’;
4、指定主服务器
On server1
mysql> show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| MySQL-bin.000003 | 374 | | |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
mysql> change master to master_host='192.168.1.152',master_user='cclo2',master_password='123456',master_log_file='mysql-bin.000003',master_log_pos=374;
Query OK, 0 rows affected (0.05 sec)
On server2
mysql> show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| MySQL-bin.000003 | 374 | | |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
mysql> change master to master_host='192.168.1.151',master_user='cclo1',master_password='123456',master_log_file='mysql-bin.000003',master_log_pos=374;
Query OK, 0 rows affected (0.05 sec)
5、开启主主服务
mysql> start slave; \\两台server分别执行
MySQL> show slave status\G \\查看主主状态
Slave_IO_Running: Yes
Slave_SQL_Running: Yes \\如果此2项都为yes,master-master配置即成功
如上述均正确配置,现在在任何一台MySQL上更新数据都会同步到另一台MySQL。
二、keepalived安装及配置
1、192.168.1.151服务器上keepalived安装及配置
安装keepalived
#tar zxvf keepalived-1.1.20.tar.gz
#cd keepalived-1.1.20
#./configure --prefix=/usr/local/keepalived --with-kernel-dir=/usr/src/kernels/2.6.18-164.el5-i686
\\此处一定确保你的linux中有/usr/src/kernels/2.6.18-164.el5-i686这个目录,如果没有请安装kernel- devel包,建议最好是下载和你的linux系统内核版本相同的devel包安装(一般安装镜像有),此处直接#yum install -y kernel-devel
#make && make install
配置keepalived
此处需新建一个配置文件,默认情况下keepalived启动时会去/etc/keepalived目录下找配置文件
#mkdir /etc/keepalived
#vim /etc/keepalived/keepalived.conf \\配置文件内容如下:
! Configuration File for keepalived
global_defs {
notification_email {
cclo@cer.cn
}
notification_email_from cclo@cer.cn
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id MySQL-ha
}
vrrp_instance VI_1 {
state BACKUP #两台配置此处均是BACKUP
interface eth0
virtual_router_id 51
priority 100 #优先级,另一台改为90
advert_int 1
nopreempt #不主动抢占资源,只在优先级高的机器上设置即可,优先级低的机器不设置
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.150
}
}
virtual_server 192.168.1.150 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.151 3306 {
weight 3
notify_down /usr/local/my/my.sh #检测到服务down后执行的脚本
TCP_CHECK {
connect_timeout 10 #连接超时时间
nb_get_retry 3 #重连次数
delay_before_retry 3 #重连间隔时间
connect_port 3306 #健康检查端口
}
}
编写检测服务down后所要执行的脚本:
#vim /usr/local/my/my.sh
#!/bin/sh
pkill keepalived
#chmod +x /usr/local/my/my.sh
注:此脚本是上面配置文件notify_down选项所用到的,keepalived使用notify_down选项来检查real_server的服务状态,当发现real_server服务故障时,便触发此脚本;我们可以看到,脚本就一个命令,通过pkill keepalived强制杀死keepalived进程,从而实现了MySQL故障自动转移。另外,,我们不用担心两个MySQL会同时提供数据更新操作,因为每台MySQL上的keepalived的配置里面只有本机MySQL的IP+VIP,而不是两台MySQL的IP+VIP
启动keepalived:
#/usr/local/keepalived/sbin/keepalived –D
#ps -aux | grep keepalived
测试
找一台局域网PC,然后去ping MySQL的VIP,这时候MySQL的VIP是可以ping的通的
停止MySQL服务,#ps -aux | grep keepalived 看keepalived健康检查程序是否会触发我们编写的脚本

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

如何使用分布式数据库架构搭建高可用的MySQL集群随着互联网的发展,对于数据库的高可用性和扩展性的需求越来越高。分布式数据库架构成为了解决这些需求的有效方式之一。本文将介绍如何使用分布式数据库架构搭建高可用的MySQL集群,并提供相关的代码示例。搭建MySQL主从复制集群MySQL主从复制是MySQL提供的基本的高可用性解决方案。通过主从复制,可以实现数据的

Golang是一种高效、简洁、安全的编程语言,它可以帮助开发人员实现高可用的分布式系统。在这篇文章中,我们将探讨Golang如何实现高可用的分布式系统,并提供一些具体的代码示例。分布式系统的挑战分布式系统是一个由多个参与者协作完成的系统。分布式系统中的参与者可能是分布在地理位置、网络和组织架构等多个方面的不同节点。在实现分布式系统时,需要解决很多挑战,例如:

随着云计算和容器化技术的快速发展,容器编排系统成为了现代化应用部署和管理的重要组成部分。容器编排系统能够自动化地将多个容器进行调度、部署和管理,提供高可用性和可扩展性。在众多编程语言中,Go语言因其强大的并发特性和高性能而受到广泛关注,并且被许多知名容器编排系统如Docker和Kubernetes所使用。本文将介绍如何使用Go语言开发一个高可用的容器编排系统

Linux和Docker:如何实现高可用的容器集群?摘要:随着容器技术的发展,越来越多的企业逐渐将应用程序部署到容器中。在生产环境中,实现容器集群的高可用性是至关重要的。本文将介绍如何使用Linux和Docker来构建高可用的容器集群,并通过代码示例来演示具体实现方法。搭建DockerSwarm集群DockerSwarm是Docker提供的原生容器集群管

如何在Linux上配置高可用的容器编排平台监控随着容器技术的发展,容器编排平台作为管理和部署容器化应用的重要工具,被越来越多的企业所采用。为保证容器编排平台的高可用性,监控是非常重要的一环,它可以帮助我们实时了解平台的运行状态、快速定位问题并进行故障恢复。本文将介绍如何在Linux上配置高可用的容器编排平台监控,并提供相关的代码示例。一、选择合适的监控工具在

随着互联网的迅速发展,越来越多的数据需要被存储和处理。为了确保数据的安全性和可靠性,分布式存储系统变得越来越重要。本文将介绍如何使用Go语言开发高可用的分布式存储系统,并在实践中探索其中的一些关键概念和技术。在开始之前,先来了解一下分布式存储系统的基本原理。分布式存储系统是由多个存储节点组成的,每个节点都独立地存储一部分数据。为了确保数据的高可用性,系统将数

如何在Go语言开发中实现高可用的分布式系统摘要:随着互联网的快速发展,分布式系统的需求越来越大。如何在Go语言开发中实现高可用的分布式系统成为了一个重要的问题。本文将介绍如何使用Go语言开发高可用的分布式系统。一、介绍分布式系统是由多个独立的节点组成的,节点之间通过网络进行通信和协调。高可用是分布式系统的核心要求之一,它能够保证系统在面对各种异常和故障时仍能

随着互联网应用的快速发展,缓存已成为了很多互联网公司加速访问速度和提高用户体验不可或缺的一部分。为了提高缓存集群的可用性,很多公司选择使用Golang语言来实现一个高可用的缓存集群。本文将介绍如何使用Golang语言实现一个高可用的缓存集群,包括思路,实现方法和优化建议等。一、缓存集群的架构思路采用分布式存储机制为了保证缓存集群的高可用性,我们需要采用分布式
