请问有什么好方法快速而又完整的导出数据库?
1
march1993 2015-04-08 16:42:36 +08:00
你 mysqldump 命令怎么打的
|
3
xiaowu365 2015-04-08 16:56:22 +08:00
这不科学
|
4
Mac 2015-04-08 17:14:43 +08:00
mysql 的用户权限?你用的是root帐号?
|
5
cst4you 2015-04-08 17:40:09 +08:00
大的还是直接拷data目录吧...
|
6
caixiexin 2015-04-08 17:42:36 +08:00
你是在sqlfile文件里发现少了表,还是把sqlfile文件恢复到数据库里少了表呢。
前者的话,检查mysqldump时的日志看看,有没有报错? 如果是后者的话,可能是你两个mysql数据库版本不一样,有些create table语句的语法不支持,从另一个库恢复的时候,create table语句失败了,这个问题手动改下导出的sqlfile文件的建表语句能解决。 这是我dump时候的语句,一般把该加的参数都加上。 mysqldump -h localhost -uusername -ppwssword -P端口号 --master-data=2 --single-transaction --opt --routines --events --triggers database_name |
8
bjzhush 2015-04-08 17:53:19 +08:00
有些特殊字符或者二进制的内容在数据库里面,即使导出了也不能正确导入
|
11
kn007 2015-04-08 18:59:43 +08:00
|
12
kn007 2015-04-08 19:02:09 +08:00
另外我完整备份数据库的语句:
mysqldump -h localhost -uroot -proot --lock-all-tables --all-databases > ALLDB.sql |
13
killerv OP |
14
killerv OP @kn007 你这么做很严谨,我写的时候太随意了,估计有可能是这个问题,备份的时候不锁定表的话,无法保证数据库完整性,但是不至于出错吧?
|
16
kn007 2015-04-08 20:12:35 +08:00
@julyclyde 你是说innodb么?我换过几次VPS全部都是data直接过去,我不知道你怎么知道是我以为,而不是我去尝试后,得出来的结论。
我就是确认可以,才专门付费给dropbox去同步整个data目录到dropbox,每次我也是通过dropbox恢复下来的。 如果不行你首先要确认下你ibdata1等这些有没有复制到。 还有就是my.cnf的innodb_data_file_path要一致。我确实试了可以再说的。 我的mysql版本是5.6,从5.5到5.6我都是这样过来的。 如果是说这条语句: mysqldump -h localhost -uroot -proot --lock-all-tables --all-databases > ALLDB.sql 我自己也是试了可以的。 |
19
cloudzhou 2015-04-08 21:11:23 +08:00
这样严谨的做法当然要 lock table 的,在 lock 之后以及进行 flush cache,之后就是文件直接 sync 都是可以的
|
20
caola 2015-04-08 21:29:15 +08:00
我一般使用:
mysqldump --host=localhost --user=root --password=root --add-locks --add-drop-table --lock-tables --database my_data > my_data.sql |