在数据库表丢失或损坏的情况下,备份你的数据库是很重要的。如果发生系统崩溃,你肯定想能够将你的表尽可能丢失最少的数据恢复到崩溃发生时的状态。本文主要对MyISAM表做备份恢复。

备份策略一:直接拷贝数据库文件(不推荐)

备份策略二:使用mysqlhotcopy备份数据库(完全备份,适合小型数据库备份)

备份策略三:使用mysqldump备份数据库(完全+增量备份,适合中型数据库备份)

备份策略四:使用主从复制机制(replication)(实现数据库实时备份)

脚本下载地址:点击下载脚本

备份策略一、直接拷贝数据库文件

直接拷贝数据文件最为直接、快速、方便,但缺点是基本上不能实现增量备份。为了保证数据的一致性,需要在备份文件前,执行以下 SQL 语句:

FLUSH TABLES WITH READ LOCK;

也就是把内存中的数据都刷新到磁盘中,同时锁定数据表,以保证拷贝过程中不会有新的数据写入。这种方法备份出来的数据恢复也很简单,直接拷贝回原来的数据库目录下即可。

备份策略二、使用mysqlhotcopy备份数据库

mysqlhotcopy 是一个 PERL 程序,最初由Tim Bunce编写。它使用 LOCK TABLES、FLUSH TABLES 和 cp 或 scp 来快速备份数据库。它是备份数据库或单个表的最快的途径,但它只能运行在数据库文件(包括数据表定义文件、数据文件、索引文件)所在的机器上,并且mysqlhotcopy 只能用于备份 MyISAM表。

本备份策略适合于小型数据库的备份,数据量不大,可以采用mysqlhotcopy程序每天进行一次完全备份。

备份策略布置:

(1)、安装DBD-mysql perl模块,支持mysqlhotcopy脚本连接到MySQL数据库。

shell> tar -xzvf  DBD-mysql-4.005.tar.gz

shell> cd DBD-mysql-4.005

shell> unset LANG

shell> perl Makefile.PL -mysql_config=/usr/local/mysql/bin/mysql_config -testuser=root -testpassword=UserPWD

shell> make

shell> make test

shell> make install

(2)、设置crontab任务,每天执行备份脚本

shell> crontab -e

0 3 * * * /root/MySQLBackup/mysqlbackup.sh >/dev/null 2>&1

每天凌晨3:00执行备份脚本。

mysqlbackup.sh注释:

#!/bin/sh

# Name:mysqlbackup.sh

# PS:MySQL DataBase Backup,Use mysqlhotcopy script.

# Write by:i.Stone

# Last Modify:2007-11-15

#

# 定义变量,请根据具体情况修改

# 定义脚本所在目录

scriptsDir=`pwd`

# 数据库的数据目录

dataDir=/usr/local/mysql/data/

# 数据备份目录

tmpBackupDir=/tmp/tmpbackup/

backupDir=/tmp/mysqlbackup/

# 用来备份数据库的用户名和密码

mysqlUser=root

mysqlPWD=111111

# 定义eMail地址

eMail=alter@somode.com

# 如果临时备份目录存在,清空它,如果不存在则创建它

if [[ -e $tmpBackupDir ]]; then

