我想将AmazonMySQLRDS实例导出到我自己运行MySQL的服务器。我成功转储了数据库并在新数据库上重新创建了用户,但是当我导入转储文件时,我得到:ERROR1071(42000)atline25:Specifiedkeywastoolong;maxkeylengthis767bytes一些谷歌搜索显示InnoDB的最大key大小为767。事实证明我们在RDS中使用了以下选项:innodb_large_prefix=oninnodb_file_format=barracudainnodb_file_per_table=truelog_bin_trust_function_crea
这个问题在这里已经有了答案:9年前关闭。PossibleDuplicate:Speedingupmysqldumpsandimports这可能是一个愚蠢的问题,但我只是在观看有关MySQL复制的截屏视频,我了解到master数据库不会将SQL发送到从属数据库进行复制,它实际上以二进制形式发送数据,这使得导入速度非常快.我开始想,“如果一个数据库可以导出和导入二进制文件,为什么mysqldumps/imports需要这么长时间?”有没有办法让mysql以类似的方式以二进制形式转储数据库以加快该过程? 最佳答案 我相信就是这样mysql
如何将数据库中的每个表转储到具有该表名的单独文件中? 最佳答案 您可能需要查看以下文章中建议的shell脚本:HowdoIdumpalltablesinadatabaseintoseparatefiles?通过SunnyWalia脚本:#!/bin/bashdb=$1if["$db"=""];thenecho"Usage:$0db_name"exit1fimkdir$$cd$$clearfortablein`mysql$db-e'showtables'|egrep-v'Tables_in_'`;doecho"Dumping$tabl
MySQL数据库设置为Localhost:3307。我正在尝试使用mysqldump命令备份我同事的所有数据。我这样写命令行:mysqldump-uroot-h3307-pdatabase>"path_to_dumpfile\database.sql"。然后,系统提示我输入密码(当我打开工作台时不再询问)。问题是,我收到以下错误消息:“mysqldump:出现错误:2005:尝试连接时未知的mysql服务器主机‘3307’”我做错了什么吗?还是我没有遵循的步骤?感谢您的帮助。 最佳答案 尝试将--port=port_num添加到您的
我以某种方式在utf8中有一个phpnuke站点的转储文件。我正在尝试在新服务器上重新打开此站点。但是nuke使用latin1。我需要一种使用此utf-8转储文件创建latin1数据库的方法。我尝试了我能想到的一切。iconv,mysql替换,php替换... 最佳答案 在转储的开头添加SETNAMES'utf8';语句。这将向MySQL表明它即将接收的命令是UTF8格式的。它会将数据存储在您的表当前设置的任何字符集中;在这种情况下,如果您的数据库是latin1,则数据将存储在latin1。来自http://dev.mysql.co
只是想知道在实时数据库上运行mysqldump有什么风险?是否存在数据库损坏的可能性?mysqldump似乎锁定了整个数据库。 最佳答案 您的数据库表使用什么引擎?如果您使用的是事务表,您可以使用“单一事务”选项进行转储,这将以一致的状态转储您的表。如果您使用的是像MyISAM这样的非事务性表,那么您应该不会遇到任何数据库损坏问题。但是,如果您进入比赛场景,您可能会遇到数据不一致的问题。在任何一种情况下,发生转储时,您都将显着减慢数据库响应时间。最好的办法是针对从站运行转储,或者在运行转储之前等待站点处于静止状态。
我只需要恢复数据库中的一个表。我有一个.sql文件,其中包含一张表所需的所有信息,但其余信息会覆盖其他表的重要信息。而不是使用解决方案here-使用我从未听说过的工具,我认为手动完成它会更有把握。不幸的是,MySqlDump生成的GIANT插入行太长,无法粘贴到mysql命令行中...我该怎么办?我应该像上面的链接描述的那样使用sed吗?或者我可以从mysqldump.sql复制粘贴该特定表的命令到一个新的.sql文件中,然后调用:mysql-uroot-p-hlocalhost 最佳答案 你可以试试mysql-uroot-pdat
特别是如果我使用的是GitHub?如果不是,我(或者其他人)应该使用这样的工具吗? 最佳答案 添加一个脚本,将sql文件转储到项目特定的某个位置(但在项目目录内)。mysqldump-uroot-pmy_db>my_project/my_db.sql它是突出的文本,所以git会像其他任何文件一样选择更改后的文件。那么就gitaddmy_db.sqlgitcommit-m"theschemachanged"gitpushmy_projectgithubmaster您可以考虑以下几点:将转储文件放在github上或将其添加到存储库中意味
我正在研究在提交更改之前使用git预提交Hook导出MySQL数据库模式,以便其他开发人员可以使用git存储库中的SQL脚本更新他们自己的数据库。默认情况下,mysqldump(我正在使用--no-data)将在重建它们之前删除现有表,这不是我想要的。我想知道是否有人知道一种方法来执行mysqldump或类似的方法来用SQL描述数据库模式以更新表(如果它们存在)而不是删除和重建。我意识到这可能是一个远景,但如果有人能指出我正确的方向,那就太好了。 最佳答案 MySQL怎么知道要更新什么?它不知道其他人的数据库将处于什么状态,所以它不
我有一个相当大的db(2TB),我希望逐步转储(范围转储或其他)。是否可以使用mysqldump来完成?如果没有,我应该使用什么? 最佳答案 mysqldump将允许您使用--databases和--tables选项单独转储“数据库”或表。您可以使用将从TABLES中获取表名的脚本在INFORMATION_SCHEMA中并在调用mysqldump时提供这些参数。要指定行的范围,对于部分表转储,请使用--where选项。--lock-tables/--single-transaction选项可用于在转储时阻止对表的更改。请查阅手册,因