开发者社区> 余二五> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

MySQL Study之--MySQL 备份

简介:
+关注继续查看

一、备份的目的

做灾难恢复:对损坏的数据进行恢复和还原
需求改变:因需求改变而需要把数据还原到改变以前
测试:测试新功能是否可用

二、备份需要考虑的问题

可以容忍丢失多长时间的数据;
恢复数据要在多长时间内完; 
恢复的时候是否需要持续提供服务;
恢复的对象,是整个库,多个表,还是单个库,单个表。

三、备份的类型

1、根据是否需要数据库离线

冷备(cold backup):需要关mysql服务,读写请求均不允许状态下进行;
温备(warm backup): 服务在线,但仅支持读请求,不允许写请求;
热备(hot backup):备份的同时,业务不受影响。

注:

1、这种类型的备份,取决于业务的需求,而不是备份工具
2、MyISAM支持热备(mysqlhotcopy),InnoDB支持热备(ibbackup、xtrabackup)

2、根据要备份的数据集合的范围
完全备份:full backup,备份全部字符集。
增量备份: incremental backup 上次完全备份或增量备份以来改变了的数据,不能单独使用,要借助完全备份,备份的频率取决于数据的更新频率。
差异备份:differential backup 上次完全备份以来改变了的数据。
建议的恢复策略:
完全+增量+二进制日志
完全+差异+二进制日志

3、根据备份数据或文件

物理备份:直接备份数据文件

优点:

备份和恢复操作都比较简单,能够跨mysql的版本,
恢复速度快,属于文件系统级别的

建议:

不要假设备份一定可用,要测试
mysql>check tables;检测表是否可用
逻辑备份: 备份表中的数据和代码

优点:

恢复简单、
备份的结果为ASCII文件,可以编辑
与存储引擎无关
可以通过网络备份和恢复

缺点:

备份或恢复都需要mysql服务器进程参与
备份结果占据更多的空间,
浮点数可能会丢失精度
还原之后,缩影需要重建

四:备份的对象

1、 数据;
2、配置文件;
3、代码:存储过程、存储函数、触发器
4、OS相关的配置文件
5、复制相关的配置
6、二进制日志

逻辑备份工具:

一、表的导出

     SELECT INTO…OUTFILE语句把表数据导出到一个文本文件中,并用LOAD DATA …INFILE语句恢复数据。但是这种方法只能导出或导入数据的内容,不包括表的结构,如果表的结构文件损坏,则必须先恢复原来的表的结构。
一、SELECT INTO…OUTFILE语法:
select * from Table into outfile '/路径/文件名'
fields terminated by ','
enclosed by '"'
lines terminated by '\r\n'

fields子句:在FIELDS子句中有三个亚子句:TERMINATED BY、 [OPTIONALLY] ENCLOSED BY和ESCAPED BY。如果指定了FIELDS子句,则这三个亚子句中至少要指定一个。
(1)TERMINATED BY用来指定字段值之间的符号,例如,“TERMINATED BY ','”指定了逗号作为两个字段值之间的标志。
(2)ENCLOSED BY子句用来指定包裹文件中字符值的符号,例如,“ENCLOSED BY ' " '”表示文件中字符值放在双引号之间,若加上关键字OPTIONALLY表示所有的值都放在双引号之间。
(3)ESCAPED BY子句用来指定转义字符,例如,“ESCAPED BY '*'”将“*”指定为转义字符,取代“\”,如空格将表示为“*N”。
●   LINES子句:在LINES子句中使用TERMINATED BY指定一行结束的标志,如“LINES TERMINATED BY '?'”表示一行以“?”作为结束标志。

案例:

[root@rh64 ~]# mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.6.25-73.1 Percona Server (GPL), Release 73.1, Revision 07b797f
Copyright (c) 2009-2015 Percona LLC and/or its affiliates
Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| prod               |
| test               |
+--------------------+
5 rows in set (0.04 sec)
mysql> use prod;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> show tables;
+----------------+
| Tables_in_prod |
+----------------+
| t1             |
| t2             |
| t3             |
+----------------+
3 rows in set (0.00 sec)
mysql> insert into t2 select * from t1 order by id limit 100;
Query OK, 100 rows affected (0.33 sec)
Records: 100  Duplicates: 0  Warnings: 0
mysql> commit;
Query OK, 0 rows affected (0.00 sec)
mysql> select count(*) from t2;
+----------+
| count(*) |
+----------+
|      100 |
+----------+
1 row in set (0.00 sec)
mysql> select * from t2 into outfile '/tmp/t2_1.bak';
Query OK, 100 rows affected (0.00 sec)

