天天看点

mysqldump备份所有数据库,恢复单个库的场景预演

场景:创建两个数据库,每个数据库创建几张表。导出全数据库的备份,导入一个数据库的方式:

---------------------------------------数据的demo--------------------------------------------------

create database zsddb;

use zsddb;

create table t1(id int(10));

create table t2(id int(10));

INSERT INTO t1 (id) VALUES (2);

INSERT INTO t2 (id) VALUES (2);

create database hdoa;

use hdoa;

create table hd1(id int(10));

create table hd2(id int(10));

INSERT INTO hd1 (id) VALUES (2);

INSERT INTO hd2 (id) VALUES (2);

create table hd3(username varchar(10));

INSERT INTO hd3 (username) VALUES ('张');

------------------------------------数据的备份导出---------------------------------------------------

/arp/mysql/bin/mysqldump 的命令详解如下:

介绍上述的命令:

--all-databases, -A   :导出所有数据库

--routines, -R        :导出存储过程和函数

--extended-insert, -e :导出的insert语句使用multiple-row的语法方式,记录多个值。保证较小的dump文件,和导入的时候速度更快。

--single-transaction  :对于innodb引擎来说,导出会建立一次性的快照。保证导出操作放在同一个事务里面。

--force, -f           :即使遇到SQL错误,也强制导出dump文件

--lock-all-tables, -x :把整个数据库进行锁表操作,在整个导出的过程中会获取一个全局读锁,这个选线会自动

                       关闭 --single-transaction和 --lock-tables选项

--databases, -B       :导出多个数据库

--default-character-set=utf8 :设置导出默认字符集为xxx,这里是utf8

有上述命令解释,写出属于自己风格的mysqldump命令,如下所示:

/arp/mysql/bin/mysqldump -usystem -parpc7101 -S /arp/mysql/data/3306/mysql.sock -A -R -f -x -e | gzip >/arp/mysql/backup/mysql_full_backup_2016_1_11_1648.sql.gz

----------------------------------数据的导入操作-----------------------------------------------------

/arp/mysql/bin/mysql  的命令详解如下:

--one-database, -o   : 只导入一个所需的那个数据库,其他语句忽视。

前提:经测试,必须有此数据库才行:如下

##进入数据库

mysql -usystem -parpc7101

##创建所需数据库

(system@localhost) [(none)]> create database hdoa;

##导入数据库操作

mysql -usystem  -p hdoa -o