1、数据备份

1》使用MySQLdump命令备份(主要的方式)

//备份数据库中某张表(去掉表的限定,就是备份指定数据库)
//备份脚本可以重新创建表及插入数据
mysqldump -u user -h host -p pwd dbname [tbname[,tbname...]] > filename.sql
C:\Users\lfy>mysqldump -uroot -h localhost -p12345 mybatis test > C:\Users\lfy\De
sktop\mybatis.test_201909072320.sql
mysqldump: [Warning] Using a password on the command line interface can be insec
ure. C:\Users\lfy>
//备份多个数据库,使用空格隔开
mysqldump -u user -h host -p pwd --databases [database[ database...]] > filename.sql
//备份所有数据库
mysqldump -u user -h host -p pwd --all-databases > filename.sql
//如果所有表均为MyISAM表,应该考虑使用MySQLhotcopy备份或者恢复,将会更快速。
  MySQLdump还有常用的选项:
--opt:该选项将打开--quick、--add-locks、--extended-insert等多个选项。使用该选项可以提供最快速的数据库转储。
--add-drop-database:在每个create database语句前添加drop database语句。
--add-drop-tables:在每个create table语句前添加drop table语句。
--add-locking:用lock tables和unclock tables语句引用每个表转储。重载转储文件时插入得更快。
--all--database,-A:转储所有数据库中的所有表。与使用--database选项相同,在命令行中命名所有数据库。
--comments[=0|1]:如果设置为0,禁止转储文件中的其他信息,例如程序版本、服务器版本和主机。--skip-comments与--comments=0的结果相同。默认值为1,既包括额外的信息。
--compact:产生少量输出。该选项禁用注释并启用--skip-add-drop-tables、--no-set-names、--skip-disable-keys、--skip-add-locking。
...

运行:mysqldump --help获取更多选项信息。

2》直接复制整个数据库目录

因为MySQL表保存文件方式,所以可以直接复制MySQL数据库的存储目录及文件进行备份。但这种方法对InnoDB存储引擎的表不适用。还要注意不同版本数据库的数据格式问题。

3》使用MySQLhotcopy工具快速备份

MySQLhotcopy是一个Perl脚本,它使用Lock Tables、Flush Tables和cp或scp来快速备份数据库。它是备份数据库或者单个表的最快途径,但它只能运行在数据库目录所在的机器上,并且只能备份MyISAM类型的表。MySQLhotcopy运行在Unix系统中。

mysqlhotcopy db_name_1,...db_name_n /path/to/new_dirctory

2、数据还原

1》使用MySQL命令恢复

//针对备份的sql文件中包含create、insert、drop
mysql -u user -p pwd [dbname] < filename.sql
//如果已经登录数据库,可以使用以下方式导入脚本文件
source filename
mysql> drop table test;
Query OK, 0 rows affected (0.01 sec) mysql> source C:\Users\lfy\Desktop\mybatis.test.sql
Query OK, 0 rows affected (0.00 sec) Query OK, 0 rows affected (0.00 sec) Query OK, 0 rows affected (0.00 sec)
...

2》直接复制到数据库目录

要求复制的主版本号相同,仅对MyISAM类型的表有效。

3》MySQLhotcopy工具快速恢复

chown -R mysql.mysql /var/lib/mysql/dbname

3、表的导入和导出

1》使用select...into outfile ‘filename’导出文本文件

在指定的服务器需要有写入权限。filename文件不能已存在。

select column_list from tb_name where condition into outfile 'filename' [options]

options包括fields和lines子句:

fields和lines两个子句都是自选的,但是如果两个都被指定了,fileds必须位于lines的前面。在服务器主机外的客户主机上创建结果,应该在客户主机上使用如“MySQL -e "select ..." > filename”的命令来生成文件。

select...into outfile是load data infile的补语。用于语句的options部分的语法包括部分fields和lines子句,这些子句与load data infile语句同时使用。

mysql> select * from test into outfile "C:\\ProgramData\\MySQL\\MySQL Server 5.7
\\Uploads\\test0.txt";
Query OK, 6 rows affected (0.00 sec) mysql> select * from test into outfile "C:\\ProgramData\\MySQL\\MySQL Server 5.7
\\Uploads\\test1.txt"
-> fields
-> terminated by ','
-> enclosed by '\"'
-> escaped by '\''
-> lines
-> terminated by '\r\n';
Query OK, 6 rows affected (0.02 sec) mysql>
说明:
上面的输出格式限定为以","逗号分隔各字段,以"\""双引号包围字段,以“\'”单引号作为转义字符,每行结尾以\r\n结束。

2》使用MySQLdump命令导出文本文件

mysqldump -T path -u user -p pwd dbname [tables] [options]