rm -rf $tmpBackupDir/*

else

mkdir $tmpBackupDir

fi

# 如果备份目录不存在则创建它

if [[ ! -e $backupDir ]];then

mkdir $backupDir

fi

# 清空MySQLBackup.log

if [[ -s MySQLBackup.log ]]; then

cat /dev/null >MySQLBackup.log

fi

# 得到数据库备份列表,在此可以过滤不想备份的数据库

for databases in `find $dataDir -type d | \

sed -e “s/\/usr\/local\/mysql\/data\///” | \

sed -e “s/test//”`; do

if [[ $databases == "" ]]; then

continue

else

# 备份数据库

/usr/local/mysql/bin/mysqlhotcopy –user=$mysqlUser –password=$mysqlPWD -q “$databases” $tmpBackupDir

dateTime=`date “+%Y.%m.%d %H:%M:%S”`

echo “$dateTime Database:$databases backup success!” >>MySQLBackup.log

fi

done

# 压缩备份文件

date=`date -I`

cd $tmpBackupDir

tar czf $backupDir/mysql-$date.tar.gz ./

# 发送邮件通知

if [[ -s MySQLBackup.log ]]; then

cat MySQLBackup.log | mail -s “MySQL Backup” $eMail

fi

# 使用smbclientmv.sh脚本上传数据库备份到备份服务器

# $scriptsDir/smbclientmv.sh

smbclientmv.sh注释

#!/bin/sh

# Name:smbclientmv.sh

# PS:Move the data to Backup Server.

# Write by:i.Stone

# Last Modify:2007-11-15

#

# 定义变量

# 备份服务器名

BackupServer=”BackupServerName”

# 共享文件夹名

BackupShare=”ShareName”

# 备份服务器的访问用户名和密码

BackupUser=”SMBUser”

BackupPW=”SMBPassword”

# 定义备份目录

BackupDir=/tmp/mysqlbackup

date=`date -I`

# Move the data to BackupServer

smbclient //$BackupServer/$BackupShare \

$BackupPW -d0 -W WORKGROUP -U $BackupUser \

-c “put $BackupDir/mysql-$date.tar.gz \

mysql-$date.tar.gz”

# Delete temp files

rm -f $BackupDir/mysql-$date.tar.gz

(3)、恢复数据库到备份时的状态

mysqlhotcopy 备份出来的是整个数据库目录,使用时可以直接拷贝到 mysqld 指定的 datadir (在这里是 /usr/local/mysql/data/)目录下即可,同时要注意权限的问题,如下例:

shell> cp -rf db_name /usr/local/mysql/data/

shell> chown -R mysql:mysql /usr/local/mysql/data/ (将 db_name 目录的属主改成 mysqld 运行用户)

本套备份策略只能恢复数据库到最后一次备份时的状态,要想在崩溃时丢失的数据尽量少应该更频繁的进行备份,要想恢复数据到崩溃时的状态请使用主从复制机制(replication)。

mysql数据库恢复策略_MySQL 备份和恢复策略(一)相关推荐

  1. 备份mysql数据库攻略_mysql备份实例攻略

    本文系统Centos6.0 首先普及下备份术语:热备份:读.写不受影响: 温备份:仅可以执行读操作: 冷备份:离线备份:读.写操作均中止: 我们备份,一般备份以下几个部分: 1.数据文件 2.日志文件 ...

  2. mysql数据库的在线数据备份与数据恢复

    MySQL是一种常用的关系型数据库管理系统,它支持在线备份和恢复数据.在线备份指的是在MySQL数据库运行时备份数据,而不会中断或影响现有的数据库服务.在本文中,我们将介绍MySQL数据库的在线数据备 ...

  3. 简述mysql完全备份过程_【SQL】MySQL之使用mysqldump全备份及恢复过程详解_MySQL

    mysqldump bitsCN.com [SQL]MySQL之使用mysqldump全备份及恢复过程详解 [目标]使用mysqldump做全备,结合mysql自带的binlog功能实现增量备份 为了 ...

  4. Oracle数据库教程(Oracle备份、恢复、升级、迁移)视频教程

    Oracle数据库教程(Oracle备份.恢复.升级.迁移)视频教程 风哥Oracle备份恢复与迁移升级专题包括:Oracle备份恢复基础.用户模式的备份恢复.RMAN备份恢复.Flashback闪回 ...

  5. MySQL数据库的mysqldump完全备份、binlog的增量备份与还原

    MySQL数据库的mysqldump完全备份.binlog的增量备份与还原 一. 备份的目的: 做灾难性恢复:对损坏的书籍进行恢复和还原 需求改变:因需求改变而需要把数据还原到改变以前 二. 备份需要 ...

  6. linux上mysql定时备份数据库数据_Linux下如何实现MySQL数据库每天定时自动备份

    在云计算的浪潮下,企业多将业务部署在云上.对于数据库中的数据,直接使用云数据库自带的备份功能实现备份,操作简单.但是云数据库备份数据的存储空间有限制,一旦超出存储量便自动关闭备份功能,运维人员往往也会 ...

  7. oracle数据备份 恢复,Oracle数据备份和恢复

    Oracle数据库的备份和恢复有很多种方法,是一个很大的话题,足可以写一本书,但是,本文只介绍采用exp和imp进行数据备份和恢复,这也是程序员最常用的方法. 本文涉及的备份与恢复的其它概念都是狭义的 ...

  8. Linux mysql数据库每天定时自动备份数据

    liunx mysql数据库每天定时自动备份数据 创建一个shell文件,把如下代码放入创建的shell文件中并保存 1.sh脚本 #备份文件后缀时间 time='date +%Y%m%d%H'; # ...

  9. mysql 5.6.17 备份还原_mysql 备份和恢复

    7. 备份和恢复 本章主要会介绍: 1.备份的类型:逻辑备份,物理备份,全备和增量4种 2.创建备份的方法 3.还原方法,包括还原到时间点 4.备份计划,压缩和加密 5.表维护,恢复损坏的表 7.1备 ...

最新文章

  1. python xlwings下载_Python学习随笔:使用xlwings读取和操作Execl文件
  2. t7910安装linux体会_linux心得体会范文
  3. C++变量命名规则和数据类型
  4. Visual Studio C/C++ 相对路径和绝对路径
  5. 安装ubuntu 13.04
  6. Jquery日历编写小练习
  7. 如何提高go代码覆盖率_如何通过静态分析提高iOS代码质量
  8. html加图形验证码,canvas基础之图形验证码的示例
  9. 运维的核心竞争力是什么
  10. php三步运算法,小技巧----“三步翻转法”
  11. 人人都有个Handler原理讲解
  12. 电驴搜索服务器正在连接,电驴连接不上服务器导致无法搜索解决的方法介绍
  13. uni-app,H5抽奖
  14. e-Learning e-learning 创造竞争优势
  15. Bluefish编辑成果即时预览
  16. python是一种解释型、面向什么的计算机程序设计语言_python语言是一种什么类型...
  17. html5 3d背景墙,3D背景墙的价格怎样?3D背景墙的介绍?
  18. 2018年关于人工智能、大数据和分析的十大预测
  19. 华为Nova10Pro、小米12Pro和vivoS15Pro的区别 哪个好
  20. 搜狐首页出现一个硕大的错别字

热门文章

  1. 关系的三类完整性约束
  2. PostgreSQL 入门
  3. 前端之 XMLHttpRequest
  4. c语言有趣代码_为什么C语言永远不会过时?
  5. 两种解除禁止右键、选中、复制的方法
  6. 互斥锁和读写锁的区别
  7. linux头文件 库,Linux操作系统的头文件和库文件搜索路径
  8. easyexcel 填充模板 格式变了_Qamp;A | 如何制作规范的电子合同模板?
  9. Dart中的mixins
  10. ThinkPHP 数据库操作(七) : 视图查询、子查询、原生查询