专注各种脚本编程
Baidu
加入收藏夹
本站内容有下面分类知识,欢迎您的到来^_^
shell相关:指令篇 基础篇 脚本欣赏 编程实例 shell问问 shell视频教程 技巧篇 水平测试 E文资料 vi编辑器 高级Bash脚本编程指南
其他:mysql perl c语言 oracle
当前位置:| 主页>mysql>

使用mysqldump定时备份数据库的脚本--MySql基础知识(经典版)

百度收藏 QQ搜藏

2、使用mysqldump定时备份数据库的脚本
2.1、备份脚本
使用脚本每天定期执行数据库备份操作,对每个使用mysql数据库的人来说都很有必要,这样的脚本网上有很多,这里摘抄一个朋友的脚本 dbbackup:
 这个脚本每天最多只执行一次,而且只保留最近五天的备份在服务器上。
 
dbbackup代码:
 
#!/bin/bash
#This is a ShellScript For Auto DB Backup
#Powered by aspbiz
#2004-09
 
#Setting
#设置数据库名,数据库登录名,密码,备份路径,日志路径,数据文件位置,以及备份方式
#默认情况下备份方式是tar,还可以是mysqldump,mysqldotcopy
#默认情况下,用root(空)登录mysql数据库,备份至/root/dbxxxxx.tgz
DBName=mysql
DBUser=root
DBPasswd=
BackupPath=/root/
LogFile=/root/db.log
DBPath=/var/lib/mysql/
#BackupMethod=mysqldump
#BackupMethod=mysqlhotcopy
#BackupMethod=tar
#Setting End
 
 
NewFile="$BackupPath"db$(date +%y%m%d).tgz
DumpFile="$BackupPath"db$(date +%y%m%d)
OldFile="$BackupPath"db$(date +%y%m%d --date='5 days ago').tgz
 
echo "-------------------------------------------" >> $LogFile
echo $(date +"%y-%m-%d %H:%M:%S") >> $LogFile
echo "--------------------------" >> $LogFile
#Delete Old File
if [ -f $OldFile ]
then
 rm -f $OldFile >> $LogFile 2>&1
 echo "[$OldFile]Delete Old File Success!" >> $LogFile
else
 echo "[$OldFile]No Old Backup File!" >> $LogFile
fi
 
if [ -f $NewFile ]
then
 echo "[$NewFile]The Backup File is exists,Can't Backup!" >> $LogFile
else
 case $BackupMethod in
 mysqldump)
     if [ -z $DBPasswd ]
     then
        mysqldump -u $DBUser --opt $DBName > $DumpFile
     else
        mysqldump -u $DBUser -p$DBPasswd --opt $DBName > $DumpFile
     fi
     tar czvf $NewFile $DumpFile >> $LogFile 2>&1
     echo "[$NewFile]Backup Success!" >> $LogFile
     rm -rf $DumpFile
     ;;
 mysqlhotcopy)
     rm -rf $DumpFile
     mkdir $DumpFile
     if [ -z $DBPasswd ]
     then
       mysqlhotcopy -u $DBUser $DBName $DumpFile >> $LogFile 2>&1
     else
        mysqlhotcopy -u $DBUser -p $DBPasswd $DBName $DumpFile >>$LogFile 2>&1
     fi
     tar czvf $NewFile $DumpFile >> $LogFile 2>&1
     echo "[$NewFile]Backup Success!" >> $LogFile
     rm -rf $DumpFile
     ;;
 *)
     /etc/init.d/mysqld stop >/dev/null 2>&1
     tar czvf $NewFile $DBPath$DBName >> $LogFile 2>&1
     /etc/init.d/mysqld start >/dev/null 2>&1
     echo "[$NewFile]Backup Success!" >> $LogFile
     ;;
 esac
fi
 
echo "-------------------------------------------" >> $LogFile

 
2.2、放入crontab定期执行dbbackup
假定dbbackup在/root目录下。我们通过使用crontab命令,设置每天0点10分执行/root/dbbakup脚本。
1、 使用crontab –e 编辑crontab
2、 在crontab中加入:
 
#back for mysql database
10 0 * * * /root/dbbackup

 
新增:
 
 1)、把远程mysql服务器上的选定表的指定数据导入到本地的文本文件中:
[hello@localhost hello]$ mysqldump -hhostname -uusername -p -w "last>'2007-01-01'" dbname tablename > ./filename
Enter password:

2)、把远程mysql服务器上的选定数据库的全部数据导入到本地的文本文件中:
[hello@localhost hello]$ mysqldump -hhostname -uusername -p dbname > ./filename
Enter password:

3)、把远程mysql服务器上的选定表的指定数据导入到服务器的文本文件中(所以在本地不能操作如下):
mysql> use dbname;
mysql> select fieldname into outfile '/home/hello/a.txt' from tablename where last>"2007-1-1";
ERROR 1045: Access denied for user: 'hello@%' (Using password: YES)
mysql>

4)、把远程mysql服务器上的选定表的指定数据导入到本地的文本文件中:

[hello@localhost hello]$  mysql -e  "select fieldname from tablename where last>'2007-1-1'"  -hhostname -uusername -p dbname > ./filename
Enter password: 

上一篇:使用mysqldump备份Mysql数据--mysql基础知识(经典版) 下一篇:MySQL同步实例方法解决

power by soyo123 2007-2008