首页 > 其他分享 >避免删库跑路的最好办法

避免删库跑路的最好办法

时间:2024-07-02 10:30:54浏览次数:1  
标签:web 备份 删库 避免 passjava location mysql backup 最好

一、前言

1.1 删库跑路是什么?

删库跑路:是一个在开发和运维领域常见的幽默说法,但它指的是一种严重的故障情境:意外删除了生产数据库中的数据。

在实际操作中,这种情况可能会导致严重的数据丢失和业务中断。

1.2 避免删除跑路的方式

权限控制: 限制对生产环境的直接访问和操作,确保只有受信任的人员才能执行敏感操作。

日志审计: 记录所有操作,包括谁、什么时间、做了什么操作,以便追踪和审计。

备份策略: 实施完善的备份策略,定期备份数据,并将备份数据存储在安全的地方,以便在出现问题时能够快速恢复数据。

多地备份: 将备份数据存储在不同的地理位置,以防止因某一地点发生灾难而导致数据丢失。

权限分离: 采用最小权限原则,给予员工仅限于其工作职责所需的最低权限,避免滥用权限。

监控预警: 部署监控系统,监视系统状态和用户行为,及时发现异常操作并采取措施。

培训意识: 对员工进行安全意识培训,让他们了解删除跑路的危害,以及如何正确处理数据和执行操作。

而最最最重要的一种方式就是备份!

重要的事情说三遍:备份!备份!备份!

为什么说备份是最重要的,因为只要有备份文件,数据就能恢复。但前提是备份文件别被删了!

那么今天我们就来看下如何备份数据库以及重要的文件。

二、环境说明

本篇涉及到的服务器环境如下表所示:

序号说明说明
1 Ubuntu 系统 服务器操作系统
2 Docker 容器 容器
3 MySQL 数据库 备份数据库,以容器化部署
4 FastDFS 文件存储或 Redis 数据文件 备份磁盘文件
5 expect 工具 自动化交互式任务的工具

Ubuntu 上安装有 Docker,MySQL 以容器化的形式部署,FastDFS 分布式文件系统,expect 自动化交互式任务的工具(可以用来远程拷贝,但功能不仅仅如此),可自行安装该工具。

三、备份方案

3.1 备份 MySQL 数据库的所有数据

  • 使用 mysqldump 命令备份所有数据,并生成一个 SQL 文件。
  • 使用 tar 命令将 SQL 文件压缩成一个文件。
  • 使用 openssl 加密压缩文件。
  • 删除过期数据
  • 使用 scp 或 rsync 命令将加密文件上传到远程服务器进行异地存储。

图片

3.2 备份数据文件

  • 压缩和加密文件
  • 拆分成分卷文件
  • 合并分卷文件
  • 远程备份
  • 删除过期数据

    图片

四、自动化定期备份

当我们编写好备份的脚本后,还需要定期执行备份操作,那么就少不了添加定时任务了。

Linux 系统自带定时任务功能,我们可以指定一个 cron 作业,在每天凌晨 2 点 10 分运行该备份脚本,并将输出追加到 /home/passjava/backup/cron_log.txt 文件中。

步骤如下:

编辑定时任务

crontab -uroot -e

添加定时任务

10 2 * * * bash /home/passjava/backup/你的脚本 >> /home/passjava/backup/cron_log.txt

五、备份脚本

5.1 数据库备份脚本

#!/bin/bash
# 设置mysql的登录用户名和密码(根据实际情况填写)
mysql_user="root"
mysql_password="xxx"
mysql_host="数据库服务器 ip"
mysql_port="3306"
#mysql_charset="utf8mb4"
 
# 备份文件存放地址(根据实际情况填写)
backup_location=/home/passjava/backup/mysql/passjava_web
 
# 是否删除过期数据
expire_backup_delete="ON"
expire_days=7
backup_time=`date +%Y-%m-%d-%H-%M-%S`

