mysql高可用双主+keepalived

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介:

Mysql双主复制

实验拓扑:sql1  192.168.10.1   server id 1 vip 192.168.10.100

          Sql2  192.168.10.2   server id 2 vip 192.168.10.100

          客户端 192.168.10.3

 

Sql1配置双主

主库配置:vim /etc/my.cnf   

Log-bin=mysql-bin    //打开二进制日志

Server-id=1   

Service mysqld start   //重启mysql进程

登录到mysql控制台

Mysql> reset master;   //重置日志

Mysql>grant replication slave,replication client on *.*  to rep1@192.168.10.% identified by tianyun;  //为第二台服务器建立复制账号

Mysql> flush privileges;

Mysql>change master to master_host=192.168.10.2,  master_user=rep1, master_password=tianyun,  master_log_file=mysql-bin.000001,  master_log_pos=0;

//因为它也是从,所以也需要设置

Mysql>Start slave;  //先不要启动,执行这语句,等待会第二台服务器配置好之后再执行

 

 

Sql2配置

主库配置:vim /etc/my.cnf   

Log-bin=mysql-bin    //打开二进制日志

Server-id=2   

Service mysqld start   //重启mysql进程

登录到mysql控制台

Mysql> reset master;   //重置日志

Mysql>grant replication slave,replication client on *.*  to rep1@192.168.10.% identified by tianyun;  //为对方主机第一台服务器建立复制账号

Mysql> flush privileges;

Mysql>change master to master_host=192.168.10.1,  master_user=rep1, master_password=tianyun,  master_log_file=mysql-bin.000001,  master_log_pos=0;

//因为它也是从,所以也需要设置

Mysql>Start slave;  //先不要启动,执行这语句,等待会第二台服务器配置好之后再执行

 

 

测试:分别在两台服务器上创建建库建表往表里查一点数据,在对方服务器上看有没有库表数据就能测试出来了。

 

 

创建一个测试远程连接账号

Grant all on *.* to admin@% identified by tianyun; //因为是主主架构,两边服务器数据肯定一致,所以只需要再一台服务器上创建账号就可以了。

Flush privileges;

 

在客户端电脑分别登录测试一下两台主机服务器,看看是否正常。

 

 

 

安装keepalived

在两台sql服务器上分别安装keepalived软件

Yum -y install kernel-headers kernel-devel  openssl-devel popt-devel  //解决依赖包

Tar xzf keepalived-1.2.8.tar.gz

Cd keepalived-1.2.8

./configure --prefix=/           //这样配置文件比较短一点,位置随便自定的

Make && make install

 

Keepalived/备配置  

Vim /etc/keepalived/keepalived.conf              //sql1上做为高可用的主服务器,当然也可以在sql2上做为主服务器,这里就让sql1做主服务器

备注:红色部分代码新增的,紫色部分代表修改的