--options选项:
--fields-terminated-by=value
--fields-enclosed-by=value
--fields-optionally-enclosed-by=value
--fields-escaped-by=value
--lines-terminated-by=value
只有指定了-T参数才可以导出纯文本文件;path指示导出文件的路径;tables不指定将导出指定数据库的所有表。
[options]参数需要结合-T选项使用。

C:\Users\lfy>mysqldump -T C:\\ProgramData\\MySQL\\MySQL Server 5.7\\Uploads myba
tis test -uroot -p
Enter password: ****
mysqldump: Got error: 1049: Unknown database 'server' when selecting the databas
e C:\Users\lfy>mysqldump -T "C:\\ProgramData\\MySQL\\MySQL Server 5.7\\Uploads" my
batis test -uroot -p
Enter password: **** C:\Users\lfy>
mysqldump针对路径中有空格,可以对路径使用双引号括起来,也可以使用~1替换的形式。使用mysqldump进行备份数据,会同时产生两个文件,一个sql文件,一个指定的txt文件。

使用[options]:

C:\Users\lfy>mysqldump -T "C:\\ProgramData\\MySQL\\MySQL Server 5.7\\Uploads" my
batis test -uroot -p --fields-terminated-by=, --fields-optionally-enclosed-by=\"
--fields-escaped-by=? --lines-terminated-by=\r\n
Enter password: **** C:\Users\lfy>
说明:使用逗号“,”隔开,字段使用双引号括起来,转义字符为“?”问号,回车换行使用“\r\n”。

3》使用MySQL命令导出文本文件

如果MySQL服务器是单独的机器,用户是在一个client上进行操作,用户要把数据结果导入到client机器上,可以使用MySQL -e语句。MySQL语句导出,数据的人工可读性更强,txt文件第一行默认包含了字段名称。

mysql -u user -p pwd --execute="select语句" db_name > filename.txt
C:\Users\lfy>mysql -uroot -p --execute="select * from test" mybatis > C:\\Users\
\lfy\\Desktop\\t.txt
Enter password: **** C:\Users\lfy>

MySQL命令还可以指定查询结果的显式格式,如果某行记录字段太多不能显示完全,可以使用--vartical参数,将每条记录分为多行显示。

C:\Users\lfy>mysql -uroot -p --html --execute="select * from test" mybatis > C:\
Users\lfy\Desktop\t.html
Enter password: **** C:\Users\lfy>

C:\Users\lfy>mysql -uroot -p --xml --execute="select * from test" mybatis > C:\U
sers\lfy\Desktop\t.xml
Enter password: **** C:\Users\lfy>

4》使用load data infile方式导入文本文件

MySQL支持导入数据的语句,load data语句、source语句、MySQL语句。load data infile语句支持高速从一个文本文件中读取行,并装入一个表。文件名必须是字符串类型。

load data infile 'filename.txt' into table tb_name [options] [ignore number lines]

--ignore number lines表示忽略文件开始处的行数,number表示忽略的行数。

options选项:

5》使用MySQLimport命令导入文本文件

mysqlimport -u user -p pwd dbname filename.txt [options]

--注意,并没有指定导入的数据表的名称,数据表的名称由文件名确定,导入数据之前该表必须存在

还有更多支持的选项,使用mysqlimport --help查看。

4、数据库迁移

1》相同版本的MySQL数据库之间的迁移

相同版本号,主要是指主版本号相同。相同版本号的MySQL数据库之间的迁移,主要是数据备份和数据恢复的组合。

//将www.xxx.com主机上的MySQL数据库全部迁移到www.yyy.com主机
//上,在www.xxx.com主机(即迁出主机)上执行如下命令。
//MySQLdump导出的数据直接通过管道符"|"传递给MySQL命令导入的主机
//如果要迁移全部的数据库,可使用参数--all-databases
mysqldump -h www.xxx.com -u user -p pwd dbname |
mysql -h www.bcd.com -u user -p pwd

2》不同版本的MySQL数据库之间的迁移

业务数据备份当然是很重要的。主要要注意的是老版本的权限控制信息、字符集等问题。存在中文数据的表特别要注意!

3》不同数据库之间的迁移

根据实际情况使用了。数据要保存,还有数据库之间对功能支持的差异,比如字段精度、支持的数据类型差异等。

