gpt4 book ai didi

mysql - 如何迁移远程服务器有严格限制的大型 mysql 数据库?

转载 作者:行者123 更新时间:2023-11-29 12:39:27 25 4
gpt4 key购买 nike

我有一个大约 1GB 的本地数据库,我的远程主机是一个免费主机,我用它来进行测试。在花钱购买付费主机之前,我想确保一切正常。问题是远程服务器上的 phpmyadmin 只允许 50mb 文件,这并不能减少文件大小,特别是由于执行时间限制,恢复通常会失败。以下是我尝试过的所有内容的列表。

本地

phpmyadmin -----> 由于数据库剪切大小而修改了 php.ini 设置,由于超时,表备份不再起作用

mysqldumper -----> 程序创建带有插入的转储,我没有选项让它创建插入忽略。我稍后会在下面解释这个问题。

mysqlworkbench -----> 使用本地服务器的数据库名称创建数据库(问题是我的远程服务器有不同的数据库名称,我无法打开 1gb .sql 文件来编辑数据库名称位于最顶部。计算机突然崩溃,我必须强制退出工作台)

sqlsplitter(mac 程序)分割大型 .sql 或 .sql.gz 文件

远程

phpmyadmin 将 .gz/.sql 文件分割成 20mb block -----> 超时。 phpmyadmin 恢复功能也不起作用。它只是覆盖旧数据

mysqldumper -----> 在使用本地计算机上使用 mysqldumper 创建的备份(单个文件或多部分,两者都不起作用)在远程服务器上进行恢复时,进程随机中途出现错误)。可能完成 10%,也可能完成 50%。

bigdump -----> 使用来自 mysqldumper 的单部分和多部分转储,同样的问题。中途突然退出。一些多部分成功完成,但是当其中一个失败并且我再次尝试失败的部分时,它会给我一个错误,指出表中已存在唯一键。我不想取消设置所有独特的关键内容,并且必须稍后检查并删除所有重复项。

mysqldumper -----> 不适用于 mysqlworkbench 的转储

bigdump -----> 给我一个错误 sql 错误被拒绝使用 mysqlworkbench 的转储创建数据库(我无法打开 1 GB 文件来删除显示创建数据库的 1 行)

有人知道上传到我的主机的更好方法吗?我在那里没有命令行访问权限,只有 500mb 空间限制(尽管 SQL 空间没有限制)。

谢谢

最佳答案

使用mysqldump。找出您看到的错误是什么,然后修复它。 mysqldump 实用程序可以工作。我已将包含数百 GB 数据的转储文件恢复到服务器,并且从未使用任何其他内容。如果它对您不起作用,那么您就做错了。

您可以通过使用数据库名称作为最后一个参数调用它来阻止它在文件顶部写入 USE database-name; 语句,无需使用前面的 --databases 选项。

您可以添加 --insert-ignore 命令行选项,将所有 INSERT 语句编写为 INSERT IGNORE 来解决您的部分问题插入问题

您可以使用 --no-data 提取包含表定义(而不是数据)的转储文件,并首先获取声明的所有表。

您可以使用 --no-create-info 选项提取仅包含插入内容而不包含表定义的转储文件。

http://dev.mysql.com/doc/refman/5.6/en/mysqldump.html

您还可以使用简单的 bash 循环将每个表提取到其自己的文件中,这样您就可以使用较小的文件:

for TABLE in `mysql [args] -e 'show tables in database-name'`; do mysqldump [args] database-name $TABLE > $TABLE.sql; done

恢复文件时,将 --compress 选项添加到 mysql 命令行参数中以加快传输速度,并将您的(新)数据库名称指定为最后一个参数,因此客户端将在应用文件之前使用正确的数据库,该文件不再包含数据库名称。

关于mysql - 如何迁移远程服务器有严格限制的大型 mysql 数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26319781/

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