MySQL-快速入门(12)备份、还原
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)备份、还原的更多相关文章
- MySql基础笔记(一)Mysql快速入门
Mysql快速入门 一)基本概念 1)表 行被称为记录,是组织数据的单位.列被称为字段,每一列表示记录的一个属性. 2)主键 主键用于唯一的标识表中的每一条记录.可以定义表中的一列或者多列为主键, 但 ...
- MySQL 快速入门教程
转:MySQL快速 入门教程 目录 一.MySQL的相关概念介绍 二.Windows下MySQL的配置 配置步骤 MySQL服务的启动.停止与卸载 三.MySQL脚本的基本组成 四.MySQL中的数据 ...
- MySQL 快速入门(一)
目录 MySQL快速入门 简介 存储数据的演变过程 数据库分类 概念介绍 MySQL安装 MySQL命令初始 环境变量配置 MySQL环境变量配置 修改配置文件 设置新密码 忘记密码的情况 基本sql ...
- MySQL快速入门(二)
目录 MySQL快速入门(二) 约束条件 自增 自增的特性 主键 外键 级联更新/删除 表与表之间的关系 外键约束 操作表方法 查询关键字 练习数据 select··from where 筛选 gro ...
- MYSQL的日志与备份还原
一.错误日志 当数据库出现任何故障导致无法使用时,第一时间先去查看该日志 1.服务器启动关闭过程中的信息 2.服务器运行过程中的错误信息 日志存放路径,可以通过命令查看: 日志文件命名格式:host_ ...
- MySQL之mysqldump数据备份还原
一 mysqldump指令实现数据备份.mysql指令实现数据还原 经常有朋友问我,DBA到底是做什么的,百科上说:数据库管理员(Database Administrator,简称DBA),是从事管理 ...
- python之路--MySQL权限管理 数据备份还原
一 权限管理 mysql最高管理者是root用户, 这个一般掌握在公司DBA手里, 当你想去对数据库进行一些操作的时候,需要DBA授权给你. 1. 对新用户增删改 1. 创建用户 # 要先use my ...
- Mysql快速入门(看完这篇能够满足80%的日常开发)
这是一篇mysql的学习笔记,整理结合了网上搜索的教程以及自己看的视频教程,看完这篇能够满足80%的日常开发了. 菜鸟教程:https://www.runoob.com/mysql/mysql-tut ...
- Mysql表复制及备份还原
1.复制表结构 1.1 含有主键等信息的完整表结构 CREATE table 新表名 LIKE book; 1.2 只有表结构,没有主键等信息 create table 新表名 s ...
- MySQL - 日常操作二 备份还原
登录mysql的命令 # 格式: mysql -h 主机地址 -u 用户名 -p 用户密码 mysql -h 110. -P3306 -uroot -p mysql -uroot -p -S /dat ...
随机推荐
- scrapy中的selenium
引入 在通过scrapy框架进行某些网站数据爬取的时候,往往会碰到页面动态数据加载的情况发生,如果直接使用scrapy对其url发请求,是绝对获取不到那部分动态加载出来的数据值.但是通过观察我们会发现 ...
- pyqt5-QTDesigner--UI文件的使用方式
方式一:直接加载UI文件 from PyQt5.QtWidgets import QApplication, QWidget import sys class win(QWidget): def __ ...
- ASP.NET如何实现断点续传的上传、下载功能?
1 背景 用户本地有一份txt或者csv文件,无论是从业务数据库导出.还是其他途径获取,当需要使用蚂蚁的大数据分析工具进行数据加工.挖掘和共创应用的时候,首先要将本地文件上传至ODPS,普通的小文件通 ...
- BZOJ 2121: 字符串游戏 区间DP + 思维
Description BX正在进行一个字符串游戏,他手上有一个字符串L,以及其他一些字符串的集合S,然后他可以进行以下操作:对 于一个在集合S中的字符串p,如果p在L中出现,BX就可以选择是否将其删 ...
- 记ubuntu sudo无法使用,su密码不对的解决办法
前言 因为我有强制关机的习惯, 然后就杯具了.. ubuntu版本是 16.04 sudo没法使用, su密码不对, 顿时我就慌了 解决方案 1.1.开机点击ESC,进去GUN GRUB界面 1.2. ...
- 洛谷 P1505 BZOJ 2157 [国家集训队]旅游
bzoj题面 Time limit 10000 ms Memory limit 265216 kB OS Linux 吐槽 又浪费一个下午--区间乘-1之后,最大值和最小值更新有坑.新的最大值是原来最 ...
- 启用Executor初始化线程池
前言 上文我们介绍了JDK中的线程池框架Executor.我们知道,只要需要创建线程的情况下,即使是在单线程模式下,我们也要尽量使用Executor.即: ExecutorService fixedT ...
- Vue项目开发,nprogress进度条加载之超详细讲解及实战案例
Nprogress的默认进度条很细,它的设计灵感主要来源于 谷歌,YouTube 他的安装方式也很简单,你可以有两种使用方式: 直接引入js和css文件 使用npm安装的的方式 直接引入: Npm安装 ...
- Python字典实现
这篇文章描述了在Python中字典是如何实现的. 字典通过键(key)来索引,它可以被看做是关联数组.我们在一个字典中添加3个键/值对: >>> d = {'a': 1, 'b': ...
- csc.exeCPU100%
可以通过nuget把Microsoft.CodeDom.Providers.DotNetCompilerPlatform和Microsoft.Net.Compilers这两个包卸载