mysqldump是个单线程逻辑备份工具,将数据库备份成一个包含sql语句的文本文件,包含了建表和insert语句等。
如果数据量较大,使用mysqldump太慢。可以采用表文件迁移的方式;详见:MySql文件迁移
目录
一、单或多表
1、备份
命令:mysqldump -h [主机名] -P [端口号] -u [用户名] -p [数据库名称] [表名称] [表名称]> [备份文件保存地址]
例1:将数据库test中的user表备份:
/usr/local/mysql/bin/mysqldump -h 127.0.0.1 -P 3306 -u root -p test user > /data/DB_backup/test_user.sql
例2:将数据库test中的user表和role表备份:
/usr/local/mysql/bin/mysqldump -h 127.0.0.1 -P 3306 -u root -p test user role > /data/DB_backup/test_user_role.sql
2、还原
直接使用mysql的source命令即可;
切换到当前数据库:use test;
执行source命令还原:source /data/DB_backup/test_user.sql
二、单库
1、备份
命令:mysqldump -h [主机名] -P [端口号] -u [用户名] -p [数据库名称] > [备份文件保存地址]
例1:将数据库test备份:
/usr/local/mysql/bin/mysqldump -h 127.0.0.1 -P 3306 -u root -p test > /data/DB_backup/test.sql
2、还原
直接使用mysql的source命令即可;
切换到当前数据库:use test;
执行source命令还原:source /data/DB_backup/test.sql
三、多个数据库
1、备份
命令:mysqldump -h [主机名] -P [端口号] -u [用户名] -p --databases [数据库名称] [数据库名称]> [备份文件保存地址]
例1:将数据库test和test_new备份:
/usr/local/mysql/bin/mysqldump -h 127.0.0.1 -P 3306 -u root -p --databases test test_new> /data/DB_backup/test.sql
2、还原
直接使用mysql的source命令即可;
无需切换数据库,备份文件里面有建库sql语句。
执行source命令还原:source /data/DB_backup/test.sql
四、备份所有数据库
1、备份
命令:mysqldump -h [主机名] -P [端口号] -u [用户名] -p --databases [数据库名称] [数据库名称]> [备份文件保存地址]
例1:将数据库test和test_new备份:
/usr/local/mysql/bin/mysqldump -h 127.0.0.1 -P 3306 -u root -p --all-databases > /data/DB_backup/test.sql
2、还原
直接使用mysql的source命令即可;
无需切换数据库,备份文件里面有建库sql语句。
执行source命令还原:source /data/DB_backup/test.sql
五、mysqldump常用参数
参数 | 描述 |
---|---|
--all-databases | 导出全部数据库 |
-all-tablespaces | 导出全部表空间 |
--no-tablespaces | 不导出任何表空间信息 |
--no-data | 导出内容不包含数据 |
--no-create-db | 只导出数据,不添加CREATE DATABASE 语句 |
--add-drop-table | 导出内容在建表前面带上删表语句 |
--add-drop-database | 导出内容在建库前面带上删库语句 |
--routines 简写:-R | 导出存储过程以及自定义函数 |
--add-locks | 在每个表导出之前增加LOCK TABLES并且之后UNLOCK TABLE。(默认为打开状态,使用--skip-add-locks取消选项) |