当前位置: 首页 > 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…...

终极Visual C++运行库修复指南:一劳永逸解决Windows软件兼容性问题

终极Visual C运行库修复指南&#xff1a;一劳永逸解决Windows软件兼容性问题 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist Visual C运行库修复工具是解决Windo…...

如何在老旧电视上实现流畅的1080P直播?MyTV-Android原生应用深度解析

如何在老旧电视上实现流畅的1080P直播&#xff1f;MyTV-Android原生应用深度解析 【免费下载链接】mytv-android 使用Android原生开发的视频播放软件 项目地址: https://gitcode.com/gh_mirrors/my/mytv-android 你是否曾为家中老旧智能电视的卡顿直播体验而烦恼&#x…...

CANN/ge算子句柄创建API

aclopCreateHandle 【免费下载链接】ge GE&#xff08;Graph Engine&#xff09;是面向昇腾的图编译器和执行器&#xff0c;提供了计算图优化、多流并行、内存复用和模型下沉等技术手段&#xff0c;加速模型执行效率&#xff0c;减少模型内存占用。 GE 提供对 PyTorch、TensorF…...

CANN/ops-nn快速层归一化算子

aclnnFastLayerNorm 【免费下载链接】ops-nn 本项目是CANN提供的神经网络类计算算子库&#xff0c;实现网络在NPU上加速计算。 项目地址: https://gitcode.com/cann/ops-nn &#x1f4c4; 查看源码 产品支持情况 产品是否支持Ascend 950PR/Ascend 950DTAtlas A3 训练系…...

前端工程化:持续集成实战指南

前端工程化&#xff1a;持续集成实战指南 前言 持续集成&#xff08;CI&#xff09;是现代软件开发的核心实践之一。它能帮助团队快速发现问题、减少集成风险、提高开发效率。今天我就来给大家讲讲如何搭建一套完整的前端持续集成流程。 什么是持续集成 持续集成是一种软件开发…...

CES 2016行业转向:从酷炫到实用,安全与服务成核心

1. 从“酷炫”到“实用”&#xff1a;CES 2016的行业转向解析每年一月的拉斯维加斯&#xff0c;对于科技行业而言&#xff0c;都像是一场盛大的朝圣。CES&#xff08;国际消费电子展&#xff09;不仅是新品发布的舞台&#xff0c;更是行业风向的晴雨表。2016年的CES&#xff0c…...

ARM TLB指令详解与虚拟化内存管理优化

1. ARM TLB指令基础与虚拟化背景 在ARM架构的虚拟化环境中&#xff0c;内存管理单元&#xff08;MMU&#xff09;通过TLB&#xff08;Translation Lookaside Buffer&#xff09;缓存虚拟地址到物理地址的转换结果&#xff0c;以提升内存访问性能。当页表发生变更时&#xff0c;…...

从QR码到汉信码:除了日本标准,国产二维码在哪些场景更牛?

从QR码到汉信码&#xff1a;国产技术如何重新定义二维码应用边界 在数字化浪潮席卷全球的今天&#xff0c;二维码已成为连接物理世界与数字世界的隐形桥梁。当我们习惯性地掏出手机扫描各种黑白方块时&#xff0c;很少有人意识到这些看似简单的图案背后&#xff0c;隐藏着一场关…...

从零构建IoT协议模糊测试:Boofuzz实战与监控策略优化

1. 为什么IoT协议需要模糊测试&#xff1f; 家里那台总爱掉线的智能路由器&#xff0c;可能正藏着你看不见的安全漏洞。去年某品牌摄像头大规模瘫痪事件&#xff0c;就是因为协议层的一个缓冲区溢出漏洞被攻击者利用。IoT设备与普通软件最大的不同在于——它们往往直接暴露在公…...

基于Git日志与AI的开发者行为画像分析工具设计与实现

1. 项目概述&#xff1a;当Git仓库遇上AI侦探在团队协作开发中&#xff0c;信息不对称是常态。你经常听到“我在推进中”&#xff0c;但没人知道推进的究竟是核心功能&#xff0c;还是午休后的咖啡。当线上出现一个棘手的Bug时&#xff0c;git blame命令那冰冷的输出&#xff0…...