mysql高可用双主+keepalived

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介:

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


相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
2月前
|
存储 关系型数据库 MySQL
Mysql高可用|索引|事务 | 调优
Mysql高可用|索引|事务 | 调优
|
3月前
|
SQL 容灾 关系型数据库
rds容灾与高可用
rds容灾与高可用
29 4
|
3月前
|
关系型数据库 MySQL
电子好书发您分享《MySQL MGR 8.0高可用实战》
电子好书发您分享《MySQL MGR 8.0高可用实战》 电子好书发您分享《MySQL MGR 8.0高可用实战》
90 1
|
2月前
|
监控 容灾 关系型数据库
rds容灾与高可用
rds容灾与高可用
50 6
|
3月前
|
SQL 关系型数据库 MySQL
Mysql高可用,索引,事务与调优:提高数据库性能的关键技术
在当今互联网时代,高可用性、稳定性和性能是数据库的三大关键要素。本文将深入探讨Mysql高可用、索引、事务和调优等方面的技术,为读者提供实用的解决方案和经验。
24 0
|
2天前
|
SQL 存储 关系型数据库
MySQL Cluster集群安装及使用
MySQL Cluster集群安装及使用
|
17天前
|
关系型数据库 MySQL 数据库
mysql卸载、下载、安装(window版本)
mysql卸载、下载、安装(window版本)
|
1月前
|
关系型数据库 MySQL 数据库
rds安装数据库客户端工具
安装阿里云RDS的数据库客户端涉及在本地安装对应类型(如MySQL、PostgreSQL)的客户端工具。对于MySQL,可选择MySQL Command-Line Client或图形化工具如Navicat,安装后输入RDS实例的连接参数进行连接。对于PostgreSQL,可以使用`psql`命令行工具或图形化客户端如PgAdmin。首先从阿里云控制台获取连接信息,然后按照官方文档安装客户端,最后配置客户端连接以确保遵循安全指引。
86 1
|
6天前
|
关系型数据库 MySQL 数据库
《MySQL 简易速速上手小册》第1章:MySQL 基础和安装(2024 最新版)
《MySQL 简易速速上手小册》第1章:MySQL 基础和安装(2024 最新版)
28 4
|
30天前
|
Ubuntu 关系型数据库 MySQL
Ubuntu 中apt 安装MySQL数据库
Ubuntu 中apt 安装MySQL数据库
69 0