格式为:
mysqldump -u用户名 -p密码 数据库名 表名 --where="筛选条件" > 导出文件路径
下面按不同场景分别说明:
导出:
导整个库(表结构和数据): mysqldump -hxx -uxx -pxx db_name > db_name.sql
导整个库(仅表结构): mysqldump -hxx -uxx -pxx-ddb_name > db_name.sql
导整个库(仅数据): mysqldump -hxx -uxx -pxx -t db_name > db_name.sql
导库中表(表结构和数据): mysqldump -hxx -uxx -pxx db_nametable_name> db_name-table_name.sql
导库中表(仅表结构): mysqldump -hxx -uxx -pxx -d db_name table_name> db_name-table_name.sql
导库中多个表(表结构和数据): mysqldump -hxx -uxx -pxx db_name table_name1 table_name2 table_namex > db_name-table_namex.sql
导库中多个表(仅表结构): mysqldump -hxx -uxx -pxx -d db_nametable_name1 table_name2 table_namex > db_name-table_name.sql
如果报错:mysqldump: Got error: 1044: Access denied for user 'xxx'@'10.%.%.%' to database 'xxx' when using LOCK TABLES,
可加上不锁表的参数 --skip-lock-tables
where 条件仅对单表起作用,如 --where="Column_a='abc' and Column_b<100"
导入:
因为mysqldump导出的是完整的sql语句,所以用mysql客户端很容易就可以把数据导入了,如
mysql -hxx -uxx -pxx db_name < db_name.sql
或登录进数据库后 show databases; use db_x; source path_to_xx.sql
Mysql Workbench 导出过程中遇到的问题及解决方法:
1. mysqldump: [ERROR] unknown variable 'delayed-insert=FALSE'
原因: Mysql Workbench 6.0以后的版本中会报这个错,可能是兼容性问题。这个变量'delayed-insert=FALSE'不被识别,workbench默认配置中会开启,且默认值是false。我们使用不到这具变量,可以在配置文件中注掉这个变量来解决。
解决方法:
- 找到配置文件目录:
__InstallPath__/modules
- 打开python格式的输出配置文件:
wb_admin_export_options.py
- 找到所在行:
"delayed-insert":["Write INSERT DELAYED statements rather than ...
- 在行开头插入
#
号注释改行 - 保存文件,重启Workbench
Ubuntu中路径:/usr/lib/mysql-workbench/modules/wb_admin_export_options.py
2. mysqldump: Got error: 1045: Access denied for user 'xxx'@'10.xx.xx.xx' (using password: NO) when trying to connect
原因:锁表失败
解决办法:同命令行中加--skip-lock-tables选项,workbench中打开数据导出右上角的"高级选项",不勾选“loxk-tables -- Lock tables for read. Disable if user has no LOCK TABLES privilege”
3. "Not enough memory to allocate insert buffer of size 1073741824
可能是配置项不合适,导致内存不足,这里有个公式参考https://stackoverflow.com/questions/24501432/migration-issues-ms-sql-mysql-insert-buffer-memory,但调整参数好像也没把问题解决。换了个workbench版本(先前是6.3.5 32bit,换成6.3.6 64bit),居然没再出现这个问题了,可能是workbench的bug或workbench与mysql 5.5兼容性的问题所致。
注: SHOW VARIABLES LIKE ‘%buffer%’ 各个带buffer的配置项值