#根据docker ps获取mysql容器的ID
mysqlContainerName=`sudo docker ps -q --filter="name=mysql"`
#在运行在docker环境的mysql中执行备份命令
sudo docker exec $mysqlContainerName mysqldump passjava_web -u$mysql_user -p$mysql_password > $backup_location/$backup_time-backup-mysql-passjava_web.sql

tar -czvf - $backup_location/$backup_time-backup-mysql-passjava_web.sql | openssl des3 -salt -k passjava123456 -out $backup_location/$backup_time-backup-mysql-passjava_web.sql.tar.gz

# 删除过期数据
if [ "$expire_backup_delete" == "ON" -a  "$backup_location" != "" ];then
        `find $backup_location/ -type f -mtime +$expire_days | xargs rm -rf`
        echo "Expired backup data delete complete!"
fi

echo "开始远程备份 passjava_web"

expect -c "
    spawn scp -r /home/passjava/backup/mysql/passjava_web/$backup_time-backup-mysql-passjava_web.sql.tar.gz passjava@异地服务器1:/home/passjava/backup/mysql/passjava_web
    expect {
        \"*assword\" {set timeout 300; send \"passjava\r\"; exp_continue;}
        \"yes/no\" {send \"yes\r\";}
    }
 spawn scp -r /home/passjava/backup/mysql/passjava_web/$backup_time-backup-mysql-passjava_web.sql.tar.gz passjava@异地服务器2:/home/passjava/backup/mysql/passjava_web
    expect {
        \"*assword\" {set timeout 300; send \"passjava\r\"; exp_continue;}
        \"yes/no\" {send \"yes\r\";}
    }
expect eof"

echo "完成远程备份 passjava_web"

rm -f $backup_location/$backup_time-backup-mysql-passjava_web.sql

5.2 文件备份脚本

本脚本用于备份 FastDFS 分布式文件系统的文件,也可以改为备份 redis 的数据文件。

#!/bin/bash
 
# 备份文件存放地址(根据实际情况填写)
backup_location=/home/passjava/backup/fdfs/data
 
# 是否删除过期数据
expire_backup_delete="ON"
expire_days=7
backup_time=`date +%Y-%m-%d-%H-%M-%S`

# 压缩加密数据库备份文件
tar -czvf - /home/passjava/fdfs | openssl des3 -salt -k passjava123456 | split -b 200m -d - $backup_location/$backup_time-fdfs-data.tar.gz

# 删除过期数据
if [ "$expire_backup_delete" == "ON" -a  "$backup_location" != "" ];then
        `find $backup_location/ -type f -mtime +$expire_days | xargs rm -rf`
        echo "Expired backup data delete complete!"
fi

cat $backup_location/$backup_time-fdfs-data.tar.gz* > $backup_location/$backup_time-fdfs-data-all.tar.gz

echo "开始远程备份 fdfs"

expect -c "
    spawn scp -r $backup_location/$backup_time-fdfs-data-all.tar.gz [email protected]:/home/passjava/backup/fdfs/data
    expect {
        \"*assword\" {set timeout 300; send \"passjava\r\"; exp_continue;}
        \"yes/no\" {send \"yes\r\";}
    }
expect eof"

echo "完成远程备份 fdfs"

rm -f $backup_location/$backup_time-fdfs-data.tar.gz*

六、总结

删库跑路是指某人恶意删除重要数据后逃避责任的行为,可能导致严重的经济损失和安全风险。

为了避免此类情况,需要实施权限管理、定期备份数据,并建立自动化的备份脚本,以确保数据安全和系统稳定运行。

标签:web,备份,删库,避免,passjava,location,mysql,backup,最好
From: https://www.cnblogs.com/privateLogs/p/18279402

