当前位置: 首页 > news >正文

基于mysqldump的MySQL数据库异地备份方案(含完整脚本和解释)

MySQL数据库异地备份方案

0 文档描述

  • 本文描述了一个数据库异地备份方案,以下脚本代码都是在线上应用的
  • 本文以CentOS7为例,其他系统请自行查询安装命令
  • 如果评论有需求,我就对应系统做一下文档

1 基本原理

1.1 流程

原理本身很简单:

  • 1、利用mysqldump导出指定的数据库
  • 2、利用7za命令压缩文件
  • 3、通过ssh下载到异地(本地机房)

1.2 说明

  • 通常情况下,本地机房是无法访问异地的生产环境的,因此需要服务端一个脚本(用于导出数据库和压缩)、本地(即异地备份的“异地”)机房下载服务端的压缩包并保存。
  • 那么如何保证安全呢?建议通过云供应商的安全组限定IP、ssh证书等方式保障服务器访问是可控的

1 安装必要环境

# 安装mysqldump
yum -y install holland-mysqldump.noarch
# 安装压缩软件7z
sudo yum install p7zip

2 导出数据库并打包

  • 废话不多说,直接说内容、脚本,解释见注释
  • 在服务端(能访问被备份数据库的服务器上)上导出数据库并打包
  • 建议将下方脚本保存为bakcup.sh,在下一步中有调用
  • 下方dbname改为你的数据库名称,数据库地址、数据库账号、数据库密码改为你的
# 删除上一次导出的数据库
rm dbname.sql
# 删除上一次压缩的文件
rm dbname.7z
# 导出数据库
# 请正确修改下方信息,如:
# mysqldump -h 'localhost' -u root -p'123456' test > test.sql
mysqldump -h '填你的MySQL数据库地址' -u 数据库账号 -p'你的密码' dbname > dbname.sql
# 加密压缩,如果7za命令不存在,建议试试7z命令,如果还不行就得在网上找找了,实在不行就用gzip命令,不加密
7za a -p dbname.7z dbname.sql

3 下载到本地机房(异地)

  • 命令如下,主要是利用ssh远程执行上述
  • ssh如何免密远程?见第4步(不是本文核心)
echo '正在备份和加密打包'
# 利用ssh远程执行服务器上的backup脚本
ssh root@你的服务器IP "cd /data/mysql;./backup.sh;exit;"
echo '正在下载文件'
scp -P 22 root@你的服务器IP:/data/mysql/dbname.7z ./dbname.7z
echo '正在存储文件'
mv dbname.7z backup/$(date +"%Y%m%d_%H%M%S").7z
cd backup/
ls
echo 'done.'
exit 0
  • 这样数据库就实现了云端导出和打包并下载到本地,从而实现了异地备份存储

4 ssh免密登录

  • 网上有很多种方法,您可以去搜索下,这里提供一种
ssh-keygen -t rsa
# 下方为显示内容,一直enter就行
# Enter file in which to save the key (/home/jsmith/.ssh/id_rsa):[Enter key] 
# Enter passphrase (empty for no passphrase): [Press enter key]
# Enter same passphrase again: [Pess enter key]
# Your identification has been saved in /home/jsmith/.ssh/id_rsa.
# Your public key has been saved in /home/jsmith/.ssh/id_rsa.pub. 
# The key fingerprint is: 33:b3:fe:af:95:95:18:11:31:d5:de:96:2f:f2:35:f9 
ssh-copy-id -i ~/.ssh/id_rsa.pub  root@你的服务器IP
# 需要按提示输入密码,输入后enter即可
# 完成之后进行如下验证, 看有没有上到你的云服务器上
ssh root@你的服务器IP

5 其他建议

  • 1、为保障服务器安全,建议限制白名单IP执行文件下载命令
  • 2、可以使用Jenkins、Cron等方法使用定时任务备份数据库
  • 3、7z的压缩效果比较好,基本上能压缩为30%左右,推荐使用
  • 4、本文以CentOS7上的应用为例

相关文章:

基于mysqldump的MySQL数据库异地备份方案(含完整脚本和解释)

MySQL数据库异地备份方案 0 文档描述 本文描述了一个数据库异地备份方案,以下脚本代码都是在线上应用的本文以CentOS7为例,其他系统请自行查询安装命令如果评论有需求,我就对应系统做一下文档 1 基本原理 1.1 流程 原理本身很简单&#…...

C语言中10个字符串函数详解

目录 1.strlen 2.strcpy 3.strcat 4.strcmp 5.strncpy 6.strncat 7.strncmp 8.strstr 9.strtok 10.strerror 1.strlen 基本结构:size_t strlen(const char *str);功能:用于计算字符串的长度;字符串已经 0作为结束标志…...

flume系列之:查询多个flume agent组是否有topic重复接入情况

flume系列之:查询多个flume agent组是否有topic重复接入情况 一、查询zk节点下的flume agent组二、获取采集的topic三、获取重复接入的topic,支持设置重复接入白名单四、执行流程五、完整代码一、查询zk节点下的flume agent组 def get_flumeAgent_zkPath(zkRootPaths):for z…...

