(一)mysqldump介绍

mysqldump是MySQL自带的逻辑备份工具,类似于Oracle的expdp/impdp,mysqldump备份十分灵活,可以在以下级别对数据库进行备份:

  • 实例下的所有数据库
  • 某个或某几个数据库
  • 某个数据库中的表
  • 某个数据库中的表的某些记录

mysqldump的备份结果集有两种文件:一种是将数据转换为标准的SQL语句,另一种是按照指定的分隔符,输出为特定格式的平面文件。

(二)mysqldump的用法

可以直接使用mysqldump命令查看mysqldump的用法

[root@mysqlserver ~]# mysqldump
Usage: mysqldump [OPTIONS] database [tables]
OR mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...]
OR mysqldump [OPTIONS] --all-databases [OPTIONS]
For more options, use mysqldump --help

mysqldump参数众多,如果要查看所有参数信息,可以使用命令:

[root@mysqlserver ~]# mysqldump --help
mysqldump Ver 10.13 Distrib 5.7., for el7 (x86_64)
...

(三)mysqldump参数

mysqldump参数众多,常用参数如下:

类型 参数 作用
帮助参数 -? [--help] 显示帮助信息
连接参数 -u  [--user] 指定连接的数据库用户
  -p  [--password] 指定用户的密码
  -S  [--socket] 指定socket文件连接数据库,只能用于本地连接
  -h  [--host] 指定要连接的主机名称或者IP
  -P  [--port] 指定连接数据库的端口
字符集参数 --default-character-set 字符集参数,默认字符集utf-8
导出数据控制参数 -A  [--all-databases] 导出所有数据库
  -B  [--databases] 导出指定的某个或某几个数据库
  --tables 参数值的格式为“db_name table_name”
  -w [--where] 导出符合条件的数据
  -n [--no-create-db] 不生成建库的脚本,即使指定--all-databases或--databases参数
  --ignore-table 指定表不导出,参数值格式为“--ignore-table=db_name.table_name”,每次只能指定一个值,如果要指定多个值,需多次使用--ignore-table参数
  -d  [--no-data] 只导出表结构,不导行数据
  -t  [--no-create-info] 只导行数据,不导表结构
锁控制参数 -l   [--lock-tables] 对象在导出期间,会锁定该对象,此时其它会话无法对该表执行写入操作,默认启用
  --single-transaction

在导出数据时会创建一致性的快照,在保证保证数据导出一致性的情况下,还不会阻塞其它会话的读写操作。
但会影响alter table、drop table、rename table、truncate table等DDL语句

该参数会创建一致性的备份,是十分重要的参数。备份的是在执行mysqldump这一时刻的数据库的状态,后续数据库变化不会备份

 其它参数 --force 在导出导入过程中,如果遇到错误,继续执行
  --master-data 这将导致二进制日志位置和文件名附加到输出文件中。如果等于1,则将其作为更改主命令打印;如果等于2,则将其作为注释打印。此选项将启用--lock-all-tables,除非也指定了--single-transaction(在这种情况下,全局读取锁定只在转储开始时占用很短的时间)。在任何情况下,日志上的任何操作都将在转储的确切时刻发生。选项自动关闭锁定表。

(四)备份样例

初始数据库信息:

mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
| testdb |
+--------------------+

(4.1)执行全库备份

mysqldump -uroot -p123456 -h192.168.10. -P3306 --all-databases --single-transaction --force > all_db.sql

注:information_schema是特殊的数据库,即使全备,也不会备份该数据库。

(4.2)备份多个数据库

# 备份多个数据库:mysql和testdb
mysqldump -uroot -p123456 -h192.168.10. -P3306 --databases mysql testdb --single-transaction --force > multi_db.sql

(4.3)备份单个数据库

根据是否使用“--databases”参数,单个数据库的备份有2种方法。

#方法1:备份单个数据库:testdb,使用--

databases参数
mysqldump -uroot -p123456 -h192.168.10. -P3306 --databases testdb --single-transaction --force > testdb_method1.sql # 方法2:备份单个数据库:testdb,不使用