MySQL-快速入门(12)备份、还原的更多相关文章

  1. MySql基础笔记(一)Mysql快速入门

    Mysql快速入门 一)基本概念 1)表 行被称为记录,是组织数据的单位.列被称为字段,每一列表示记录的一个属性. 2)主键 主键用于唯一的标识表中的每一条记录.可以定义表中的一列或者多列为主键, 但 ...

  2. MySQL 快速入门教程

    转:MySQL快速 入门教程 目录 一.MySQL的相关概念介绍 二.Windows下MySQL的配置 配置步骤 MySQL服务的启动.停止与卸载 三.MySQL脚本的基本组成 四.MySQL中的数据 ...

  3. MySQL 快速入门(一)

    目录 MySQL快速入门 简介 存储数据的演变过程 数据库分类 概念介绍 MySQL安装 MySQL命令初始 环境变量配置 MySQL环境变量配置 修改配置文件 设置新密码 忘记密码的情况 基本sql ...

  4. MySQL快速入门(二)

    目录 MySQL快速入门(二) 约束条件 自增 自增的特性 主键 外键 级联更新/删除 表与表之间的关系 外键约束 操作表方法 查询关键字 练习数据 select··from where 筛选 gro ...

  5. MYSQL的日志与备份还原

    一.错误日志 当数据库出现任何故障导致无法使用时,第一时间先去查看该日志 1.服务器启动关闭过程中的信息 2.服务器运行过程中的错误信息 日志存放路径,可以通过命令查看: 日志文件命名格式:host_ ...

  6. MySQL之mysqldump数据备份还原

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

  7. python之路--MySQL权限管理 数据备份还原

    一 权限管理 mysql最高管理者是root用户, 这个一般掌握在公司DBA手里, 当你想去对数据库进行一些操作的时候,需要DBA授权给你. 1. 对新用户增删改 1. 创建用户 # 要先use my ...

  8. Mysql快速入门(看完这篇能够满足80%的日常开发)

    这是一篇mysql的学习笔记,整理结合了网上搜索的教程以及自己看的视频教程,看完这篇能够满足80%的日常开发了. 菜鸟教程:https://www.runoob.com/mysql/mysql-tut ...

  9. Mysql表复制及备份还原

    1.复制表结构   1.1 含有主键等信息的完整表结构   CREATE table 新表名 LIKE book;     1.2 只有表结构,没有主键等信息   create table 新表名 s ...

  10. MySQL - 日常操作二 备份还原

    登录mysql的命令 # 格式: mysql -h 主机地址 -u 用户名 -p 用户密码 mysql -h 110. -P3306 -uroot -p mysql -uroot -p -S /dat ...

随机推荐

  1. pyqt-swf

    # pyqt5界面打开flash.swf文件 from PyQt5 import QtCore, QtGui, QAxContainer, QtWidgets class Ui_Flash(QAxCo ...

  2. 14. ClustrixDB 高可用性的最佳实践

    本文档详细介绍了最大化ClustrixDB上运行的应用程序正常运行时间的最佳实践.这涵盖了广泛的主题,从环境需求到变更管理程序,所有这些最终都会影响应用程序的可用性.其中许多是您可能已经熟悉的标准最佳 ...

  3. guava缓存第一篇

    guava缓存主要有2个接口,Cache和LoadingCache. Cache,全类名是com.google.common.cache.Cache,支持泛型.Cache<K, V>. L ...

  4. BZOJ 5004: 开锁魔法II 期望 + 组合

    Description 题面:www.lydsy.com/JudgeOnline/upload/task.pdf Input Output 一般概率题有两种套路: 满足条件的方案/总方案. 直接求概率 ...

  5. Codeforces 960D Full Binary Tree Queries ( 思维 && 模拟 )

    题意 : 给出一颗无限层的满二叉树,然后每个值为 X (根的 X 等于 1 ) 左孩子的值是 2*X,右孩子的值是 2*X+1 ,现在有两种操作,(1, x,k) 表示将 x 所在层的所有节点整体向右 ...

  6. POJ 3275 Ranking the cows ( Floyd求解传递闭包 && Bitset优化 )

    题意 : 给出 N 头牛,以及 M 个某些牛之间的大小关系,问你最少还要确定多少对牛的关系才能将所有的牛按照一定顺序排序起来 分析 : 这些给出的关系想一下就知道是满足传递性的 例如 A > B ...

  7. Spring Boot教程(二十二)使用Swagger2构建强大的RESTful API文档(1)

    由于Spring Boot能够快速开发.便捷部署等特性,相信有很大一部分Spring Boot的用户会用来构建RESTful API.而我们构建RESTful API的目的通常都是由于多终端的原因,这 ...

  8. sqli-labs(34)

    0x01构造闭合 同样 发现 ’被注释掉了 试探了一波发现什么信息都不会返回 正确错误的页面都一样 之前我们的方法就是将过滤函数添加的 \ 给吃掉.而get型的方式我们是以url形式提交的,因此数据会 ...

  9. zabbix 监控hp 打印机

    https://share.zabbix.com/search?searchword=hp+printer&search_cat=1

  10. js fuction函数内return一个内部函数详解

    今天在网上,看到一篇关于js函数难点的文章,js函数的一些难点.在那上面提了一下,关于js函数返回另一个函数的问题,并附上了一道面试题: var add = function(x){ var sum  ...