多年来,我一直在使用mysqldump,没有太多的麻烦。最近,我加入了一个使用"MySQL转储10.14远程5.5.52-MariaDB,routines (x86_64)“的项目,当我试图进行转储时,它包含所有create语句,以及如果我包含-例程的例程,但是it不包含任何数据。文件中根本没有INSERT语句。
我在这个DBMS实例中尝试了多个数据库,并且尝试使用了几个不同的用户帐户,包括root。我已经检查了我使用的用户是否可以访问这些数据,如果我从这些用户名直接登录到mysql,我可以浏览这些数据。
我一直无法在网上找到任何帮助信息,因为所有的帖子似乎都假设插入数据就在那里(我认为这是对的)。有人以前见过这样的东西吗,或者说我可能会尝试获得真正的数据库备份呢?
我认识到这是一个非常古老的MariaDB版本,我是这个团队的新手,我愿意更新它,但直到我知道数据在某个地方成功备份之后才会更新。
提前谢谢你的帮助,这真的让我很困惑。
我想做的是:
/usr/bin/mysqldump -u root -p --all-databases > dbbackup-dump-$(date +\%Y-\%m-\%d).sql
/usr/bin/mysqldump -u root -p -d databasename > dbbackup-dump-$(date +\%Y-\%m-\%d).sql
发布于 2019-09-24 14:13:31
答案很简单。-d
代表无数据!
下面是MariaDB文档:
不要写入任何表行信息(即,不要转储表内容)。如果只想转储表的CREATE语句(例如,通过加载转储文件来创建表的空副本),这是非常有用的。
只要摆脱-d
,你就可以走了。
让我解释一下你为什么看到你看到的,
--databases
时,将在每个命名数据库的所有INSERT INTO
语句之前添加行USE databasename;
。(请查阅MySQL文档--databases
)--all-databases
时,USE databasename;
行在MySQL实例中的每个给定数据库的所有INSERT INTO
s之前添加(请查看MySQL文档--all-databases
)-d
时,您告诉mysqldump不要转储数据,不管您是否命名了一个数据库。即使您使用--database
或all-databases
,也不会出现任何数据。(请查看MySQL文档--no-data
)发布于 2019-09-24 14:13:23
在发布我的问题之前,我做了一些进一步的调整,看看哪里可能出现了问题。我可能无意中找到了答案。所以我发布了这个问题,我将在这里发布一个潜在的答案,希望它能帮助下一个人。
我认为第二行中的-d选项是数据库的缩写,但它似乎做了其他的事情。我在docs (https://mariadb.com/kb/en/library/mysqldump/)中没有看到它,但是当我将其更改为-数据库时,我开始使用INSERT INSERT语句获得结果。
因此,与其:
/usr/bin/mysqldump -u root -p -d databasename > dbbackup-dump-$(date +\%Y-\%m-\%d).sql
使用:
/usr/bin/mysqldump -u root -p --databases databasename > dbbackup-dump-$(date +\%Y-\%m-\%d).sql
或者(根本不命名选项):
/usr/bin/mysqldump -u root -p databasename > dbbackup-dump-$(date +\%Y-\%m-\%d).sql
https://dba.stackexchange.com/questions/249492
复制相似问题