[root@rh64 ~]# cat /tmp/t2_1.bak 
1       tom
1       tom
1       tom
1       tom
......

---默认字段之间是通过制表符(tab)进行分割的
mysql> select * from t2 into outfile '/tmp/t2_2.bak' fields terminated by ',' enclosed by '"';
Query OK, 100 rows affected (0.00 sec)
[root@rh64 ~]# cat /tmp/t2_2.bak 
"1","tom"
"1","tom"
"1","tom"
......

---发现第一列为数值字段,也被添加了“”

mysql> select * from t2 into outfile '/tmp/t2_3.bak' fields terminated by ',' optionally enclosed by '"';
Query OK, 100 rows affected (0.00 sec)
[root@rh64 ~]# cat /tmp/t2_3.bak 
1,"tom"
1,"tom"
1,"tom"
......

---发现第一列为数值字段,就没有添加了“”,只有字符型的字段有“”

二、表的导入

mysql> load data infile '/tmp/t2_1.bak' into table t2;
Query OK, 100 rows affected (0.06 sec)
Records: 100  Deleted: 0  Skipped: 0  Warnings: 0
mysql> select count(*) from t2;
+----------+
| count(*) |
+----------+
|      100 |
+----------+
1 row in set (0.00 sec)
mysql> load data infile '/tmp/t2_2.bak' into table t2 fields terminated by ',' enclosed by '"';
Query OK, 100 rows affected (0.07 sec)
Records: 100  Deleted: 0  Skipped: 0  Warnings: 0
mysql> select count(*) from t2;
+----------+
| count(*) |
+----------+
|      100 |
+----------+
1 row in set (0.00 sec)










本文转自 客居天涯 51CTO博客,原文链接:http://blog.51cto.com/tiany/1702864,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
从零开始搭建Java开发环境第二篇:如何在windows10里安装MySQL
1 下载安装包 1.1 压缩包 https://dev.mysql.com/downloads/mysql/ [外链图片转存失败(img-oesO8K09-1566652568838)(data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw== "点击并拖拽以移动")] 1.
772 0
Ubuntu 安装Mysql首次登录密码
sudo cat /etc/mysql/debian.cnf
977 0
在CentOS上安装搭建PHP+Apache+Mysql的服务器环境方法
本篇给大家分享一下在CentOS上安装搭建PHP+Apache+Mysql的服务器环境方法,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看。Yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器。
1312 0
Docker 安装MySQL 主从复制 、Redis 、nginx 、安装maven,和java 配置开发环境
使用docker 安装 MySQL 主从复制 、Redis 、nginx 、安装maven,和java 配置开发环境
1756 0
mysql从安装到建库,utf8mb4最佳实践,jdbc连接串全解析
mysql从安装到建库,utf8mb4最佳实践,jdbc连接串全解析
2922 0
借助URLOS快速安装MySQL 5.6
简介 MySQL原本是一个开放源码的关系数据库管理系统,原开发者为瑞典的MySQL AB公司,该公司于2008年被昇阳微系统(Sun Microsystems)收购。2009年,甲骨文公司(Oracle)收购昇阳微系统公司,MySQL成为Oracle旗下产品。
1059 0
Mysql 免装版配置与安装
mysql免安装版的过程有一些小坑,方便有类似需要的朋友参考
913 0
Linux环境下Mysql++安装及操作深入详解
Linux(确切是Centos)下msyql++的安装、增、删、改、查源码封装接口实现。
1125 0
GDB 调试 Mysql 实战(一)源码编译安装
下载源码 git clone https://github.com/mysql/mysql-server.git cd mysql-server git checkout 5.7 编译安装 安装依赖 yum install -y cmake make gcc gcc-c++ ncurses-dev...
1108 0
+关注
20376
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载