Lobal_defs{               //用来设置通知发送给那个邮件的

 

Router_id mysqlA   //这个只是一个标识而已

Vrrp_script check_mysql{     //定义检测mysql正常语法的脚本

Script /keeplived_mysql.sh   //脚本位置,这个是我们需要自己去手工写的脚本,位置名字必须和这里的一致

Interval  5   //定义间隔什么时候就去检测一次

}

 

Vrrp_instance VI_1{   //定义一个实例

State Master

Interface eth0   //通信心跳接口,最好就是直接用一个网卡互联,不经过任何路由器

Virtual_router_id 51  //两边一致

Priority 100  //优先级

Advert_int 1

Authentication{    //通信方式,两边一致最好

Auth_type PASS

Auth_pass tianyun

 

 

}

Virtual_ipaddreess {

192.168.10.100      //vip地址

}

 

Track_script {

 Check_mysql    //最关键的一点,检查运行脚本

}

}

 

下面的东西我们不用管它

保存退出

 

Rsync -av /etc/keepalived/keeplived.conf 192.168.10.2:/etc/keepalived  //直接把配置文件拷贝到备也就是另一台服务器上,然后我们直接修改两个参数即可,就不用我们再怎么设置了

 

sql2上配置

Vim /etc/keepalived/keepalived.conf

 

Lobal_defs{               //用来设置通知发送给那个邮件的

 

Router_id mysqlB  //这个只是一个标识而已

Vrrp_script check_mysql{     //定义检测mysql正常语法的脚本

Script /keeplived_mysql.sh   //脚本位置,这个是我们需要自己去手工写的脚本,位置名字必须和这里的一致

Interval  5   //定义间隔什么时候就去检测一次,时间不要太短,合适就好了

 

}

 

Vrrp_instance VI_1{   //定义一个实例

State BACKUP  //这个不能随便写的,是关键字

Interface eth0   //通信心跳接口,最好就是直接用一个网卡互联,不经过任何路由器

Virtual_router_id 51  //两边一致

Priority  50  //优先级

Advert_int 1

Authentication{    //通信方式,两边一致最好

Auth_type PASS

Auth_pass tianyun

 

 

}

Virtual_ipaddreess {

192.168.10.100      //vip地址

}

 

Track_script {

 Check_mysql    //最关键的一点,检查运行脚本

}

}

 

保存退出就行了

Mysql状态监测脚本

两边sql1sql2配置一模一样

 

脚本的名字和路径必须要keepalived配置文件里定义的一模一样

Vim keeplived_mysql.sh

#/bin/bash

/usr/local/mysql/bin/Mysql -e show status & >/dev/null   //如果不给全路径,keepalived调用的时候可能会报错

If [$? -ne 0];  //如果不等于0表示mysql不正常

Then

Service keepalived stop

Fi

 

 

保存退出

Chmod a+x keeplived_mysql.sh //让脚本让其他用户有运行的权限

Chkconfig --add keepalived   //keepalived加入到让service去管理启动它

Chkconfig   keepalived  on //开机运行 keepalived

手工测试以调试模式去执行测试一下效果

Bash -vx /keepalived_msyql.sh

 

Mysql高可用测试

关闭一台sql逐个测试机就行了

本文转自    探花无情   51CTO博客,原文链接:http://blog.51cto.com/983865387/1876166


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
15天前
|
存储 SQL 关系型数据库
Mysql高可用架构方案
本文阐述了Mysql高可用架构方案,介绍了 主从模式,MHA模式,MMM模式,MGR模式 方案的实现方式,没有哪个方案是完美的,开发人员在选择何种方案应用到项目中也没有标准答案,合适的才是最好的。
75 3
Mysql高可用架构方案
|
3月前
|
运维 容灾 关系型数据库
MySQL高可用方案--Xenon全解
MySQL高可用方案--Xenon全解
|
3月前
|
SQL 关系型数据库 MySQL
orchestrator搭建mysql高可用
orchestrator搭建mysql高可用
45 0
|
3月前
|
缓存 关系型数据库 MySQL
如何实现mysql高可用集群
如何实现mysql高可用集群
40 0
|
3月前
|
安全 关系型数据库 MySQL
【MySQL】Orchestrator最简单的 mysql 高可用方案最细细细细~
【MySQL】Orchestrator最简单的 mysql 高可用方案最细细细细~
|
9天前
|
SQL 关系型数据库 MySQL
12 PHP配置数据库MySQL
路老师分享了PHP操作MySQL数据库的方法,包括安装并连接MySQL服务器、选择数据库、执行SQL语句(如插入、更新、删除和查询),以及将结果集返回到数组。通过具体示例代码,详细介绍了每一步的操作流程,帮助读者快速入门PHP与MySQL的交互。
24 1
|
11天前
|
SQL 关系型数据库 MySQL
go语言数据库中mysql驱动安装
【11月更文挑战第2天】
27 4
|
1月前
|
存储 关系型数据库 MySQL
Mysql(4)—数据库索引
数据库索引是用于提高数据检索效率的数据结构,类似于书籍中的索引。它允许用户快速找到数据,而无需扫描整个表。MySQL中的索引可以显著提升查询速度,使数据库操作更加高效。索引的发展经历了从无索引、简单索引到B-树、哈希索引、位图索引、全文索引等多个阶段。
61 3
Mysql(4)—数据库索引
|
18天前
|
监控 关系型数据库 MySQL
数据库优化:MySQL索引策略与查询性能调优实战
【10月更文挑战第27天】本文深入探讨了MySQL的索引策略和查询性能调优技巧。通过介绍B-Tree索引、哈希索引和全文索引等不同类型,以及如何创建和维护索引,结合实战案例分析查询执行计划,帮助读者掌握提升查询性能的方法。定期优化索引和调整查询语句是提高数据库性能的关键。
86 1
|
20天前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。同时,文章还对比了编译源码安装与使用 RPM 包安装的优缺点,帮助读者根据需求选择最合适的方法。通过具体案例,展示了编译源码安装的灵活性和定制性。
61 2