在数据库表丢失或损坏的情况下,备份你的数据库是很重要的。如果发生系统崩溃,你肯定想能够将你的表尽可能丢失最少的数据恢复到崩溃发生时的状态。本文主要对MyISAM表做备份恢复。
备份策略一:直接拷贝数据库文件(不推荐)
备份策略二:
使用mysqlhotcopy备份数据库(完全备份,适合小型数据库备份)
备份策略三:使用
mysqldump
备份数据库(完全+增量备份,适合中型数据库备份)
备份策略四:使用
主从复制机制(replication)
(实现数据库实时备份)
脚本下载地址:
点击下载脚本
备份策略一、直接拷贝数据库文件
直接拷贝
数据文件最为直接、快速、方便,
但
缺点是基本上不能实现增量备份。为了保证数据的一致性,需要在
备份
文件前,执行以下SQL语句:
FLUSHTABLESWITHREADLOCK;
也就是把内存中的数据都刷新到磁盘中,同时锁定数据表,以保证拷贝过程中不会有新的数据写入。这种方法备份出来的数据恢复也很简单,直接拷贝回原来的数据库目录下即可。
备份策略二、
使用mysqlhotcopy备份数据库
mysqlhotcopy是一个PERL程序,最初由TimBunce编写。它使用LOCKTABLES、FLUSHTABLES和cp或scp来快速备份数据库。它是备份数据库或单个表的最快的途径,但它只能运行在数据库文件(包括数据表定义文件、数据文件、索引文件)所在的机器上
,并且
mysqlhotcopy只能用于备份MyISAM
表。
本备份策略适合于小型数据库的备份,数据量不大,可以采用
mysqlhotcopy程序每天进行一次完全备份。
备份策略布置:
(1)、安装DBD-mysqlperl模块,支持mysqlhotcopy脚本连接到MySQL数据库。
shell>tar-xzvfDBD-mysql-4.005.tar.gz
shell>cdDBD-mysql-4.005
shell>unsetLANG
shell>perlMakefile.PL-mysql_config=/usr/local/mysql/bin/mysql_config-testuser=root-testpassword=UserPWD
shell>make
shell>maketest
shell>makeinstall
(2)
、设置crontab任务,每天执行备份脚本
shell>crontab-e
03***/root/MySQLBackup/mysqlbackup.sh>/dev/null2>&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备份与恢复.docx
生产中Mysql备份恢复的形式,基于mysqldump备份及原理,基于Xtrabcackup备份及原理,表空间传输,binlog备份(增量),基于mysql全备+增备的恢复Tips
mysql备份和恢复方案mysql备份和恢复方案mysql备份和恢复方案mysql备份和恢复方案mysql备份和恢复方案mysql备份和恢复方案mysql备份和恢复方案mysql备份和恢复方案mysql备份和恢复方案mysql备份和恢复方案mysql备份...
MySQL备份与恢复,里面都做了详细解析.ppt
linux运维学习笔记:Mysql备份与恢复
MySQL 备份与恢复 目录: 备份的目的 备份的方式 备份的内容 备份的策略 恢复与还原 备份的工具
mysql备份与还原操作说明,dongjj为密码 你可以改为你的密码
为想要从事DBA或者相对mysql进一步了解,请看此操作文章,MySQL备份与恢复记录
MySQL 数据库备份 和 恢复
Mysql数据库的备份与还原参考文档。值得学习mysql数据相关学习。
MySQL 备份与恢复 手把手教学视频
mysql备份还原资料,mymysql备份还原资料mysql备份还原资料,sql备份还原资料,mysql备份还原资料
MySQL备份与还原..pdf
对mysql备份与恢复进行了整理,并且有例子进行说明,非常合适工作中常用到mysql备份与恢复的童鞋
Linux运维-运维课程d4-MySQL备份与恢复(重点)-18-逻辑备份之库级备份与还原.mp4
《MYSQL备份与恢复》之 Innodb与 MyISAM引擎 一、系统环境 1.1 ubuntu 12.0.4 X86_64 1.2 percona-xtrabackup-2.0.3.tar.gz 1.3 xtrabackup简介 xtrabackup是一个对InnoDB做数据备份的工具,支持在线热备份(备份时...
Mysql完全备份及恢复:mysqldump 对MyISAM 或InnoDB 完全备份,mysqlhotcopy 对MyISAM 完全备份。增量备份:使用二进制日志增量备份,使用mysqlbinlog 命令恢复二进制日志。SQL 语法备份及恢复。拷贝数据文件备份...
MySQL备份与恢复.mm