Mysql备份还有这么多套路,还不了解下?
逻辑备份和物理备份
逻辑备份
逻辑备份用于备份数据库的结构(CREAET DATABASE、CREATE TABLE)和数据(INSERT),这种备份类型适合数据量小、跨SQL服务器、需要修改数据等场景。如mysqldump
命令就是产生一个逻辑备份工具,使用mysqldump
输出的文件包含CREATE TABLE
和INSERT
语句,能够直接重建表内容和表结构。
使用逻辑备份有以下优势和劣势:
优势
- 可移植性高,SQL语句可直接适用于其他SQL服务器;
- 在数据恢复之前可增加、修改数据;
- 数据恢复粒度小可以是服务器、数据库、表级别;
- 使用文本格式,可读性高;
劣势
- 备份时需要访问mysql服务器,影响其他客户端;
- 需要将数据转换成逻辑格式(SQL,CSV);
- 如果命令运行在客户端,mysql服务器还需要将数据发送给客户端;
- 因为输出格式为文本文件,占用空间较大;
物理备份
物理备份是包括存储数据库内容的目录和文件的副本,这种类型的备份适用于需要在出现问题时快速恢复的大型重要数据库。
优势
- 完整的Mysql文件和目录备份,只需要复制文件不需要转换,速度比逻辑备份更快;
- 除了备份数据,还能备份配置文件和日志文件;
- 不需要运行Mysql服务器就可以完成备份;
- 备份工具简单使用cp、scp、tar命令即可完成备份;
劣势
- 可移植性不高,恢复数据只适用于相同或类似的机器上;
- 为了保持数据库文件的一致性,需要停机备份;
- 恢复粒度不能按表或用户恢复;
在线备份和离线备份
在线备份需要mysql服务器处理运行状态,以便备份工具从mysql服务器中获取数据。离线备份表示mysql服务器处理停止状态。两种备份形式也可以称为“热备份”和“冷备份“。
在线备份的主要特性
- 备份不需要停机,对其他客户端影响较小其他连接能够正常访问mysql服务器(依赖操作类型,如读操作);
- 备份需要加锁,以免在备份期间对数据做出修改;
离线备份的主要特性
- 备份期间服务器不可用;
- 备份过程更简单,不会受到客户端的干扰;
逻辑备份(mysqldump使用)
mysqldump
属于逻辑备份命令,使用mysqldump
备份的优势是它非常方便和灵活,可以直接编辑输出文件或者使用导入到其他的SQL服务器中去,但是它不能用作备份大量数据的快速解决方案,对于大数据量,即使备份花费的时候可以接受,但是恢复数据也可能会非常缓慢,因为执执行SQL语句会涉及磁盘I/O进行插入,创建索引等。mysqldump
的使用方式非常简单:
shell> mysqldump [options] db_name [tbl_name ...]
shell> mysqldump [options] --databases db_name ...
shell> mysqldump [options] --all-databases
使用mysqldump
备份时要注意:数据库的一致状态,在执行mysqldump
命令时要保证数据不会再发生变更,保持数据的一致性有二种方法:
- 使Mysql服务器只读
- 使用事务加上隔离级别:
REPEATABLE READ
使用REPEATABLE READ
事务隔离级别执行mysqldump
命令(使用事务保持数据库的一致状态):
mysqldump --master-data=2 \
--flush-logs \
--single-transaction \
--all-databases > /backup/`date +%F-%H`-mysql-all.sql
备份参数说明:
- --master-data: 将二进制日志文件的名称和位置备份
- --flush-logs: 开始备份之前刷新mysql服务器日志文件
- --single-transaction:开始备份之前设置事务隔离级别为REPEATABLE READ然后发送一个START TRANSACTION命令。
- --all-databases:备份所有数据库
物理备份(复制原始文件)
为了保证复制文件的完整性,备份原始文件最好是停止mysql服务器,复制原始文件备份由以下步骤完成:
- 停止mysql服务器
$ mysqladmin shutdown
- 使用合适的工具复制原始数据文件
$ tar cf /tmp/dbbackup.tar ./data
- 备份完成后,运行mysql服务器
$ mysqld_safe
使用主从备份模式
使用mysqldump
和tar
备份或多或少都会对业务产生影响,使用mysqldump
备份需要对数据加锁,加锁就意味着其他客户端操作受到限制。使用tar
命令需要停止服务器直接导致数据库服务器不可用,有没有办法能解决这两种问题呢?答案是有的,就是使用主从备份模式。
在单机的基础上增加一台Slave机器对Master机器的数据进行同步:
开始备份时对Slave进行备份,这样即使Slave停机或对数据加锁也不会影响业务的正常使用,如果公司有条件或业务非常重要可以选择这种方案来备份数据。
欢迎关注微信公众号《架构文摘》,高质量技术文章第一时间推送。
Mysql备份还有这么多套路,还不了解下?的更多相关文章
- mysql备份的三种方式详解
一.备份的目的 做灾难恢复:对损坏的数据进行恢复和还原需求改变:因需求改变而需要把数据还原到改变以前测试:测试新功能是否可用 二.备份需要考虑的问题 可以容忍丢失多长时间的数据:恢复数据要在多长时间内 ...
- 【MySQL】MySQL-主从复制-集群方案-数据一致性问题解决方案 && MySQL备份的各种姿势
1.写性能如何保证:分库分表 2.读性能如何保证:主从结构,实时备份 3.一致性问题怎么解决: 3.1.微博案例:Redis缓存,热数据查询走Redis,主从的延迟通过Redis消除 3.2.支付宝的 ...
- MySQL 备份与还原详解
相关阅读: MySQL备份和恢复具体实施 http://www.linuxidc.com/Linux/2012-12/76257.htm MySQL备份与恢复的三种方法总结 http://www.li ...
- mysql备份恢复详解
前言 为什么需要备份数据? 数据的备份类型 MySQL备份数据的方式 备份需要考虑的问题 设计合适的备份策略 实战演练 使用cp进行备份 使用mysqldump+复制BINARY LOG备份 使用lv ...
- (转)MySQL备份原理详解
MySQL备份原理详解 原文:http://www.cnblogs.com/cchust/p/5452557.html 备份是数据安全的最后一道防线,对于任何数据丢失的场景,备份虽然不一定能恢复百分之 ...
- mysql 备份时间 %date~0,4%和 %time~0,2%等用法详解
比如在windowscmd命令行窗口执行date命令后这个环境变量的值为 当前日期:2014-09-01 星期六 或2014/09/01 周六 那么如下的各个操作的意义如下:%date:~0,4% 表 ...
- MySQL备份还原——AutoMySQLBackup介绍
AutoMySQLBackup是一个开源的MySQL备份脚本.可以说它是一个轻量级的备份方案,AutoMySQLBackup的安装.配置非常简单.方便.AutoMySQLBackup的sourcefo ...
- Mysql备份系列(4)--lvm-snapshot备份mysql数据(全量+增量)操作记录
Mysql最常用的三种备份工具分别是mysqldump.Xtrabackup(innobackupex工具).lvm-snapshot快照.前面分别介绍了:Mysql备份系列(1)--备份方案总结性梳 ...
- Mysql备份系列(3)--innobackupex备份mysql大数据(全量+增量)操作记录
在日常的linux运维工作中,大数据量备份与还原,始终是个难点.关于mysql的备份和恢复,比较传统的是用mysqldump工具,今天这里推荐另一个备份工具innobackupex.innobacku ...
随机推荐
- 安装docker 在centos中
http://www.imooc.com/article/16448 http://blog.csdn.net/jeffleo/article/details/70904368
- 推荐一款简单易用线上引流测试工具:GoReplay
一. 引流测试产生背景 日常大部分的测试工作都是在测试环境下,通过模拟用户的行为来对系统进行验证,包括功能以及性能.在这个过程中,你可能会遇到以下问题: 用户访问行为比较复杂,模拟很难和用户行为一致, ...
- 推荐一款现代化的脚手架项目《hope-boot》
简介: > 一款现代化的脚手架项目.企业开发?接外包?赚外快?还是学习?这都能满足你,居家必备,值得拥有
- 两种unity双击事件
有时候需要用到双击事件,而unity未提供双击控件,在此提供两种双击事件方法,进攻参考: 1)此方法为通过unityevent来实现 首先新建image(或其他不带点击事件的控件),添加如下脚本,然后 ...
- text文本样式二
text-transform样式用于将元素的字母全都变成大小 letter-spacing设置字符之间的间距 <html> <head> <style type=&quo ...
- spring整合mybatisplus2.x详解
一丶Mp的配置文件 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="htt ...
- Android原生PDF功能实现:PDF阅读、PDF页面跳转、PDF手势伸缩、PDF目录树、PDF预览缩略图
1.背景 近期,公司希望实现安卓原生端的PDF功能,要求:高效.实用. 经过两天的调研.编码,实现了一个简单Demo,如上图所示. 关于安卓原生端的PDF功能实现,技术点还是很多的,为了咱们安卓开发的 ...
- 适用于Windows桌面应用程序的.NET Core 3
介绍 9月,微软发布了新版.NET Core,用于构建Windows桌面应用程序,包括WPF和Windows Forms.从那时起开发人员可以将传统的nfx桌面应用程序(和控件库)迁移到.NET Co ...
- 《JavaScript设计模式与开发实践》-- 代理模式
详情个人博客:https://shengchangwei.github.io/js-shejimoshi-daili/ 代理模式 1.定义 代理模式:代理模式是为一个对象提供一个代用品或占位符,以便控 ...
- post方式实现导出/下载文件
项目需求: 前端需要传入过多的参数给后端,get地址栏不行,只能接受post方式去导出数据 1.get的下载方式 通常下载方式如下: let url = xxxx.action?a=xx&b= ...