编写一个shell脚本每天16:30备份mysql数据并压缩打包(打包文件按照当天的日期命名)放到/root/data
#cd /root#vim mysqlbackup.sh#!/bin/bashtime=`date +%Y-%m-%d`backupdir=/root/dataif [ ! -d "$backupdir" ]thenmkdir -p $backupdirfiif [ -f "$time"_all_databases.sql ]thenrm -rf "$time"_all_databases.sqlficd $backupdir/usr/bin/mysqldump -uroot -pmysql.rzrk --all-databases > "$time"_all_databases.sql/bin/tar -czf "$time"_all_databases.sql.tar.gz "$time"_all_databases.sqlrm -rf "$time"_all_databases.sqlsed -i ‘/mysqlbackup.sh/d‘ /var/spool/cron/rootecho ‘30 16 * * * /root/mysqlbackup.sh‘ >> /var/spool/cron/root#chmod +x mysqlbackup.sh
注释:
1 mysqldump --all-databases 表示备份mysql中所有的数据库。
2 date +‘%Y-%m-%d‘ == date +%F
3 crontab -l 编辑的配置文件在/var/spool/cron下(redhat的),suse的在/var/spool/cron/tabs下
本文出自 “天道酬勤” 博客,请务必保留此出处http://luzhi1024.blog.51cto.com/8845546/1654077
写一个脚本定时自动备份mysql到指定目录
标签:mysql 命名 自动备份 mysqldump
小编还为您整理了以下内容,可能对您也有帮助:
实现MySQL的自动备份
MySQL数据库的备份是非常重要的工作之一 通过MySQL数据库的数据备份就能够实现MySQL数据库中数据的绝对安全 MySQL数据库中的数据不会因为什么小故障而丢失 自动备份则是更为方便的一种备份方式 下文中将给出详细的解析
MySql自动备份是非常关键的 特别是对于DBA来说 这里主要用代码来说明这个问题 希望对各位有所帮助 可以将这个脚本放进crontab 每天凌晨执行一次 自动备份
这个脚本每天最多只执行一次 而且只保留最近五天的备份在服务器上
代码
#!/bin/bash
#ThisisaShellScriptForAutoDBBackup
#Poweredbyaspbiz
#
#Setting
#设置数据库名 数据库登录名 密码 备份路径 日志路径 数据文件位置 以及备份方式
#默认情况下备份方式是tar 还可以是mysqlmp mysqldotcopy
#默认情况下 用root(空)登录mysql数据库 备份至/root/dbxxxxx tgz
DBName=mysql
DBUser=root
DBPasswd=
BackupPath=/root/
LogFile=/root/db log
DBPath=/var/lib/mysql/
#BackupMethod=mysqlmp
#BackupMethod=mysqlhotcopy
#BackupMethod=tar
#SettingEnd
NewFile= $BackupPath db$(date+%y%m%d) tgz
DumpFile= $BackupPath db$(date+%y%m%d)
OldFile= $BackupPath db$(date+%y%m%d date= daysago) tgz
echo 》$LogFile
echo$(date+ %y %m %d%H:%M:%S )》$LogFile
echo 》$LogFile
#DeleteOldFile
if[ f$OldFile]
then
rm f$OldFile》$LogFile >&
echo [$OldFile]DeleteOldFileSuccess! 》$LogFile
else
echo [$OldFile]NoOldBackupFile! 》$LogFile
fi
if[ f$NewFile]
then
echo [$NewFile]TheBackupFileisexists CantBackup! 》$LogFile
else
case$BackupMethodin
mysqlmp)
if[ z$DBPasswd]
then
mysqlmp u$DBUser opt$DBName>$DumpFile
else
mysqlmp u$DBUser p$DBPasswd opt$DBName>$DumpFile
fi
tarczvf$NewFile$DumpFile》$LogFile >&
echo [$NewFile]BackupSuccess! 》$LogFile
rm rf$DumpFile
;;
mysqlhotcopy)
rm rf$DumpFile
mkdir$DumpFile
if[ z$DBPasswd]
then
mysqlhotcopy u$DBUser$DBName$DumpFile》$LogFile >&
else
mysqlhotcopy u$DBUser p$DBPasswd$DBName$DumpFile》$LogFile >&
fi
tarczvf$NewFile$DumpFile》$LogFile >&
echo [$NewFile]BackupSuccess! 》$LogFile
rm rf$DumpFile
;;
*)
/etc/init d/mysqldstop>/dev/null >&
tarczvf$NewFile$DBPath$DBName》$LogFile >&
/etc/init d/mysqldstart>/dev/null >&
echo [$NewFile]BackupSuccess! 》$LogFile
;;
esac
fi
echo 》$LogFile
lishixin/Article/program/MySQL/201311/29400如何每天自动备份MySql文件
随着数据库在网站建设中的不断应用,现如今绝大多数网站已经离不开数据库支持了,因为数据库不仅可以存储网站内容等信息,还可以存储用户提交的信息。由于这些信息非常宝贵,一旦丢失几乎难以挽回。
所有站长不仅要注意备份服务器上的网页html文件,图片或者程序代码,还要对数据库文件优先进行备份。
最简单的数据库备份可以通过phpMyAdmin手动备份并下载文件到指定位置,但是对于那些需要每天及时备份的站长来说,手动备份数据库比较麻烦,所以本文讲解一下如何利用国外主机的时钟程序配合shell命令代码实现每天定时备份数据库文件并下载到指定目录。
shell备份数据库
首先创建一个文件命名为:“backup.sh”,在其中输入以下命令:
#!/bin/bash
# Set a value that we can use for a datestamp
DATE=`date +%Y-%m-%d` $
# Our Base backup directory
BASEBACKUP="/backup/daily"
for DATABASE in `cat /backup/db-list.txt`
do
# This is where we throw our backups.
FILEDIR="$BASEBACKUP/$DATABASE"
# Test to see if our backup directory exists.
# If not, create it.
if [ ! -d $FILEDIR ]
then
mkdir -p $FILEDIR
fi
echo -n "Exporting database: $DATABASE"
mysqlmp --user=root --opt $DATABASE | gzip -c -9 > $FILEDIR/$DATABASE-$DATE.sql.gz
echo " ......[ Done Exporting to local backup, now exporting for remote backup] "
cp $FILEDIR/$DATABASE-$DATE.sql.gz /backup/uploads/$DATABASE.sql.gz
echo " .......[Done]"
done
# AutoPrune our backups. This will find all files
# that are "MaxFileAge" days old and delete them.
MaxFileAge=4
find $BASEBACKUP -name '*.gz' -type f -mtime +$MaxFileAge -exec rm -f {} \;
简单来说,这个命令会从db-list.txt文件(一个记录有数据库名称的列表文本文件)中逐行调取数据库并输出+压缩数据文件(datastamped )到/backup/daily/databasename/目录下面;然后该命令有把一个 non-datestamped 文件存储到/backup/uploads/目录下面,并覆盖掉原有的文件。
同时,为了节约资源,该命令会自动删掉4天前的数据库文件。
时钟命令(Cron Jobs)
备份完之后要利用时钟命令将数据库备份以及存储以自动的方式每天执行,首先需要激活backup.sh;
10 4 * * * sh / backup/backup.sh
这个命令是让服务器每天早上4:10分开始执行数据库备份,当然什么时间执行是取决你的。
然后在时钟命令中输入以下命令:
10 6 * * * /usr/local/bin/ncftpput -Ef /home/admin/ncftpputlogin / /backup/uploads/*
这个命令是告诉一个命名为ncftpput的程序(该程序位于ncftputlogin目录下)每天早上6:10将数据库文件上传到/backup/uploads目录下面。ncftpputlogin目录中存有服务器的用户信息,如果你的服务器没有安装ncftp,你可以自己安装一个,很简单。
总结
如果你的数据库文件较大,可能备份的时候需要占用很多服务器资源,所以站长要尽量选择访客最少的时间段执行自动备份命令,比如凌晨4-5点左右。而且要注意给备份留下足够的时间然后执行存储命令。
因为一个服务器可能会遭到天灾人祸,备份的数据库文件要存在不同的服务器或者下载到本地更保险。
Linux自动备份MySQL数据库的实用方法
MySQL定期备份是一项重要的工作,但人工操作太繁琐,也难避免有所疏漏,使用下面的方法即可让系统定期备份数据。
◆1、创建备份文件夹
#cd /www
#makedir backup
◆2、编写运行脚本
#vi autobackup
写入以下内容:
filename=`date +%Y%m%d`
mysql_bin_dir/mysqlmp _opt dataname -u user -ppassword | gzip
/www/mysqlbackup/name$filename.gz
保存退出
说明:
(1)mysql_bin_dir:mysql的bin路径;
(2)dataname:数据库名;
(3)user:数据库用户名;
(4)password:用户密码;
(5)name:自定义备份文件前缀标识。
如上例,将自动备份mysql数据库,并以gzip压缩方式存储,文件名为name20080101.gz的形式。
◆3、为脚本添加执行权限
#chmod +x autobackup
◆4、让crontab来完成定期执行的任务
这一步中,Redhat的方法会不一样,后面专门给出。
编辑crontab:
#vi /etc/crontab
在最后一行中加入:
01 5 * * * root /www/autobackup
每天5点运行脚本,也可以修改5为其他指定时间。
Redhat方法:
Redhat的crontab采用按时间调用4个目录(/etc/cron.hourly:每小时;/etc/cron.daily:每天;/etc/cron.weekly:每周;/etc/cron.monthly:每月)中脚本出来运行的方式。
Redhat中只需要将刚才编辑的脚本复制到相应的目录即可。
◆5、重启crontab
#/etc/rc.d/init.d/crond restart
完成。
Linux自动备份MySQL数据库的实用方法
MySQL定期备份是一项重要的工作,但人工操作太繁琐,也难避免有所疏漏,使用下面的方法即可让系统定期备份数据。
◆1、创建备份文件夹
#cd /www
#makedir backup
◆2、编写运行脚本
#vi autobackup
写入以下内容:
filename=`date +%Y%m%d`
mysql_bin_dir/mysqlmp _opt dataname -u user -ppassword | gzip
/www/mysqlbackup/name$filename.gz
保存退出
说明:
(1)mysql_bin_dir:mysql的bin路径;
(2)dataname:数据库名;
(3)user:数据库用户名;
(4)password:用户密码;
(5)name:自定义备份文件前缀标识。
如上例,将自动备份mysql数据库,并以gzip压缩方式存储,文件名为name20080101.gz的形式。
◆3、为脚本添加执行权限
#chmod +x autobackup
◆4、让crontab来完成定期执行的任务
这一步中,Redhat的方法会不一样,后面专门给出。
编辑crontab:
#vi /etc/crontab
在最后一行中加入:
01 5 * * * root /www/autobackup
每天5点运行脚本,也可以修改5为其他指定时间。
Redhat方法:
Redhat的crontab采用按时间调用4个目录(/etc/cron.hourly:每小时;/etc/cron.daily:每天;/etc/cron.weekly:每周;/etc/cron.monthly:每月)中脚本出来运行的方式。
Redhat中只需要将刚才编辑的脚本复制到相应的目录即可。
◆5、重启crontab
#/etc/rc.d/init.d/crond restart
完成。
linux系统下mySQL数据库 备份方法和脚本?
方法一、适合所有格式的mysql数据库,通过对数据库导出导进写个脚本定时执行:
1.导出整个数据库 mysqlmp -u 用户名 -p 数据库名 > 导出的文件名 mysqlmp -u wcnc -p smgp_apps_wcnc > /存放路径/wcnc.sql
2.导出一个表 mysqlmp -u 用户名 -p 数据库名 表名> 导出的文件名 mysqlmp -u wcnc -p smgp_apps_wcnc users> /存放路径/wcnc_users.sql
3.导出一个数据库结构 mysqlmp -u wcnc -p -d --add-drop-table smgp_apps_wcnc >/存放路径/wcnc_db.sql
定义:
-d 没有数据
--add-drop-table 在每个create语句之前增加一个drop table
4.导入数据库 常用source 命令 进入mysql数据库控制台:
如mysql -u root -p mysql>use 数据库
方法二、针对mysql数据表格式为MyISAM的
假如数据文件在/var/lib/mysql
那么直接写个脚本
cp -r /var/lib/mysql /备份到的文件夹路径
隔机备份用rsync增量,或定时完整备份。
linux系统下mySQL数据库 备份方法和脚本?
方法一、适合所有格式的mysql数据库,通过对数据库导出导进写个脚本定时执行:
1.导出整个数据库 mysqlmp -u 用户名 -p 数据库名 > 导出的文件名 mysqlmp -u wcnc -p smgp_apps_wcnc > /存放路径/wcnc.sql
2.导出一个表 mysqlmp -u 用户名 -p 数据库名 表名> 导出的文件名 mysqlmp -u wcnc -p smgp_apps_wcnc users> /存放路径/wcnc_users.sql
3.导出一个数据库结构 mysqlmp -u wcnc -p -d --add-drop-table smgp_apps_wcnc >/存放路径/wcnc_db.sql
定义:
-d 没有数据
--add-drop-table 在每个create语句之前增加一个drop table
4.导入数据库 常用source 命令 进入mysql数据库控制台:
如mysql -u root -p mysql>use 数据库
方法二、针对mysql数据表格式为MyISAM的
假如数据文件在/var/lib/mysql
那么直接写个脚本
cp -r /var/lib/mysql /备份到的文件夹路径
隔机备份用rsync增量,或定时完整备份。
如何在windows下用bat脚本定时备份mysql
remrem
C:\Program
Files\WinRAR
需要放到
path
下,才能调用rar
cli工具remrem
跳转到工作目录下f:cd
f:\DBBAK
rem
设置变量:备份文件名
SET
BAK_FILE=MY_DBBAK_%date:~0,-4%.sql
rem
设置变量:日志文件名
SET
LOG_FILE=MY_DBBAK.log
rem
记录日志
echo
"%date%"
》
%LOG_FILE%
rem
开始做备份
mysqlmp
--default-character-set=utf8
-hlocalhost
-uroot
-R
--triggers
--single-transaction
-B
mydb
%BAK_FILE%
rem
压缩备份文件
rar
a
%BAK_FILE%.rar
%BAK_FILE%
rem
删除源文件
del
/F
%BAK_FILE%
echo
"%date%"
》
%LOG_FILE%
部署完脚本后,剩下的就是在系统中添加计划任务项目了。
如何在linux下实现mysql数据库每天自动备份
方法/步骤
1. 在根目录下新建定时备份存储文件夹mkdir /mysql_backup
2.新建备份的脚本vim /root/mysql_backup.sh
3.在mysql_backup.sh中输入内容:
backupdir=/mysqlbackup time=` date +%Y%m%d%H`mysqlmp -uroot -proot abc | gzip > $backupdir/abc$time.sql.gzfind $backupdir -name “abc*.sql.gz" -type f -mtime +5 -exec rm {} \; > /dev/null 2>&1
——————————————————————————————
说明:
backupdir = 备份文件存储文件夹time = 获取当前时间 年月日时(2014111417)2014年11月14日17点mysqlmp 备份数据库指令 abc要备份的数据库find $backupdir -name “abc*.sql.gz" -type f -mtime +5 -exec rm {} \; > /dev/null 2>&1 删除5天前的备份文件
3 :wq 文件保存成功后
先按一下键盘上的 " esc " 然后输入 ” :wq “
执行一下脚本,看根目录下的mysql_backup文件夹是否有.sql.gz后缀名的文件
./mysql_backup.sh
写入每天的定时任务 修改 /etc/crontabvi /etc/crontab
按键盘上的"i",开始输入
02 4 * * * root /root/mysql_backup.sh
表示每天4点2分执行备份任务
先按一下键盘上的 " esc " 然后输入 ” :wq “ 表示保存
重新启动crond
service crond restart 或 /etc/rc.d/init.d/crond restart