CentOS下使用mysqlhotcopy定时备份MySQL数据库(MyISAM存储引擎)

CentOS下使用mysqlhotcopy定时备份MySQL数据库(MyISAM存储引擎)

mysqlhotcopy与mysqldump比较:

  1. 前者是一个快速文件意义上的COPY,后者是一个数据库端的SQL语句集合。
  2. 前者只能运行在数据库目录所在的机器上,后者可以用在远程客户端,不过备份的文件还是保存在服务器上。
  3. 相同的地方都是在线执行 LOCK TABLES 以及 UNLOCK TABLES
  4. 前者恢复只需要COPY备份文件到源目录覆盖即可,后者需要导入SQL文件到原库中。(source 或 mysql < bakfile.sql)
  5. 前者只适用于 MyISAM 引擎,而后则则可同时使用于MyISAM引擎和InodDB引擎.
  6. 前者在使用前必须安装perl-DBD-mysql包,而后者则不需要.


使用mysqlhotcopy之前需要安装perl-DBI和DBD-mysql:

yum -y install perl perl-DBI
Shell脚本如下:
# Name:mysqlbackup.sh
# PS:MySQL DataBase Backup,Use mysqlhotcopy script.
# Last Modify:2008-06-12
# 定义变量,请根据具体情况修改
# 定义脚本所在目录
scriptsDir=`pwd`
# 数据库的数据目录
dataDir=/usr/local/mysql/var/
# 数据备份目录
tmpBackupDir=/tmp/mysqlblackup
backupDir=/home/backup/mysql
# 用来备份数据库的用户名和密码
mysqlUser=root
mysqlPWD='456123'
# 如果临时备份目录存在,清空它,如果不存在则创建它
if [[ -e $tmpBackupDir ]]; then
        rm -rf $tmpBackupDir/*
else
        mkdir $tmpBackupDir
fi

# 如果备份目录不存在则创建孾C
if [[ ! -e $backupDir ]];then
        mkdir $backupDir
fi
# 得到数据库备份列表,在此可以过滤不想备份的数据库

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

sed -e "s/\/usr\/local\/mysql\/var\///" | \

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 ./

#End完成

加入定时任务

30 5 * * * /root/mysqlbackup.sh >> mysqlbackup.log 2>&1
如何还原?
1、停止mysql服务器。
2、复制备份的数据库目录到mysql数据目录下。
3、更改目录所有者为mysql服务器运行的用户(如mysql)。
4、启动mysql服务器

转载于:https://my.oschina.net/chinaearl/blog/111510

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值