mysql用mysqldump进行增量备份,如何搞啊?有详细思路以及命令吗?

mysqldbd 2010-12-15 11:31:28
mysql用mysqldump进行增量备份,如何搞啊?有详细思路以及命令吗?

我看网上的例子:

echo "" > $eMailFile
echo $(date +"%y-%m-%d %H:%M:%S") >> $eMailFile
#
# 刷新日志,使数据库使用新的二进制日志文件
$mysqlDir/bin/mysqladmin -u$user -p$userPWD flush-logs
cd $dataDir
# 得到二进制日志列表
fileList=`cat $HOSTNAME-bin.index`
iCounter=0
for file in $fileList
do
iCounter=`expr $iCounter + 1`
done
nextNum=0
iFile=0
for file in $fileList
do
binLogName=`basename $file`
nextNum=`expr $nextNum + 1`
# 跳过最后一个二进制日志(数据库当前使用的二进制日志文件)
if [[ $nextNum == $iCounter ]]; then
echo "Skip lastest!" > /dev/null
else
dest=$dailyBackupDir/$binLogName
# 跳过已经备份的二进制日志文件
if [[ -e $dest ]]; then
echo "Skip exist $binLogName!" > /dev/null
else
# 备份日志文件到备份目录
cp $binLogName $dailyBackupDir
if [[ $? == 0 ]]; then
iFile=`expr $iFile + 1`
echo "$binLogName Backup Success!" >> $eMailFile
fi
fi
fi
done
if [[ $iFile == 0 ]];then
echo "No Binlog Backup!" >> $eMailFile
else
echo "Backup $iFile File(s)." >> $eMailFile


不知道他是在哪里使用mysqldump来进行增量备份的,好像是直接copy日志文件的吧!为什么不用mysqldump命令呢?
...全文
622 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
zuoxingyu 2010-12-15
  • 打赏
  • 举报
回复
每次备份成功后,把已经备份的都删除掉,这样就不需要判断是否已经备份了。

另外也可以去备份目的地查找文件每次是否已经存在,不存在的则复制过去。
mysqldbd 2010-12-15
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 acmain_chm 的回复:]
引用那这些shell脚本是怎么知道哪些bin日志已经备份了,哪些还没有备份过呢?有什么标志?无法知道。 一般是备份通过MYSQL完后删除已备份的BINLOG
[/Quote]

删除?那么在/var/目录下,除数据文件,每次只有最新的未备份的日志文件了?
ACMAIN_CHM 2010-12-15
  • 打赏
  • 举报
回复
[Quote]那这些shell脚本是怎么知道哪些bin日志已经备份了,哪些还没有备份过呢?有什么标志?[/Quote]无法知道。 一般是备份通过MYSQL完后删除已备份的BINLOG
mysqldbd 2010-12-15
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 zuoxingyu 的回复:]
# 跳过最后一个二进制日志(数据库当前使用的二进制日志文件)
if [[ $nextNum == $iCounter ]]; then
echo "Skip lastest!" > /dev/null
else
dest=$dailyBackupDir/$binLogName
# 跳过已经备份的二进制日志文件
if [[ -e $dest ]]; then
echo "Skip ex……
[/Quote]

那这些shell脚本是怎么知道哪些bin日志已经备份了,哪些还没有备份过呢?有什么标志?
zuoxingyu 2010-12-15
  • 打赏
  • 举报
回复
# 跳过最后一个二进制日志(数据库当前使用的二进制日志文件)
if [[ $nextNum == $iCounter ]]; then
echo "Skip lastest!" > /dev/null
else
dest=$dailyBackupDir/$binLogName
# 跳过已经备份的二进制日志文件
if [[ -e $dest ]]; then
echo "Skip exist $binLogName!" > /dev/null
else
# 备份日志文件到备份目录



最后一个正在使用的不备份,已经备份过的不备份。

每天晚上3点做这个备份操作,都能够备份前一天3点到今天3点的。
mysqldbd 2010-12-15
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 zuoxingyu 的回复:]
$mysqlDir/bin/mysqladmin -u$user -p$userPWD flush-logs

他在这里刷新日志文件了。后面的操作就是备份以前的日志文件而已。

mysqldump用于全备,日志用于增备。
[/Quote]

什么地方是保证 每天增量备份昨天3点到今天3点的日志文件呢?
zuoxingyu 2010-12-15
  • 打赏
  • 举报
回复
$mysqlDir/bin/mysqladmin -u$user -p$userPWD flush-logs

他在这里刷新日志文件了。后面的操作就是备份以前的日志文件而已。

mysqldump用于全备,日志用于增备。
ACMAIN_CHM 2010-12-15
  • 打赏
  • 举报
回复
参考手册中的说明。

[Quote=MySQL 5.1参考手册]5.9. 备份与恢复
5.9.1. 数据库备份
5.9.2. 示例用备份与恢复策略
5.9.3. 自动恢复
5.9.4. 表维护和崩溃恢复
5.9.5. myisamchk:MyISAM表维护实用工具
5.9.6. 建立表维护计划
5.9.7. 获取关于表的信息
本节讨论如何进行数据库备份(完全备份和增量备份),以及如何执行表的维护。本节描述的SQL语句语法参见第5章:数据库管理。此处提供的大多数信息主要适合MyISAM表。InnoDB备份程序参见15.2.8节,“InnoDB数据库的备份和恢复”。

5.9.1. 数据库备份
因为MySQL表保存为文件方式,很容易...[/Quote]
ACMAIN_CHM 2010-12-15
  • 打赏
  • 举报
回复
mysqldump 一般是用于全备,并不是用于增量备份的。

MYSQL中增备是用BINLOG来实现的。
小小小小周 2010-12-15
  • 打赏
  • 举报
回复
mysql 增量备份就是备份其2进制日志文件.
mysqldbd 2010-12-15
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 zuoxingyu 的回复:]
每次备份成功后,把已经备份的都删除掉,这样就不需要判断是否已经备份了。

另外也可以去备份目的地查找文件每次是否已经存在,不存在的则复制过去。
[/Quote]

恩,明白了了,谢谢!

56,677

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