我的问题

我的问题

如何 ?

当我尝试为某些用户创建 chroot 环境时,我最终使用

mount --rebind <path> <newPath>

为了让 chroot 用户能够访问一些有用的命令(是的,这是一种不好的做法)

在与同事讨论后,我改变了主意,决定使用组将某些文件夹列入 chrooted 用户的黑名单。在做了一些

umount <path>

我最后做了一点rm-rf。清理最后一个文件夹

我有过的最糟糕的想法

遗憾的是,我忘记卸载 /usr/share 文件夹了,R M开始删除此目录中的文件。希望我做得很快

Ctrl + C

在我注意到自己的错误之后。我心想“太好了,损失不大”

我实在是错了。

我的所有服务(mysql;postregsql;java)都无法运行,因为它们需要依赖项/etc/alternatives运行

update-alternatives --force --all

对我有点帮助,但对启动 mysql 没有帮助。我完全失去了修复这个问题的信心,所以我想备份每个配置文件并对我的 vps 进行全新安装。但就像你想的那样

我没有数据库备份

我知道这真的非常错误,请您原谅我。


我的问题

现在让我们继续我的问题,有没有办法恢复 PostreSQL 和 MySQL 连接,以便备份数据库并保存它以在我的 VPS 上执行全新安装?还是我完全迷路了?

到目前为止我已经尝试过:

  • 重新创建数据库套接字(实际上不起作用)
  • 重新生成 mysql 数据文件并将我的块文件移动到文件夹中(它有助于重新运行 mysql,我可以使用 SHOW DATABASES;和 SHOW TABLES;查看数据库和表,但我无法访问它们)

笔记

将来我会备份的,我保证

更新 :

根据PostreSQL:https://www.postgresql.org/docs/9.1/static/backup-file.html有一种方法可以使用 fs 备份数据库。我会尝试一下


感谢您花时间阅读我的文章,希望您能有所收获。

答案1

一般来说,您可以从备份中恢复,或者如果丢失的数据很关键,可以找一份新的工作。

一般来说,我建议使用数据恢复服务,但这需要在事故发生后立即关闭设备。这也非常昂贵且耗时。

答案2

除了配置每日/每小时备份之外,在接触系统之前专门备份您要处理的文件夹始终是一个好习惯,如果是在生产环境中,这条规则就变得更加重要。

对于您来说,我会查看 mysqldump 和 postgres 的等效项。

答案3

对于那些想知道是否有解决方案的人,我终于找到了一个!

首先我下载驱动Google Drive 终端客户端。

然后,我对所有重要目录 (/home、/etc/nginx、...) 进行了多次备份,并且对于我的 MySQL 和 PostgreSQL 服务器,我备份了以下目录:

  • /var/lib/mysql <-- 适用于 MySQL
  • /var/lib/postgresql/9.3/main <-- 对于 PostgreSQL

我已将这些备份上传到我的 Google Drive 并重新安装我的 VPS

最后,我重新安装了 MySQL 服务器,停止了守护进程,备份了原始的 /var/lib/mysql,并从 Google Drive 下载了旧的。在对权限进行了一些修复后,服务器已启动!瞧,我的数据库又恢复了功能!

我还没有测试过 PostgreSQL 数据重新导入,但我认为它会起作用,我明天会尝试。

无论如何,这对我来说都是一个很好的教训:无论如何,一定要进行备份!

更新

刚刚完成导入我的 PostgreSQL 转储,没有任何丢失!

相关内容