--

databases参数
mysqldump -uroot -p123456 -h192.168.10. -P3306 testdb --single-transaction --force > testdb_method2.sql

两者的区别在于添加“--database”参数,则会在导出语句中包含建库语句。

[root@mysqlserver mysqlbackup]# cat testdb_method1.sql |grep "CREATE DATABASE"
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `testdb` /*!40100 DEFAULT CHARACTER SET utf8 */; [root@mysqlserver mysqlbackup]# cat testdb_method2.sql |grep "CREATE DATABASE"

(4.4)导出数据库的某些表

# 导出testdb的表test01,test02,目前来看,只能针对单个数据库的表进行导出
mysqldump -uroot -p123456 -h192.168.10. -P3306 --tables testdb test01 test02 --single-transaction --force > tables.sql

(五)还原样例

还原操作相对来说较为简单,直接执行.sql文件即可。

(5.1)执行全库还原,发现sys,和performance_schema没还原

删除全部数据库

mysql> show databases ;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
| testdb |
+--------------------+
5 rows in set (0.02 sec) mysql> drop database mysql;
Query OK, 31 rows affected (0.02 sec) mysql> drop database performance_schema;
Query OK, 87 rows affected (0.01 sec) mysql> drop database sys;
Query OK, 101 rows affected (0.10 sec) mysql> drop database testdb;
Query OK, 3 rows affected (0.01 sec)

执行还原操作

[root@mysqlserver mysqlbackup]# mysql -uroot -p123456 -h192.168.10. -P3306 < all_db.sql

查看还原结果:

mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| testdb |
+--------------------+

(2)执行testdb数据库还原

对于使用“--databses”参数创建的备份,直接执行sql语句,如果没有testdb数据库,则自动创建testdb数据库,再导入数据,如果有testdb数据库,则直接导入数据

mysql> drop database testdb;
Query OK, 3 rows affected (0.02 sec) mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
+--------------------+
2 rows in set (0.03 sec) # 恢复数据
[root@mysqlserver mysqlbackup]# mysql -uroot -p123456 -h192.168.10.15 -P3306 < testdb_method1.sql
mysql: [Warning] Using a password on the command line interface can be insecure. mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| testdb |
+--------------------+
3 rows in set (0.03 sec)

对于没有使用“--databases”参数创建的备份,必须先创建数据库,再执行导入,导入时须指定数据库名称。

# 如果没有创建数据库 或者 不指定数据库名称,则还原报错
[root@mysqlserver mysqlbackup]# mysql -uroot -p123456 -h192.168.10. -P3306 < testdb_method2.sql
mysql: [Warning] Using a password on the command line interface can be insecure.
ERROR (3D000) at line : No database selected # 指定数据库名称,还原正常
[root@mysqlserver mysqlbackup]# mysql -uroot -p123456 -h192.168.10. -P3306 testdb< testdb_method2.sql
mysql: [Warning] Using a password on the command line interface can be insecure.

【完】

