Mysql备份和还原
备份
命令行下具体用法如下:
mysqldump -u user_name -p database_name table_name> file_name.sql;
一些常用的参数:
参数 缩写 含义
–all-databases -A 导出全部数据库
–no-data -d 不导出任何数据,只导出数据库表结构
–add-drop-database 每个数据库创建之前添加drop数据库语句
–add-drop-table 每个数据表创建之前添加drop数据表语句。(默认为打开状态,使用–skip-add-drop-table取消选项)
–default-character-set 设置默认字符集,默认值为utf8
–flush-privileges 在导出mysql数据库之后,发出一条FLUSH PRIVILEGES 语句。为了正确恢复,该选项应该用于导出mysql数据库和依赖mysql数据库数据的任何时候
–force 在导出过程中忽略出现的SQL错误
–host -h 需要导出的主机信息,如-ht=localhost
–ignore-table 不导出指定表。指定忽略多个表时,需要重复多次,每次一个表。每个表必须同时指定数据库和表名。例如:–ignore-table=database.table1 –ignore-table=database.table2 ……
–no-create-db -n 只导出数据,而不添加CREATE DATABASE 语句
–no-create-info -t 只导出数据,而不添加CREATE TABLE 语句。
–triggers 导出触发器。该选项默认启用,用–skip-triggers禁用它。
–single-transaction 该选项在导出数据之前提交一个BEGIN SQL语句,BEGIN 不会阻塞任何应用程序且能保证导出时数据库的一致性状态。它只适用于多版本存储引擎,仅InnoDB。本选项和–lock-tables 选项是互斥的,因为LOCK TABLES 会使任何挂起的事务隐含提交。要想导出大表的话,应结合使用–quick 选项。
–quick -q 不缓冲查询,直接导出到标准输出。默认为打开状态,使用–skip-quick取消该选项
–routines -R 导出存储过程以及自定义函数
–add-locks 在每个表导出之前增加LOCK TABLES并且之后UNLOCK TABLE。(默认为打开状态,使用–skip-add-locks取消选项)
–opt 等同于–add-drop-table, –add-locks, –create-options, –quick, –extended-insert, –lock-tables, –set-charset, –disable-keys 该选项默认开启, 可以用–skip-opt禁用
–lock-all-tables -x 提交请求锁定所有数据库中的所有表,以保证数据的一致性。这是一个全局读锁,并且自动关闭–single-transaction 和–lock-tables 选项
需要注意的是--add-drop-table参数,其默认是打开状态,所以会在sql的开头添加一个drop语句,执行该sql文件的时候会先drop对应的表,如果原本表里有数据的话可能会造成数据丢失。
以下为一些实例:
导出数据库为dbname的表结构(其中用户名为root,密码为dbpasswd,生成的脚本名为db.sql)
mysqldump -uroot -pdbpasswd -d dbname >db.sql;
导出数据库为dbname某张表(test)结构
mysqldump -uroot -pdbpasswd -d dbname test>db.sql;
导出数据库为dbname所有表结构及表数据(不加-d)
mysqldump -uroot -pdbpasswd dbname >db.sql;
导出数据库为dbname某张表(test)结构及表数据(不加-d)
mysqldump -uroot -pdbpasswd dbname test>db.sql;
还原
用 mysqldump 备份出来的文件是一个可以直接倒入的 SQL 脚本,有两种方法可以将数据导入。
直接用 mysql 客户端
例如:
mysql -u xxxx -p xxxx db_name < db_name.sql
用 SOURCE 语法
其实这不是标准的 SQL 语法,而是 mysql 客户端提供的功能,登入mysql之后:
use database_name;
SOURCE /tmp/db_name.sql;
这里需要指定文件的绝对路径,并且必须是 mysqld 运行用户(例如 nobody)有权限读取的文件。
云服务器爆款直降90%
新客首单¥68起 | 人人可享99元套餐,续费同价 | u2a指定配置低至2.5折1年,立即选购享更多福利!