如何 ?
当我尝试为某些用户创建 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 转储,没有任何丢失!