一次数据库备份的血泪史

  唉,一次不够细心导致朋友的一个网站MySQL数据全没了。所谓吃一堑长一智,所以想想还是写篇文章提醒一下周边的小伙伴们。本着治病救人,药到根除的一贯方针,多多决定从mysql常识开始讲。

  数据库文件介绍

  MySQL的每个数据库都对应着一个与数据库同名的文件夹。另外,完整的数据库文件由以下两个部分组成:

  第一部分:MySQL所建数据库文件

  后缀为.frm的文件:存储数据表的框架结构,文件名与表名相同,每个表对应一个同名frm文件,与操作系统和存储引擎无关,即不管MySQL运行在何种操作系统上,使用何种存储引擎,都有这个文件。

  第二部分:MySQL所用存储引擎创建的数据库文件,存储引擎会创建各自不同的数据库文件。根据MySQL所使用的存储引擎的不同(常用的存储引擎是MyISAM和InnoDB)

  1、MyISAM数据库表文件包括(MYD文件:即MY Data,表数据文件; .MYI文件:即MY Index,索引文件;
.log文件:日志文件)

  2、InnoDB数据库文件包括(ibdata1、ibdata2等:系统表空间文件,存储InnoDB系统信息和用户数据库表数据和索引,所有表共用;
.ibd文件:单表表空间文件,每个表使用一个表空间文件(file per table),存放用户数据库表数据和索引; 日志文件:
ib_logfile1、ib_logfile2)

  MySQL数据库存放位置

  1、MySQL如果使用MyISAM存储引擎,数据库文件类型就包括.frm、.MYD、.MYI,默认存放位置是/var/lib/mysql/data/你的数据库名(我用的ubuntu),注意:MyISAM是默认的引擎。

  2、MySQL如果使用InnoDB存储引擎,数据库文件类型就包括.frm、ibdata1、.ibd,存放位置有两个,.frm文件默认存放位置是/var/lib/mysql/data/你的数据库名,ibdata1、.ibd文件默认存放位置是/var/lib/mysql/data。

  PS:
看到没有,MyISAM只要备份一个与数据库同名的目录就行了,而InnoDB还要额外备份ibdata1、ibd文件。(这也正是我的悲剧点,呜呜呜~~~~)。

  备份血泪史

  因为默认的引擎就是MyISAM,当朋友让我备份时,我想都没想就是直接备份了MySQL里data目录下与数据库名相同的目录,后来恢复时才发现原来朋友用的是InnoDB引擎,悲剧就这么产生了,唉!

  经验教训

  备份数据时,千万一定要提前查看备份数据库是什么引擎,然后确定需要备份的数据库文件,不知道数据库存储位置的朋友,可以在MySQL目录里的my.cnf配置文件中找到。偷偷再告诉你一个简单的大招吧,直接把MySQL目录整个备份,不用你写数据库备份脚本?也不用手动备份,交给多备份就好!一键备份多个云盘数据永不丢失,需要时再一键恢复。省事省力又省心!

时间: 2024-10-25 03:54:50

一次数据库备份的血泪史的相关文章

mysql5.7 innodb数据库备份工具Xtrabackup的安装

mysql5.7 innodb数据库备份工具Xtrabackup的安装     wget mhttps://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.7/binary/redhat/6/x86_64/percona-xtrabackup-24-2.4.7-1.el6.x86_64.rpm Mysql5.7需要安装XtraBackup 2.4.1以上版本 官网地址 https://www.percona.com/down

java sql编辑器 动态报表 数据库备份还原 quartz定时任务调度 自定义表单 java图片爬虫

获取[下载地址]   QQ: 313596790   [免费支持更新] 三大数据库 mysql  oracle  sqlsever   更专业.更强悍.适合不同用户群体 [新录针对本系统的视频教程,手把手教开发一个模块,快速掌握本系统] A 集成代码生成器(开发利器)+快速构建表单;            QQ:313596790 freemaker模版技术 ,0个代码不用写,生成完整的一个模块,带页面.建表sql脚本,处理类,service等完整模块 B 集成阿里巴巴数据库连接池druid;