mysql逻辑备份与还原工具mysqldump的更多相关文章

  1. mysql多线程备份与还原工具mydumper

    (一)mydumper介绍 之前我们已经学过如何使用mysqldump备份恢复数据库:<mysql逻辑备份与还原工具mysqldump>,就目前来说,mysqldump是使用最广泛的MyS ...

  2. (4.12)mysql备份还原——mysql逻辑备份之mysqldump

    关键词:mysql逻辑备份介绍,mysqldump,mysqldump最佳实践 我的相关文章:https://www.cnblogs.com/gered/p/9721696.html 正文 1.mys ...

  3. MySQL 逻辑备份工具

    简介: Mydumper.Myloader 是一个第三方的.开源的 MySQL 逻辑备份工具. 支持多线程,比起 mysqldump 要快很多,也能解决 innobackupex 备份工具对 MyIS ...

  4. day 50 MySQL数据备份与还原(mysqldump)

      MySQL数据备份与还原(mysqldump)   一 mysqldump指令实现数据备份.mysql指令实现数据还原 经常有朋友问我,DBA到底是做什么的,百科上说:数据库管理员(Databas ...

  5. MySQL的备份和还原

    MySQL的备份和还原 备份:副本    RAID1,RAID10:保证硬件损坏而不会业务中止:        DROP TABLE mydb.tb1; 备份类型:        热备份.温备份和冷备 ...

  6. mysql数据库-备份与还原实操

    目录 备份工具 1 基于 LVM 的快照备份(几乎热备) 2 数据库冷备份和还原 3 mysqldump备份工具 3.1 实战备份策略 3.1.1 全备份 3.1.2 分库分表备份 3.2 mysql ...

  7. 图解MySQL逻辑备份的实现流程

    1. 摘要 数据作为一家公司的重要资产,其重要程度不言而喻.数据库为数据提供存取服务,担任着重要的角色,如果因数据误删.服务器故障.病毒入侵等原因导致数据丢失或服务不可用,会对公司造成重大损失,所以数 ...

  8. 转 MySQL 数据备份与还原

    MySQL 数据备份与还原 原贴:http://www.cnblogs.com/kissdodog/p/4174421.html   一.数据备份 1.使用mysqldump命令备份 mysqldum ...

  9. MYSQL数据备份与还原学习笔记

    数据备份与还原   1.mysqldump 1.1 文件地址: E:\xampp\mysql\bin 文件名:mysqldump.exe CMD下进入mysqldump.exe cd E:\xampp ...

随机推荐

  1. 何时使用异步或同步AJAX

    通常最好使用异步调用 通过优锐课核心java学习笔记中,我们可以看到,码了很多专业的相关知识, 分享给大家参考学习. AJAX代表异步JavaScript和XML,是一项允许异步更新网页的技术,这意味 ...

  2. Github上优秀的.NET Core项目

    Github上优秀的.NET Core开源项目的集合.内容包括:库.工具.框架.模板引擎.身份认证.数据库.ORM框架.图片处理.文本处理.机器学习.日志.代码分析.教程等. Github地址:htt ...

  3. BigDecimal精确计算工具类

    前言 在实际开发中,遇到例如货币,统计等商业计算的时候,一般需要采用java.math.BigDecimal类来进行精确计算.而这类操作通常都是可预知的,也就是通用的.所以,写了个工具类来方便以后的工 ...

  4. jquery ajax简单书写

    占时无法显示该内容,请稍后再试 $.ajax({ url:"http://v.juhe.cn/weather/index", data:{cityname:"苏州&quo ...

  5. oracle分组后取最新的记录

    使用Group By来实现取最新记录,需要注意一个问题,如果最大时间相同的数据都会被取出来. PS:即使数据字段类型是timestamp,也会登录相同的时间的数据. select A.* from A ...

  6. CF round 623 Div.1D Tourism 题解

    题目链接:https://codeforces.com/contest/1314/problem/D 大意: \(n\) 个顶点的有向图,顶点编号为 \(1\) 到 \(n\),任意两个不同的顶点 \ ...

  7. P1149 火柴棒等式(打表初尝试)

    题目描述 给你 n 根火柴棍,你可以拼出多少个形如 “A+B=CA+B=C” 的等式?等式中的 A.B.C 是用火柴棍拼出的整数(若该数非零,则最高位不能是 0).用火柴棍拼数字 0−9 的拼法如图所 ...

  8. vue-infinite-loading 过滤器tab正确使用

    业务逻辑涉及loadmore,filter和tab切换,框架是vue,使用vue-infinite-loading中的一点经历. identifier 一开始并没有重视这个参数,只是他的官网说iden ...

  9. 如何将博客搬至CSDN

    简单聊下对于博客园的印象是技术改变世界,作为一个IT技术人员很乐意把这里当作自己的网上家园,每天在这里分享着精彩的原创内容,看重的不是华丽的外表.诱人的虚名,而是纯净.专注.对技术人员的理解. CSD ...

  10. 移动端display:flex

    移动端display:flex布局时候,子元素有背景颜色时候,背景颜色不能铺满,有缝隙, // less .t-flex { background: blue; display: flex; > ...