MySQL高可用性之Keepalived+Mysql(双主热备)

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

环境描述:

OS:CentOS6.5_X64

MASTER:192.168.0.202

BACKUP:192.168.0.203

VIP:192.168.0.204

1、配置两台Mysql主主同步

1
2
3
4
5
6
7
8
9
10
11
12
[root@master ~] # yum install mysql-server mysql -y
[root@master ~] # service mysqld start
[root@master ~] # mysqladmin -u root password 123.com
[root@master ~] # vi /etc/my.cnf  #开启二进制日志,设置id
[mysqld]
server- id  = 1                     #backup这台设置2
log-bin = mysql-bin
binlog-ignore-db = mysql,information_schema        #忽略写入binlog日志的库
auto-increment-increment = 2              #字段变化增量值
auto-increment-offset = 1               #初始字段ID为1
slave-skip-errors = all                        #忽略所有复制产生的错误     
[root@master ~] # service mysqld restart

#先查看下log bin日志和pos值位置

wKiom1MJYSngwysqAADkFn9zcK8686.jpg

master配置如下:

1
2
3
4
5
6
7
8
9
10
[root@ master ~] # mysql -u root -p123.com
mysql> GRANT  REPLICATION SLAVE ON *.* TO  'replication' @ '192.168.0.%'  IDENTIFIED  BY  'replication' ;
mysql> flush  privileges;
mysql> change  master to
     ->  master_host= '192.168.0.203' ,
     ->  master_user= 'replication' ,
     ->  master_password= 'replication' ,
     ->  master_log_file= 'mysql-bin.000002' ,
     ->  master_log_pos=106;   #对端状态显示的值
mysql> start  slave;          #启动同步

backup配置如下:

1
2
3
4
5
6
7
8
9
10
[root@backup ~] #  mysql -u root -p123.com
mysql> GRANT  REPLICATION SLAVE ON *.* TO  'replication' @ '192.168.0.%'  IDENTIFIED  BY  'replication' ;
mysql> flush  privileges;
mysql> change  master to
     ->  master_host= '192.168.0.202' ,
     ->  master_user= 'replication' ,
     ->  master_password= 'replication' ,
     ->  master_log_file= 'mysql-bin.000002' ,
     ->  master_log_pos=106;
mysql> start  slave;

#主主同步配置完毕,查看同步状态Slave_IO和Slave_SQL是YES说明主主同步成功。

wKioL1MJYQ7QfZfXAAGQt0H1o1c742.jpg

在master插入数据测试下:

wKiom1MJYUCC0nlQAAEk4ruZ3ys652.jpg

在backup查看是否同步成功:

wKioL1MJYXyyChXUAADPZraUk3Y684.jpg

可以看到已经成功同步过去,同样在backup插入到user表数据,一样同步过去,双主就做成功了。

2、配置keepalived实现热备

[root@backup ~]# yum install -y pcre-devel openssl-devel popt-devel #安装依赖包

1
2
3
4
5
[root@master ~] # wget http://www.keepalived.org/software/keepalived-1.2.7.tar.gz
[root@master ~] # tar zxvf keepalived-1.2.7.tar.gz
[root@master ~] # cd keepalived-1.2.7
[root@master ~] #./configure --prefix=/usr/local/keepalived
make  &&  make  install

#将keepalived配置成系统服务

