mysql数据库--逻辑备份

逻辑备份

备份的是建表、建库、插入等操作所执行SQL语句,适用于中小型数据库,效率相对较低。

本质:导出的是SQL语句文件

优点:不论是什么存储引擎,都可以用mysqldump备成SQL语句

缺点:速度较慢,导入时可能会出现格式不兼容的突发情况,无法做增量备份和累计增量备份。

提供三种级别的备份,表级,库级和全库级

逻辑备份: 备份的是建表、建库、插入等操作所执行SQL语句(DDL DML DCL),适用于中小型数据库,效率相对较低。

本身为客户端工具:
远程备份语法:  mysqldump  -h 服务器  -u用户名  -p密码   数据库名  > 备份文件.sql
本地备份语法:  mysqldump  -u用户名  -p密码   数据库名  > 备份文件.sql

常用备份选项

-A, --all-databases 备份所有库

-B, –databases bbs test mysql 备份多个数据库

–no-data,-d 不导出任何数据,只导出数据库表结构。

备份表

语法:mysqldump -u root -p1 db1 t1 > /db1.t1.bak
mysqldump -u 用户 -p 密码 数据库名 表名 > 需要备份到的路径/文件

[root@mysql-server ~]# mkdir /home/back  #创建备份目录
# 将school数据库的employee5表备份到/home/back/下,命名为school.employee5.bak
[root@mysql-server ~]# mysqldump -uroot -p'Qwer@123' school employee5 > /home/back/school.employee5.bak
mysqldump: [Warning] Using a password on the command line interface can be insecure.

备份多个表

语法:mysqldump -u root -p1 db1 t1 t2 > /db1.t1_t2.bak

[root@mysql-server ~]# mysqldump -uroot -p'Qwer@123' school new_t1 new_t2  > /home/back/school.new_t1_t2.bak

备份库

备份一个库:相当于将这个库里面的所有表全部备份。
语法: mysqldump -u root -p1 db1 > /db1.bak

[root@mysql-server ~]# mysqldump -uroot -p'Qwer@123' school > /home/back/school.bak

备份多个库(-B)

语法:mysqldump -u root -p1 -B db1 db2 db3 > /db123.bak
mysqldump -u 用户 -p 密码 -B 数据库1 数据库2 数据库3 … > 备份位置目录/文件

[root@mysql-server ~]# mysqldump -uroot -p'Qwer@123' -B school testdb > /home/back/school_testdb.bak

备份所有的库

语法: mysqldump -u root -p1 -A > /alldb.bak

[root@mysql-server ~]# mysqldump -uroot -p'Qwer@123' -A > /home/back/allbase.bak

恢复库

-- 下面我们演示如何恢复数据库
-- 先把school数据库删掉
mysql> drop database school;
mysql> show databases; --查看库已经没有了
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |                    
+--------------------+
6 rows in set (0.00 sec)
-- 我们开始恢复数据库
-- 登陆mysql创建一个库
mysql> create database school;
-- 恢复:
-- 将备份的数据库school.bak恢复到school数据库下
[root@mysql-server ~]# mysql -uroot -p'Qwer@123' school < /home/back/school.bak
-- 进入mysql查看,school已经存在了
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |            
| school             |        
+--------------------+
6 rows in set (0.00 sec)

恢复表

-- 登陆到刚才恢复的库中将其中的一个表删除掉
mysql> use school;
mysql> drop table employee5;
-- 两种方法
开始恢复:
mysql> set sql_log_bin=0;   -- 停止binlog日志(可选)
Query OK, 0 rows affected (0.00 sec)
mysql> source /home/back/school.employee5.bak;  -------加路径和备份的文件 

恢复方式二:
[root@mysql-server ~]# mysql -u root -p1  db1  < db1.t1.bak
                                          库名    备份的表文件路径

备份及恢复表结构

备份表结构:

语法:mysqldump -uroot -p123456 -d databasename tablename > dump.sql
mysqldump -uroot -p123456 -d 数据库名 表名 > 备份的文件路径

# -d只备份表结构
[root@mysql-server ~]# mysqldump -uroot -p'Qwer@123' -d school employee5 > /home/back/emp.bak
恢复表结构
-- 恢复表结构:
-- 登陆数据库创建一个库
mysql> create database t1;
语法:# mysql -u root -p1 -D db1  < db1.t1.bak
[root@mysql-server ~]# mysql -uroot -p'Qwer@123' -D t1 < /home/back/emp.bak

你可能感兴趣的:(数据库,mysql,linux)