ThinkPHP3.2.3 数据库备份与定时任务

1.需求: 定时执行数据库备份2.新建一个定时任务入口文件, 命名为cron.php (与index.php同一级目录) 关于$argv 测试cron.php Home模块下IndexController的aa操作方法 首先查看PHP命令位置 执行命令, 通过cron.php里面的m c a 分配, 从而调用Home模块下Index控制器aa操作方法 3.在Admin模块添加一个CronController.php 执行crontab命令 crontab -e 每隔十分钟备份一下数据库 至此,

mysql数据库备份脚本

自动备份Mysql脚本: 如下脚本为mysql自动备份脚本,仅供参考,可以根据实际情况修改. #!/bin/sh #auto backup mysql #20170329 #Define PATH定义变量 BAKDIR=/data/backup/mysql/`date +%Y-%m-%d` MYSQLDB=webapp MYSQLPW=backup MYSQLUSR=backup #must use root user run scripts 必须使用root用户运行,$UID为系统变量 if

Oracle数据库备份恢复基础讲解_超越OCP精通Oracle视频教程培训12

Oracle视频教程目标 Oracle视频教程,风哥本套oracle教程培训学习Oracle数据库备份恢复概念及基础,包括:Oracle常见的故障类型.Oracle备份的重要性及备份策略.Oracle如何制定合适的备份策略保证高效备份.Oracle备份分类.MTTR,MTBR,MTTF.Oracle物理备份与逻辑备份.Oracle备份恢复的工具及Oracle还原与恢复介绍. 适用人群 IT相关从业人员.Oracle数据库技术人员.想加工资的.想升职的都可以. 视频在线学习地址: http://e

xtrabackup进行MySQL数据库备份/还原

http://hongge.blog.51cto.com/ 使用xtrabackup进行MySQL数据库备份 前面介绍mysqldump备份方式是采用逻辑备份,其最大的缺陷就是备份和恢复速度都慢,对于一个小于50G的数据库而言,这个速度还是能接受的,但如果数据库非常大,那再使用mysqldump备份就不太适合了. 这时就需要一种好用又高效的工具,xtrabackup就是其中一款,号称免费版的InnoDB HotBackup. Xtrabackup实现是物理备份,而且是物理热备 目前主流的有两个工

SQL Server 维护计划实现数据库备份(策略实战)

一.背景 之前写过一篇关于备份的文章:SQL Server 维护计划实现数据库备份,上面文章使用完整备份和差异备份基本上能解决数据库备份的问题,但是为了保障数据更加安全,我们需要再次完善我们的备份计划: 下面这篇文章主要加入了日志备份,并对设计备份的频率和设计命名规范等问题进行实战: 二.最佳实践 (一) 备份计划 1) 每周星期日的2:00:00执行数据库的完整备份: 2) 每周星期一至星期六每天的2:00:00执行数据库的差异备份: 3) 每天在8:00:00和23:59:59之间.每1小时

第三章 数据库备份和还原

一.数据库恢复模式 1.完整:能够让数据库恢复到出现故障的时间点和指定时间点(主要是日志文件完 整备份) 2.大容量日志:数据库日志不记录对数据修改的时间(即指定的时间点)效率高只 能通过日志恢复到故障点 3.简单:对事务日志不活跃的逻辑日志文件覆盖重复利用(日志写满后覆盖完成的 提交的事务日志)不能利用日志还原数据库,只能利用完整数据库文件恢 复 1)简单恢复模式 数据库备份和还原策略 数据小 数据变化不大 数据库不能恢复到出现故障的时间点(重复擦写日志文件) 完整数据库备份  完整的数据库备

数据库备份

--1.创建目录CREATE DIRECTORY dump1_dir AS 'E:\backup';SELECT*FROM Dba_Directories;DROP DIRECTORY dump1_dir;SELECT*FROM Dba_Directories; --2.授予用户操作dump_dir目录的权限GRANT READ,WRITE ON DIRECTORY dump_dir TO scott; --3.创建测试用户user1并授权CREATE USER user1 IDENTIFIED