吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 964|回复: 17
收起左侧

[求助] mysql备份问题请教

[复制链接]
ppgjx 发表于 2024-9-5 16:55
本帖最后由 ppgjx 于 2024-9-5 16:57 编辑

我有一个项目 mysql和redis都装在一个服务器上 之前这个服务器被植入过xmrig挖矿病毒 服务器只保留了 80 443 22 ssh密码挺复杂的  项目是spring boot + nginx + redis + mysql5.7  一直不知道怎么进来的 挖矿病毒还好 但是如果遇到勒索病毒就很麻烦 了
现在我想实时备份数据库 有没有一种方式 可以实时备份到另一台服务器?就算mysql数据表被删除也可以恢复的方案?或者有没有一种东西可以实时备份整个系统?快照那种太慢了 系统是centos7

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

18382747915 发表于 2024-9-5 17:03
1. 基于MySQL的实时备份方案(1) MySQL 主从复制 (MySQL Replication)
MySQL主从复制是一种常见的实时备份解决方案。你可以在另一台服务器上设置MySQL作为“从服务器”,将主服务器的数据实时同步到从服务器上。
  • 优点:
    • 实时同步主服务器的数据到从服务器,主服务器上进行的每一次写入操作都会复制到从服务器。
    • 如果主服务器数据表被删除,可以直接从从服务器恢复。
    • 支持自动故障切换。
  • 步骤
    • 配置MySQL的主从复制环境。
    • 确保从服务器的数据和主服务器的数据一致。
    • 如果主服务器的数据表被删除,可以从从服务器手动或自动恢复。
(2) MySQL Binlog 日志
使用MySQL的Binlog日志,你可以通过增量备份的方式,持续保存数据库的所有写操作日志。如果发生数据丢失,可以通过重新应用这些日志恢复数据。
  • 优点:
    • 实时备份每次数据修改。
    • 结合定期的全量备份,可以实现数据库的时间点恢复。
  • 步骤
    • 开启MySQL的二进制日志(Binlog)。
    • 定期备份MySQL的全量数据。
    • 在需要恢复时,应用Binlog日志将数据恢复到指定时间点。
2. 基于Redis的实时备份方案
Redis可以通过RDB和AOF文件来备份数据:
  • RDB (Redis Database Backup): Redis会定期生成一个RDB快照,可以通过save或bgsave命令手动生成,也可以通过配置文件设置定时生成快照。将RDB文件同步到另一台服务器,作为备份文件。
  • AOF (Append-Only File): Redis的AOF文件会记录每次写操作。你可以开启AOF功能,将数据变更实时记录到文件,并通过网络将AOF文件复制到其他服务器。
实时同步Redis数据:
可以使用工具如rsync定期将RDB或AOF文件同步到另一台服务器,或使用NFS(网络文件系统)将备份文件存储到远程服务器。3. 文件系统级别的备份
除了数据库的备份,你还可以通过系统级别的实时备份工具备份整个系统文件(包括数据库和配置文件),以防止被勒索病毒攻击。(1) rsync+cron 定时同步
rsync是一款常用的文件同步工具,你可以使用它定期将数据库和相关配置文件同步到远程服务器。
  • 步骤
    • 安装并配置rsync。
    • 编写cron任务,定期将数据库的备份目录同步到另一台服务器。
(2) Bacula / Rsnapshot / Rdiff-backup
这些是自动化的系统备份工具,可以定期备份整个系统文件并将其同步到远程服务器。相比快照,这些工具可以增量备份,速度较快。
  • Bacula: 支持全量、差异和增量备份,适合大型备份场景。
  • Rsnapshot: 基于rsync,支持增量备份和多版本备份,配置简单。
  • Rdiff-backup: 支持增量备份,效率较高,可以轻松恢复备份。
4. 备份方案推荐
结合你的情况,推荐以下方案:
  • MySQL主从复制 + MySQL Binlog日志: 实现实时数据库同步,并结合Binlog实现精确到秒级的增量恢复。
  • Redis AOF持久化: 开启Redis AOF功能,并将AOF文件定期同步到另一台服务器。
  • rsync定时同步备份系统文件: 使用rsync将MySQL、Redis的数据目录和系统配置文件定时同步到远程服务器。

Aaron-x 发表于 2024-9-5 17:05
solar应急响应 发表于 2024-9-5 17:10
如果排除是服务器、数据库的弱口令的话,建议检查下web日志,很有可能通过web漏洞入侵的。
zunmx 发表于 2024-9-5 17:30
本帖最后由 zunmx 于 2024-9-5 17:36 编辑

这里并不是说主从方式不好,虽然有binlog,但是维护难度还是存在的。
可以定时任务mysqldump ,这样的话,服务器上是不是就有数据库的备份了。
然后通过ssh 或者 scp进行复制到另一台服务器(但是存在另一台服务器的密钥泄露问题,但是前提是他得找到你脚本的位置)
另一种方法,也是我在使用的。

主机操作
0. 需要写一个接口,设置status文件的(后面会用到)
1. 每日0点mysqldump
2. 通过RSA公钥进行加密
3. 加密完成后,放到nginx中的某个目录中,这样就可以让其他人下载了(加密后别人不知道私钥也没有用,破解成本也挺大的)
4. 放到web服务器的公开目录后,写一个status文件。

备份服务器
此时另一台服务器(或者个人电脑),写一个脚本,每隔n秒,看一下status文件,如果存在或者是里面的值是对的,就下载那个加密后的文件。

下载完成后,私钥解密,然后调用接口,删除或者置status文件为空,并且删除那个文件。

这种方式不能保证数据的最新,但是最起码能回滚到1天前。

这里可以考虑用c写一个rsa操作的工具,我最早用python,但是发现加密解密的效率太低了,当然你也可以选择zip+密码压缩。



主从的话,如果主删库了,从不也就删了么?(应该也有高级用法,没研究那么深了)





spring的话,看看tomcat的日志吧,估计是从这儿渗透进来的,多关注0day和组件版本。
不排除操作服务器的机器没有泄露密码。

redis没有开放外网端口,应该没啥大问题,主要还是考虑java层,是不是有漏洞和逻辑问题。
wangyueda 发表于 2024-9-5 17:58
1. 检查容易出现问题的Redis、和接口XSS漏洞等。
2. Nginx日志检查一下,应该会有痕迹。
3. 切换ip换服务器,不要直接暴露ip.
cao777 发表于 2024-9-5 18:06
你的服务器开放了哪些端口 导致被搞了
我的服务器只保留了远程连接和业务两个端口 而且都不是常用端口 开了块3年 目前还没有被搞过
dj215 发表于 2024-9-5 21:17
用宝塔自动备份不行吗
Kuronoks 发表于 2024-9-5 22:50
我开了一堆端口都没问题,nacos的8848端口都开放了。。。服务器运营商提供的定时快照肯定最方便了,或者自己写脚本定时物理备份服务器的文件呗
zach14c 发表于 2024-9-5 23:31
实时备份会面临备份也被实时加密的风险,  一般可采取3-2-1策略,或是设置备份的不可更改(immutable)期间,多版本等备份策略,可以参考Veeam Backup的方案,在免费版有10个workload可以使用
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-12-12 06:48

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表