gpt4 book ai didi

php - 将超大 MySQL 数据库中的特定表/列备份和压缩到不同的服务器上

转载 作者:搜寻专家 更新时间:2023-10-30 20:27:40 28 4
gpt4 key购买 nike

我的目标是对我的数据库的特定部分运行每日备份(覆盖前一天的备份),这样我就可以轻松下载并导入它,并在出现任何问题时保留我所有的重要数据。

我目前有一个 20GB 的网络服务器 (Ubuntu),我的数据库约为 11GB 并且在增长(缓慢),所以我知道我需要启动第二个网络服务器来存储备份。 (一旦它变成 ~20GB,我最终需要升级我的主服务器。)

我的数据目前设置在几个索引表中,但我不需要备份所有数据,所以我想运行一个只选择我需要的查询并重建一个新数据库 (.数据库)。这将有助于减小大小,但文件仍然会非常大,所以我也想压缩这个文件,GZIP 是可行的方法吗?这也将整个数据库整齐地打包到一个文件中,这是我需要的。

此外,由于我可能会使用第二台服务器从第一台服务器请求数据,我如何确保请求不会超时?

TL;DR 需要每天将一个巨大的(10+ GB)数据库备份到另一台服务器上,同时删除过程中的某些表/列并进行压缩以优化硬盘和带宽使用这样我就可以在需要时轻松下载和导入备份(一个文件)。

最佳答案

Mysqldump 可以输出选定的表,您可以将输出通过管道传输到 gzip:

$ mysqldump mydatabase table1 table2 table3 |
gzip -c > dump.sql.gz

mysqldump 有一个选项可以转储行的子集。

$ mysqldump --where "created_at > '2014-03-01'" ...other options...

当然,您转储的所有表都必须识别 WHERE 条件。也就是说,如果您引用其中一个表中不存在的列,则会出错。

Mysqldump 没有选择列子集的选项。


回复你的评论:

$ (mysqldump ...first... ; mysqldump ...second...) | gzip -c > dump.sql.gz

关于php - 将超大 MySQL 数据库中的特定表/列备份和压缩到不同的服务器上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23544098/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com