1
2
3
4
5
[root@master ~] # cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
[root@master ~] # cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
[root@master ~] # mkdir /etc/keepalived/
[root@master ~] # cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
[root@master ~] # cp /usr/local/keepalived/sbin/keepalived /usr/sbin/
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
[root@master ~] # vi /etc/keepalived/keepalived.conf
! Configuration File forkeepalived
global_defs {
notification_email {
test @sina.com
  }
notification_email_from  admin@ test .com
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            #优先级,backup设置90
  advert_int 1
  nopreempt              #不主动抢占资源,只在master这台优先级高的设置,backup不设置
  authentication {
  auth_type PASS
  auth_pass 1111
  }
  virtual_ipaddress {
  192.168.0.204
  }
}
virtual_server 192.168.0.204 3306 {
  delay_loop 2
  #lb_algo rr              #LVS算法,用不到,我们就关闭了
  #lb_kind DR              #LVS模式,如果不关闭,备用服务器不能通过VIP连接主MySQL
  persistence_timeout 50   #同一IP的连接60秒内被分配到同一台真实服务器
  protocol TCP
  real_server 192.168.0.202 3306 {    #检测本地mysql,backup也要写检测本地mysql
  weight 3
  notify_down  /usr/local/keepalived/mysql .sh     #当mysq服down时,执行此脚本,杀死keepalived实现切换
  TCP_CHECK {
  connect_timeout 3     #连接超时
  nb_get_retry 3        #重试次数
  delay_before_retry 3  #重试间隔时间
   }
}
1
2
3
4
5
[root@master ~] # vi /usr/local/keepalived/mysql.sh
#!/bin/bash
pkill keepalived
[root@master ~] # chmod +x /usr/local/keepalived/mysql.sh
[root@master ~] # /etc/init.d/keepalived start


#backup服务器只修改priority为90、nopreempt不设置、real_server设置本地IP。


#授权两台Mysql服务器允许root远程登录,用于在其他服务器登陆测试!

mysql> grant all on *.* to'root'@'192.168.0.%' identified by '123.com';

mysql> flush privileges;

3、测试高可用性

1、通过Mysql客户端通过VIP连接,看是否连接成功。

2、停止master这台mysql服务,是否能正常切换过去,可通过ip addr命令来查看VIP在哪台服务器上。

wKiom1MJYbCBORSGAAHChWpI93k009.jpg

3、可通过查看/var/log/messges日志,看出主备切换过程

4、master服务器故障恢复后,是否主动抢占资源,成为活动服务器。



本文转自 李振良OK 51CTO博客,原文链接:http://blog.51cto.com/lizhenliang/1362313,如需转载请自行联系原作者

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
6月前
|
存储 关系型数据库 MySQL
《MySQL 简易速速上手小册》第5章:高可用性和灾难恢复(2024 最新版)
《MySQL 简易速速上手小册》第5章:高可用性和灾难恢复(2024 最新版)
90 2
|
6月前
|
关系型数据库 MySQL 数据库
深入MySQL数据库进阶实战:性能优化、高可用性与安全性
深入MySQL数据库进阶实战:性能优化、高可用性与安全性
574 0
|
6月前
|
SQL 存储 运维
MySQL高可用性:主从复制和集群
MySQL高可用性:主从复制和集群
109 0
|
6月前
|
缓存 关系型数据库 MySQL
【专栏】提升MySQL性能和高可用性的策略,包括索引优化、查询优化和事务管理
【4月更文挑战第27天】本文探讨了提升MySQL性能和高可用性的策略,包括索引优化、查询优化和事务管理。通过合理使用B-Tree和哈希索引,避免过度索引,以及优化查询语句和利用查询缓存,可以改善性能。事务管理中,应减小事务大小并及时提交,以保持系统效率。主从或双主复制可增强高可用性。综合运用这些方法,并根据实际需求调整,是优化MySQL的关键。
197 2
|
6月前
|
关系型数据库 MySQL
MySQL高可用性之Keepalived+Mysql(双主热备)
MySQL高可用性之Keepalived+Mysql(双主热备)
|
6月前
|
存储 监控 关系型数据库
MySQL高可用性之MySQL+DRBD+Heartbeat
MySQL高可用性之MySQL+DRBD+Heartbeat
|
6月前
|
关系型数据库 MySQL Linux
centos7下 Mysql+Keepalived 双主热备高可用图文配置详解
centos7下 Mysql+Keepalived 双主热备高可用图文配置详解
111 0
|
18天前
|
存储 SQL 关系型数据库
Mysql学习笔记(二):数据库命令行代码总结
这篇文章是关于MySQL数据库命令行操作的总结,包括登录、退出、查看时间与版本、数据库和数据表的基本操作(如创建、删除、查看)、数据的增删改查等。它还涉及了如何通过SQL语句进行条件查询、模糊查询、范围查询和限制查询,以及如何进行表结构的修改。这些内容对于初学者来说非常实用,是学习MySQL数据库管理的基础。
77 6
|
16天前
|
存储 关系型数据库 MySQL
Mysql(4)—数据库索引
数据库索引是用于提高数据检索效率的数据结构,类似于书籍中的索引。它允许用户快速找到数据,而无需扫描整个表。MySQL中的索引可以显著提升查询速度,使数据库操作更加高效。索引的发展经历了从无索引、简单索引到B-树、哈希索引、位图索引、全文索引等多个阶段。
50 3
Mysql(4)—数据库索引
|
1天前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。同时,文章还对比了编译源码安装与使用 RPM 包安装的优缺点,帮助读者根据需求选择最合适的方法。通过具体案例,展示了编译源码安装的灵活性和定制性。
10 2