Windows自动化1️⃣环境搭建WinAppDriver

对于技术选型: 我尝试了, pywinauto, WinAppDriver,CukeTest 担心CukeTest可能会收费, 尝试pywinauto,在元素点击,搜索时, 遇到不可用情况; WinAppDriver是微软家的,大厂开源, 就它了! 步骤一:安装WinAppDriver 进入WinAppDriver下载页面(https://githu…...

云服务器Docker内部署服务后,端口无法访问?

云服务器Docker内部署服务后,端口无法访问,可以按照以下思路进行排查: 以【docker run --name my-nginx -d -p 9395:80 nginx】举例: 查看Docker映射是否正确,可使用docker ps命令查看。Docker是否设置端口映射&#…...

Unity将摄像机视角保存成Json文件方便读取使用

系列文章目录 unity工具 文章目录 系列文章目录👉前言👉一、设置环境👉二、代码如下👉三、使用方法 👉四、下次外部调用json里面的摄像机位置的时候如下代码方法👉壁纸分享👉总结 &#x1f449…...

git是什么/基本指令

git作用 去中心化, 分布式版本控制器 新增术语:仓库区, 工作区, 暂存区 具体见下板书 常用git命令 git clone 仓库网址 git status 查看仓库状态 git add newfile 临时添加到git仓库 git commit -m 正式添加git仓库 g…...

Linux 中的同步机制

代码基于:Kernel 6.6 临界资源:指哪些在同一时刻只允许被一个线程访问的软件或硬件资源。这种资源的特点是,如果有线程正在使用,其他进程必须等待直到该线程释放资源。 临界区:指在每个线程中访问临界资源的那段代码。…...

Day17 枚举、typedef、位运算、堆空间的学习

目录 枚举 typedef 位运算 堆上的空间 枚举 一个一个列举出来,是指将变量的值一一列举出来,变量的值只限于列举出来的值的范围内。 作用: 1、为了提高代码的可读性 2、提高代码的安全性 枚举类型 基本语法: enum 枚举名 { …...

Python爬虫与数据分析:中国大学排名的深度挖掘

前言 👉 小编已经为大家准备好了完整的代码和完整的Python学习资料,朋友们如果需要可以扫描下方CSDN官方认证二维码或者点击链接免费领取【保证100%免费】 一、选题背景 高考作为中国学生生涯中最为重要的事,在高考之后,选择一所…...

微软开源库 Detours 详细介绍与使用实例分享

目录 1、Detours概述 2、Detours功能特性 3、Detours工作原理 4、Detours应用场景 5、Detours兼容性 6、Detours具体使用方法 7、Detours使用实例 - 使用Detours拦截系统库中的UnhandledExceptionFilter接口,实现对程序异常的拦截 C软件异常排查从入门到精通…...

js中的getElementById的使用方法

在JavaScript中,document.getElementById()是一种用于通过元素的id属性获取DOM元素的方法。它的作用是返回与指定id匹配的HTML元素。 使用document.getElementById()可以通过元素的id属性直接获取该元素的引用,然后可以使用该引用对元素进行各种操作。例…...

设计模式 - 桥接模式

💝💝💝首先,欢迎各位来到我的博客!本文深入理解设计模式原理、应用技巧、强调实战操作,提供代码示例和解决方案,适合有一定编程基础并希望提升设计能力的开发者,帮助读者快速掌握并灵活运用设计模式。 💝💝💝如有需要请大家订阅我的专栏【设计模式】哟!我会定…...

LeetCode530 二叉搜索树的最小绝对差

前言 题目: 530. 二叉搜索树的最小绝对差 文档: 代码随想录——二叉搜索树的最小绝对差 编程语言: C 解题状态: 成功解决! 思路 注意题目中的二叉搜索树,这个条件暗示每个节点的左子节点肯定小于该节点&am…...

【STM32 FreeRTOS】信号量与互斥锁

二值信号量 二值信号量的本质是一个队列长度为1的队列,该队列就只有空和满两种情况,这就是二值。 二值信号量通常用于互斥访问或任务同步,与互斥信号量比较类似,但是二值信号量有可能会导致优先级翻转的问题,所以二值…...

SP:eric 靶场复现【附代码】(权限提升)

靶机下载地址: https://www.vulnhub.com/entry/sp-eric,274/https://www.vulnhub.com/entry/sp-eric,274/ 1. 主机发现端口扫描目录扫描敏感信息获取 1.1. 主机发现 nmap -sn 192.168.7.0/24|grep -B 2 08:00:27:75:19:80 1.2. 端口扫描 nmap 192.168.7.104 -p…...

SpringBoot项目启动直接结束--已解决

点击启动类&#xff0c;项目启动了&#xff0c;但是却直接停止了。遇到这个问题如何解决呢&#xff1f; 想要项目一直启动是要部署在tomcat服务器上面了&#xff0c;说明现在项目没有运行在tomcat服务器上面。 解决方案: 添加springweb的starter依赖。 <dependency><…...

【笔记】从零开始做一个精灵龙女-画贴图阶段(下)

补充四点&#xff0c;第一&#xff0c;前期画体积用一号或十三号笔刷&#xff0c;压力60&#xff0c;硬度80&#xff0c;体积大一点 2号笔刷比较适合画过渡和软一点的东东 第二&#xff0c; 游戏里面角色原画海报都是发光很亮很透。但是在bp不能画那么亮&#xff0c;因为你进…...

React 学习——react项目中加入echarts图

实现的代码如下&#xff1a; import * as echarts from echarts import { useEffect, useRef } from react; const Home ()>{const chartRef useRef(null);useEffect(()>{// const chartDom document.getElementById(main);//使用id获取节点const chartDom chartRef…...

链表算法题一

​ 旋转链表 旋转链表 首先考虑特殊情况 若给定链表为空表或者单个节点,则直接返回head,不需要旋转操作.题目给定条件范围: 0 < k < 2 ∗ 1 0 9 0 < k < 2 * 10^9 0<k<2∗109,但是受给定链表长度的限制,比如示例2中,k4与k1的效果等价. 那么可以得出kk%l…...

JavaSec-RCE

简介 RCE(Remote Code Execution)&#xff0c;可以分为:命令注入(Command Injection)、代码注入(Code Injection) 代码注入 1.漏洞场景&#xff1a;Groovy代码注入 Groovy是一种基于JVM的动态语言&#xff0c;语法简洁&#xff0c;支持闭包、动态类型和Java互操作性&#xff0c…...

C++初阶-list的底层

目录 1.std::list实现的所有代码 2.list的简单介绍 2.1实现list的类 2.2_list_iterator的实现 2.2.1_list_iterator实现的原因和好处 2.2.2_list_iterator实现 2.3_list_node的实现 2.3.1. 避免递归的模板依赖 2.3.2. 内存布局一致性 2.3.3. 类型安全的替代方案 2.3.…...

如何将联系人从 iPhone 转移到 Android

从 iPhone 换到 Android 手机时&#xff0c;你可能需要保留重要的数据&#xff0c;例如通讯录。好在&#xff0c;将通讯录从 iPhone 转移到 Android 手机非常简单&#xff0c;你可以从本文中学习 6 种可靠的方法&#xff0c;确保随时保持连接&#xff0c;不错过任何信息。 第 1…...

【Java_EE】Spring MVC

目录 Spring Web MVC ​编辑注解 RestController RequestMapping RequestParam RequestParam RequestBody PathVariable RequestPart 参数传递 注意事项 ​编辑参数重命名 RequestParam ​编辑​编辑传递集合 RequestParam 传递JSON数据 ​编辑RequestBody ​…...

高防服务器能够抵御哪些网络攻击呢?

高防服务器作为一种有着高度防御能力的服务器&#xff0c;可以帮助网站应对分布式拒绝服务攻击&#xff0c;有效识别和清理一些恶意的网络流量&#xff0c;为用户提供安全且稳定的网络环境&#xff0c;那么&#xff0c;高防服务器一般都可以抵御哪些网络攻击呢&#xff1f;下面…...

安全突围:重塑内生安全体系:齐向东在2025年BCS大会的演讲

文章目录 前言第一部分&#xff1a;体系力量是突围之钥第一重困境是体系思想落地不畅。第二重困境是大小体系融合瓶颈。第三重困境是“小体系”运营梗阻。 第二部分&#xff1a;体系矛盾是突围之障一是数据孤岛的障碍。二是投入不足的障碍。三是新旧兼容难的障碍。 第三部分&am…...

Windows安装Miniconda

一、下载 https://www.anaconda.com/download/success 二、安装 三、配置镜像源 Anaconda/Miniconda pip 配置清华镜像源_anaconda配置清华源-CSDN博客 四、常用操作命令 Anaconda/Miniconda 基本操作命令_miniconda创建环境命令-CSDN博客...

[拓扑优化] 1.概述

常见的拓扑优化方法有&#xff1a;均匀化法、变密度法、渐进结构优化法、水平集法、移动可变形组件法等。 常见的数值计算方法有&#xff1a;有限元法、有限差分法、边界元法、离散元法、无网格法、扩展有限元法、等几何分析等。 将上述数值计算方法与拓扑优化方法结合&#…...

边缘计算网关提升水产养殖尾水处理的远程运维效率

一、项目背景 随着水产养殖行业的快速发展&#xff0c;养殖尾水的处理成为了一个亟待解决的环保问题。传统的尾水处理方式不仅效率低下&#xff0c;而且难以实现精准监控和管理。为了提升尾水处理的效果和效率&#xff0c;同时降低人力成本&#xff0c;某大型水产养殖企业决定…...

2.2.2 ASPICE的需求分析

ASPICE的需求分析是汽车软件开发过程中至关重要的一环&#xff0c;它涉及到对需求进行详细分析、验证和确认&#xff0c;以确保软件产品能够满足客户和用户的需求。在ASPICE中&#xff0c;需求分析的关键步骤包括&#xff1a; 需求细化&#xff1a;将从需求收集阶段获得的高层需…...