逻辑备份: 备份的是建表、建库、插入等操作所执行SQL语句(DDL DML DCL),适用于中小型数据库,效率相对较低。
语法:
本身为客户端工具:
远程备份语法: # mysqldump -h 服务器 -u用户名 -p密码 数据库名 > 备份文件.sql
本地备份语法: # mysqldump -u用户名 -p密码 数据库名 > 备份文件.sql
常用备份选项
***-A, --all-databases***
备份所有库
#mysqldump -uroot -p'QianFeng@123' -A > /opt/a.sql
解析:-A后面不需要指定东西,直接备份整个库
**-B**, **--databases bbs test mysql**
备份多个数据库
# mysqldump -uroot -p'QianFeng@123' -B db1 db2 db3 > /opt/a.sql
解析:-B 后面可以跟多个数据库,使用空格隔开
**导出指定表**
#mysqldump -uroot -p'QianFeng@123' db1 table1 table2 > /opt/a.sql
解析:如果不加-B,后面默认是 `库名 表名 表名` ,后面的表必须是前面的库里面的,库名是唯一的,但是表名不是。
**--no-data,-d**
不导出任何数据,只导出数据库表结构。
#mysqldump -uroot -p'QianFeng@123' db1 -d > /opt/a.sql
解析:-d 前面需要指定好我们要备份什么数据,-d指的是只导出表的结构。
备份库和恢复数据库
备份整个数据库:
语法: # mysqldump -u root -p‘密码’ -A >lining.sqsl(自定义的文件)
备份表:
语法: # mysqldump -u root -p‘密码’ -B 库名 库名 >lining.sql 备份多个数据库 -B 后面可以跟多个数据库,使用空格隔开
备份某个库中某个表
语法: # mysqldump -u root -p‘密码’ -B t1(库名) db1(表名)>lining.sql 备份t1库里的db1表
备份表结构
语法: #mysqldump -u root -p ‘密码’ -d >lining.sql 备份表结构,前面可以跟表名
恢复数据库:
语法: #mysql -uroot -p ‘密码’ <lining.sql
# mysql -u root -p '密码' lining <lining.sql 那lining.sql恢复到lining库里面
语法: #进入到数据库里面 source lining.sql(备份的名字)
在数据库里面导入导出
首先修改 vim /etc/my.conf
在[mysqld]里追加
secure_file_priv=/sql(#路径自定义)
导出数据:
语法: # select * from t3 into outfile '/sql/test.t3.sql(自定义的路径)' fields terminated by ',' lines terminated by '\n';
# select * from 表名 into outfile ‘路径(默认为var /lib/mysql-files)’ 字段分隔符(选填)记录分隔符(选填) 只备份表数据,不导出表结构
导入数据:
语法: # load data infile '/sql/test.t3.bak(路径)' into table t3(表名);
: # load data infile ‘/sql/test.t3.bak(路径)’ into table t3(表名);