mysql逻辑备份与还原工具mysqldump

(一)mysqldump介绍

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

  • 实例下的所有数据库

  • 某个或某几个数据库
  • 某个数据库中的表
  • 某个数据库中的表的某些记录

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

(二)mysqldump的用法

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

[[email protected] ~]# 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参数众多,如果要查看所有参数信息,可以使用命令:

[[email protected] ~]# mysqldump --help
mysqldump  Ver 10.13 Distrib 5.7.27, 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语句
  --force 在导出导入过程中,如果遇到错误,继续执行

(四)备份样例

初始数据库信息:

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

(4.1)执行全库备份

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

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

(4.2)备份多个数据库

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

(4.3)备份单个数据库

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

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

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

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

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

[[email protected] mysqlbackup]# cat testdb_method2.sql |grep "CREATE DATABASE"

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

# 导出testdb的表test01,test02,目前来看,只能针对单个数据库的表进行导出
mysqldump -uroot -p123456 -h192.168.10.15 -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)

执行还原操作

[[email protected] mysqlbackup]# mysql -uroot -p123456 -h192.168.10.15 -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)

# 恢复数据
[[email protected] 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”参数创建的备份,必须先创建数据库,再执行导入,导入时须指定数据库名称。

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

# 指定数据库名称,还原正常
[[email protected] mysqlbackup]# mysql -uroot -p123456 -h192.168.10.15 -P3306 testdb< testdb_method2.sql
mysql: [Warning] Using a password on the command line interface can be insecure.

【完】

原文地址:https://www.cnblogs.com/lijiaman/p/12219603.html

时间: 2024-11-05 17:32:04

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

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

关键词:mysql逻辑备份介绍,mysqldump 1.mysql逻辑备份介绍 [1.1]备份内容:数据库的结构定义语句+数据内容的插入语句,备份出来的文件可以编辑 [1.2]使用场景:数据量较少的库,比较适合100G数据量以内的 逻辑备份的特点 (1)sql语句组成的文件,可以编辑截取部分单独使用. (2)备份文件比物理文件小 (3)可以细化到表/表的内容 (4)速度慢 (5)可以跨平台恢复/迁移 2.逻辑备份工具 [1.1]mysqldump(单线程).mysqlpump(多线程,5.7以后

MySQL数据库备份与还原

备份数据库 1.使用mysqldump命令备份 备份一个数据库:mysqldump -u 用户名 -p密码 数据库名 [表名1,表名2...]>备份文件路径及名字.sql 如果没有表名,则备份整个数据库 eg: mysql -u root -p test studentinfo >D:\test.sql 备份多个数据库:mysqldump -u 用户名 -p --databases 数据库1,数据库2...  >  备份文件路径及名字.sql 备份所有数据库:mysqldump -u 用

MySQL 逻辑备份神器

简介: Mydumper.Myloader 是一个第三方的.开源的 MySQL 逻辑备份工具. 支持多线程,比起 mysqldump 要快很多,也能解决 innobackupex 备份工具对 MyISAM 引擎备份的不便. 多线程快速逻辑备份,支持快照功能. 下载地址:https://launchpad.net/mydumper/0.9/0.9.1/+download/mydumper-0.9.1.tar.gz 一.安装 Mydumper shell > yum -y install gcc g

转 MySQL 数据备份与还原

MySQL 数据备份与还原 原贴:http://www.cnblogs.com/kissdodog/p/4174421.html 一.数据备份 1.使用mysqldump命令备份 mysqldump命令将数据库中的数据备份成一个文本文件.表的结构和表中的数据将存储在生成的文本文件中. mysqldump命令的工作原理很简单.它先查出需要备份的表的结构,再在文本文件中生成一个CREATE语句.然后,将表中的所有记录转换成一条INSERT语句.然后通过这些语句,就能够创建表并插入数据. 1.备份一个

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

数据备份与还原   1.mysqldump 1.1 文件地址: E:\xampp\mysql\bin 文件名:mysqldump.exe CMD下进入mysqldump.exe cd E:\xampp_new\mysql\bin 1.2 调用mysqldump的参数 Mysqldump –u 用户名 [-h 主机] [-p 密码] 数据库名  [表名称 表名称] > 备份到的路径及文件名 备份多个数据库的全部表: Mysqldump –u 用户名 [-h 主机] [-p 密码] –databas

MySQL的备份与还原

MySQL备份和还原,都是利用mysqldump.mysql和source命令来完成的. 1.Win32下MySQL的备份与还原 1.1 备份 开 始菜单 | 运行 | cmd |利用"cd /Program Files/MySQL/MySQL Server 5.0/bin"命令进入bin文件夹 | 利用"mysqldump  -u 用户名 -p databasename >exportfilename"导出数据库到文件,如mysqldump -u root

java实现的MySQL自动备份和还原(struts2+Hibernate)---兼容 window+Linux

相信很多朋友都经历过数据库出问题的情况,我也同样(见我的上一篇博文:phpmyadmin误删表后的恢复过程(心惊胆跳啊)   ).如果数据很大或者很重要,那么恢复起来是相当困难的,所以我们在做一个相对完善的系统时,数据库的备份/还原功能是必不可少的.本文将在javaEE环境下实现MySQL的自动备份/还原,使用了struts2和hibernate框架,MySQL版本是5.1.16. 下图展示的是web application的执行流程, Timer是在一个随着application启动而启动的s

Mysql数据库备份和还原常用的命令

Mysql数据库备份和还原常用的命令是进行Mysql数据库备份和还原的关键,没有命令,什么都无从做起,更谈不上什么备份还原,只有给系统这个命令,让它去执行,才能完成Mysql数据库备份和还原的操作,下面就是操作的常用命令. 一.备份命令 1.备份MySQL数据库的命令 mysqldump -hhostname -uusername -ppassword databasename>backupfile.sql 2.备份MySQL数据库为带删除表的格式,能够让该备份覆盖已有数据库而不需要手动删除原有

centos7 mysql 数据库备份与还原

数据库备份 show databases; #先查看一下数据库 现在我要备份word数据库 退出mysql输入 mysqldump -u root -p word > word.sql #我把它备份在了当前目录下 查看一下 备份完成 还原数据库 mysqldump -u root -p word < word.sql