mysql备份与恢复

MySQL备份与恢复 1 备份与恢复概述

对于DBA来说,备份和恢复是一项最基本的操作,在服务器宕机、磁盘损坏、RAID卡损坏等意外情况下,要保证数据不丢失或者丢失量在可接受范围内,每个DBA应该时刻关注所负责的数据库备份情况。个人认为,一个合格的DBA每天来公司的第一件事不应该是倒水喝茶,而应该是查看数据库的备份情况。这里我们首先来看备份的一些方法,根据备份的方法不同可以讲备份分为:

Hot Backup、热备

Cold Backup、冷备

Warm Backup、温备

热备是指在数据库运行中直接备份,对正在运行的数据库操作没有任何的影响,也称之为在线备份;

冷备是指在数据库服务关闭的情况下进行备份,这种备份最为简单,一般只需要复制相关的数据库物理文件即可;

温备同样实在数据库运行过程中进行的,但是会对挡墙的数据库的操作产生一定的影响。例如加一个全局的读锁来保证备份数据的一致性。

按照备份后文件的内容来分,备份又可以分为逻辑备份与物理备份。

其中逻辑备份是指备份出来的文件内容是可读的,内容一般是由表数据组成的,例如我们最常用的mysqldump和select into outfile的方法,这列方法的好处是可以观察导出文件的内容,一般用于数据库的升级,迁移等工作中,它的优点是备份完的文件比较小,缺点是备份的时间较长。

物理备份是指复制数据库的物理文件,既可以在数据库运行中进行复制,也可以在数据库停止的时候直接复制数据文件,这种备份方法备份速度快,需要的时间一般较短,常用的工具有innobackup和xtrabackup这类工具,它的缺点是备份的文件可能会比较大、恢复时候的跨平台性较差。

按照备份数据库的内容来分,又可以分为完全备份、增量备份和日志备份,完全备份指的是对数据库进行一个完整的备份,增量备份指的是在上次完全备份的基础上,对更改的数据进行备份,而日志备份指的是对MySQL数据库日志的备份,通过日志重做来完成数据库的恢复工作。

2

常用备份方法

mysqldump是最常用的备份方法,它是逻辑备份的一种,它的语法如下:

mysqldump [arguments] > file_name

这里给出最常用的一些备份方法:

#备份所有数据库
mysqldump -uroot -p --all-databases > dump.sql
#备份指定数据库
mysqldump -uroot -p --databases db1 db2 db3 > dump.sql
#备份数据库的结构
mysqldump -uroot -p --no-data --databases db1 db2 db3 > dump.sql
#备份数据库中的两张表
mysqldump -uroot -p mydb t1 t2 > dump.sql

一些重要参数如下:

--single-transaction

对于mysqldump工具来说,可以通过添加--single-transaction这个选项来获得innodb存储引擎的一致性备份,原因是这个参数会在备份开始之前,先执行start transaction命令,开启一个事务,备份完成之后会提交这个事务,保证过程中获取一致性的数据。

--master-data=[value]

还有一些需要注意的点,当我们想要复制一个数据库上的数据,来将它恢复到一个从库上时,需要启用--master-data这个参数,当value的值为1的时候,该参数会产生转存备份数据库中的change master语句,当value值为2的时候,change master语句被写成SQL注释,默认的情况下,这个值为空。

还有一些其他的参数,例如备份时间的--events、备份存储过程的--routines、备份触发器的--triggers等,大家可以下面自行查看。

除了mysqldump之外,就是select into outfile这种方法用的最多了,因为它能够很快的备份一个比较小的表里面的数据,它还包含很多输出格式参数,select ...into outfile方法导出的文件可以使用load data infile来进行恢复,这个语法必须拥有file权限,时间关系,后续再细说。今天就先写到这里。

本文分享自微信公众号 - DBA随笔(gh_acc2bbc0d447)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-01-18

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏小小挖掘机

推荐系统数据集大列表

今天给大家介绍一个github仓库,收集了非常多的推荐系统的数据集,非常的全面,非常的实用,做推荐系统相关的同学可以收藏一下。

33540
来自专栏Java后端技术栈cwnait

如何写一手快SQL

博主负责的项目主要采用阿里云数据库MySQL,最近频繁出现慢SQL告警,执行时间最长的竟然高达5分钟。导出日志后分析,主要原因竟然是没有命中索引和没有分页处理。...

7440
来自专栏Java识堂

用 Python 爬取网易严选妹子内衣信息,探究妹纸们的偏好

在商品页面,打开 Chrome 的控制台,切换至 Network 页,再把商品页面切换到评价标签下,选择一个评论文字,如“薄款、穿着舒适、满意”,在 Netwo...

7740
来自专栏不想当开发的产品不是好测试

mysql 类型自动化转换问题

询问了一个朋友,他给了一个方向,mysql会自动转换类型,当你select语句的条件和数据中的type不一致的时候; 一拍大腿,是呀,之前有碰到过类似问题,如下...

14320
来自专栏MySQL技术

常用SQL语句分享

日常工作或学习过程中,我们可能会经常用到某些SQL,建议大家多多整理记录下这些常用的SQL,这样后续用到会方便很多。笔者在工作及学习过程中也整理了下个人常用的S...

7920
来自专栏Java那些事

高频面试题:什么是B树?为啥文件索引要用B树而不用二叉查找树?

小秋:树形结构例如想 B 树,B+ 树,二叉查找树都是有序的,所以查询效率很高,可以再 O(logn) 的时间复杂度查找到目标数据。

12630
来自专栏算法与编程之美

数据库|如何解决数据库插入中文字体时显示问号

我们在进行数据库的增删改查的操作时,当我们插入英文或者数字等字符串的时候能够正常显示,但的当我们插入中文字体的时候我们就会在我们的表中发现显示的是一连串的问号,...

8720
来自专栏AVAJ

Mybatis的批处理

本文主要测试Mybatis在mysql数据库下的批量插入、批量删除、批量更新。

15020
来自专栏软件测试testclass

Katalon Studio处理数据库

在日常的测试工作中需要经常要用到:数据库的处理,执行SQL语句。 Katalon Studio可以通过定制关键字的方式连接到数据库,并执行SQL语句。 基本实现...

9050
来自专栏木木玲

「大型网站架构设计」—— 前言

根据大型网站的特点,该架构能够解决大多数的技术问题。下面我们将这个架构图进行简单的分解。

10830

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励