MySQL 高可用之双机热备
时间:2022-07-28
本文章向大家介绍MySQL 高可用之双机热备,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
为什么要采用双机热备?
单节点Haproxy不具备高可用,必须要要有冗余设计
关键因素:虚拟IP地址
一个网卡对应多个虚拟IP
利用Keepalived实现双机热备
Keepalived争抢 --> 虚拟IP
Haproxy双机热备方案
docker exec -it h1 bash
apt-get update
apt-get install keepalived
Keepalived配置文件
配置文件vim /etc/keepalived/keepalived.conf
vrrp_instance VI_1 {
# Keepalived的身份(MASTER主服务,BACKUP备服务器。主服务器要抢占虚拟IP,备用服务器不会抢占IP)
state MASTER
# 虚拟路由标识,MASTER和BACKUP的虚拟路由标识必须一致。标识可以是0~255
virtual_router_id 51
# 网卡设备
interface eth0
# MASTER权重要高于BACKUP数字越大优选级越高
priority 100
# MASTER与BACKUP节点间同步检查的时间间隔,单位为秒。主备之间必须一致。
advert_int 1
# 主从服务器验证方式。主备必须使用相同的密码才能正常通信
authentication {
auth_type PASS
auth_pass 123456
}
# 虚拟IP地址。可以设置多个虚拟IP地址,每行一个
virtual_ipaddress {
172.18.0.201
}
}
启动Keepalived
service keepalived start
热备份数据
冷备份:关闭数据库时候的备份方式,通常做法是拷贝数据文件。
冷备份是最简单最安全的一种备份方式
大型网站无法做到关闭业务备份数据,所以冷备份不是最佳选择
pxc下线一个节点做冷备份。
热备份:系统运行的状态下备份数据,也是难度最大的备份
MySQL常见的热备份有LVM和XtraBackup两种方案
XtraBackup直接备份,无需加锁
XtraBackup介绍
一款基于InnoDB的在线热备工具,具有开源免费,支持在线热备,占用磁盘空间小,能够非常快速地备份与恢复mysql数据库
优势:
- 备份过程中不锁表、快速可靠
- 备份过程中不会打断正在执行的事务
- 能够基于压缩等功能节约磁盘空间和流量
全量备份和增量备份
全量备份全部数据。备份过程时间长,占用空间大
增量备份只备份变化的那部分数据。备份时间短,占用空间小
docker volume create backup
docker stop node1
docker rm node1
docker -v backup:/data -e CLUSTER_JOIN=node2
PXC全量备份步骤
apt-get update
apt-get install percona-xtrabackup-24
innobackupex --user=root --password=123456 /data/backup/full
PXC全量恢复步骤
- 数据库可以热备份,但是不能热还原。为了避免恢复过程中的数据同步,我们采用空白的MySQL还原数据,然后再建立PXC集群
- 还原数据前要将未提交的事务回滚,还原数据之后重启MySQL
rm -rf /var/lib/mysql/*
innobackupex --user=root --password=123456 --apply-back /data/backup/full/2018-04-15_05-09-07/
innobackupex --user=root --password=123456 --copy-back /data/backup/full/2016-xx--xx_xx-xx-xx/
- 如何在CDSW中使用R绘制直方图
- CTF学习交流群 第一期入群题writeup大放送
- 如何使用Hue创建Spark1和Spark2的Oozie工作流
- 【译】深入研究 Laravel 的依赖注入容器
- 一次XSS突破的探险
- 如何使用Hue创建Spark2的Oozie工作流(补充)
- 如何基于CDSW基础镜像定制Docker
- OVSDB介绍及在OpenDaylight中的调用
- 如何在CDH集群的非元数据库节点安装MySQL5.7.12
- PySpark数据类型转换异常分析
- SQLI-LABS 更新帖(二)
- 如何重置Hue用户密码
- 如何使用R连接Hive与Impala
- Equation Group泄露工具之vBulletin无文件后门分析
- MySQL 教程
- MySQL 安装
- MySQL 管理与配置
- MySQL PHP 语法
- MySQL 连接
- MySQL 创建数据库
- MySQL 删除数据库
- MySQL 选择数据库
- MySQL 数据类型
- MySQL 创建数据表
- MySQL 删除数据表
- MySQL 插入数据
- MySQL 查询数据
- MySQL where 子句
- MySQL UPDATE 查询
- MySQL DELETE 语句
- MySQL LIKE 子句
- mysql order by
- Mysql Join的使用
- MySQL NULL 值处理
- MySQL 正则表达式
- MySQL 事务
- MySQL ALTER命令
- MySQL 索引
- MySQL 临时表
- MySQL 复制表
- 查看MySQL 元数据
- MySQL 序列 AUTO_INCREMENT
- MySQL 处理重复数据
- MySQL 及 SQL 注入
- MySQL 导出数据
- MySQL 导入数据
- MYSQL 函数大全
- MySQL Group By 实例讲解
- MySQL Max()函数实例讲解
- mysql count函数实例
- MYSQL UNION和UNION ALL实例
- MySQL IN 用法
- MySQL between and 实例讲解
- 基于 Kubernetes,Helm 及 Jenkins 实现弹性 CI/CD
- Go by Example 中文版: 读文件
- Apache Shiro权限框架理论介绍
- 【技术创作101训练营】Linux服务器的晴雨表—top命令
- 微服务之间的通信的方式
- Python从入门到熟练(7):函数
- Django调用百度地图api在地图上批量增加标记点
- Spring Cloud Config - 统一配置中心
- 从头分析一则traceId穿透问题(附解决方案)
- openldap的介绍与安装
- docker搭建环境如何配置端口
- Go语言入门(二)-流程控制
- 【Java8新特性】02 函数式接口和Lambda表达式实战练习:环绕执行模式使行为参数化
- Go语言入门(三)数组和切片
- 一天一大 leet(回文数)难度:简单 DAY-10