相关文章

  • 2024年全球最好的低代码开发平台有哪些
    什么是低代码开发平台?低码开发平台是一个应用程序,提供图形用户界面编程,从而以非常快的速度开发代码,减少了传统的编程工作。这些工具有助于快速开发代码,最大限度地减少手工编码的努力。这些平台不仅有助于编码,而且还能快速安装和部署。低码开发工具的好处由frevvo调研显......
  • GNN 避免了 RNN 的 定制化训练
    图神经网络(GNN)在某些方面避免了递归神经网络(RNN)定制化训练的复杂性,下面是具体原因和解释:1.数据处理的通用性GNN:统一处理各种图结构数据:GNN能够处理任意图结构的数据,这些数据不需要额外定制化的预处理,可以直接通过图的节点和边来表示各种关系和依赖。自动捕捉图中的复杂......
  • 如何避免 `click` 和 `mousedown` 事件之间的冲突
    Genie你好!为了避免click和mousedown事件之间的冲突,可以通过检查拖拽的状态来决定是否应触发click事件。我们可以设置一个简单的延迟,并使用一个标志位来确定是否应该忽略click事件。下面是修改后的代码:<script>const{remote,ipcRenderer}=require('electron'......
  • Win10用户必看:最好用最稳定的版本在此,值得一试!
    在Win10电脑操作中,用户可以根据的需要,下载安装不同的系统版本。现在,许多用户好奇Win10哪个版本最好用最稳定?接下来小编给大家推荐最好用最稳定的Win10版本,这些系统版本经过优化升级,相信会给大家带来最棒的操作体验感,且下载安装步骤非常简单。推荐一:Windows1022H2X64......
  • 全网最好看的单细胞umap图绘制教程
    作者按大家或许都曾被Nature,Science上的单细胞umap图吸引过,不免心生崇拜。在这里,我们将介绍一种简单方便的顶刊级umap图可视化全文字数|预计阅读时间:2000|5min——Starlitnightly(星夜)环境加载我们先导入一些必须的依赖包importomicverseasovimportscanpyassci......
  • 怎样利用 Clojure 的宏来创建自定义的控制结构,并且如何避免常见的错误?
    在Clojure中,宏是一种宏展开的机制,它可以用于创建自定义的控制结构。通过使用宏,你可以在编写代码时引入新的语法,从而使代码更具可读性和表达力。要创建一个宏,你需要使用defmacro宏,并将宏名称与一个参数列表和一个展开形式绑定。这个展开形式将在宏被调用时用于生成代码。......
  • 【React篇】父组件渲染时避免重复渲染子组件的3种处理方法
    在React中,父组件渲染时要避免重复渲染子组件,可以使用以下方法:使用React.memo(仅适用于函数式组件)或PureComponent(适用于类组件):这些方法可以帮助你创建在接收到新的props时仅在有必要的情况下重新渲染的组件。它们通过浅比较新旧props来判断是否需要重新渲染。对于......
  • mybatis批量更新(where的条件越少,最好是主键,效率越高)
    <updateid="updateBatch"databaseId="sqlserver">updateT_RISK_TASK_SERVICE<trimprefix="set"suffixOverrides=","><trimprefix="TASK_REALITY_START_TIME=case......
  • 2024最好的轻资产创业项目有哪些 低成本高收益简单易操作的看这里
    在2024年,轻资产创业赛道展现出多样化的趋势,这些赛道不仅顺应了时代潮流,还充分展现了创新与差异化的发展思路。以下是一些值得关注的轻资产创业赛道:首先,APP拉新工作室成为了一个热门的创业项目。随着移动互联网的普及,APP的下载量和活跃度成为了衡量其成功与否的重要指标。因此......
  • 单细胞测序最好的教程(十三):你真的做对过干预后细胞分析吗?
    作者按本章节主要讲解了干预(不同处理)的单细胞数据的正确分析方法,讲解了干预分析与差异表达分析,细胞组成分析的区别,并介绍了查找受扰动影响最大的细胞类型以及预测单细胞对扰动的转录反应的干预分析方法。本教程首发于单细胞最好的中文教程,未经授权许可,禁止转载。全文字数|预计......