自动java备份mysql数据库库的脚本怎么写,备份文件保留7天

一、mysql提供了一个mysqldump的工具可以方便的导出导入数据库信息;
二、使用命令行shell测试执行mysqldump,理解必备的参数,查看生成的sql备份文件是否符合需求;
/usr/bin/mysqldump --opt -ubatsing -pbatsingpw -hlocalhost timepusher & /mnt/mysqlBackup/db_`date +%F`.sql
1、执行 /usr/bin/mysqldump;
2、--opt是quick,add-drop-table,add-locks,extended-insert,lock-tables几个参数的合称,一般都要使用,具体意思自行搜索;
3、-u数据库用户名 -p数据库用户密码 -h数据库地址 数据库名 & 导出的文件路径;
4、`date +%F`是shell中生成当前日期,格式如,所以成功导出时生成的文件名为 db_.sql;
5、下载生成的 sql文件 ,用文本编辑器打开检查,本地导入测试数据库,看是否有问题;
三、整理编写比较灵活的shell脚本,方便重用;
# Database info
DB_USER="batsing"
DB_PASS="batsingpw"
DB_HOST="localhost"
DB_NAME="timepusher"
# Others vars
BIN_DIR="/usr/bin"
#the mysql bin path
BCK_DIR="/mnt/mysqlBackup"
#the backup file directory
DATE=`date +%F`
# /usr/bin/mysqldump --opt -ubatsing -pbatsingpw -hlocalhost timepusher & /mnt/mysqlBackup/db_`date +%F`.sql
$BIN_DIR/mysqldump --opt -u$DB_USER -p$DB_PASS -h$DB_HOST $DB_NAME & $BCK_DIR/db_$DATE.sql
#还原数据库
#用mysql-front导入前一天的 *.sql 文件即可恢复数据
保存到文件或上传到 /usr/local/apache/htdocs/timepusher/sqlBak/sqlAutoBak.sh
四、测试Shell脚本
1、进入到该脚本文件目录 chmod +x sqlAutoBak.sh 添加执行权限,否则会报错& Permission denied 2、./sqlAutoBak.sh ,如果是在windows编写上传的文件可能会报错
/bin/sh^M: bad interpreter: No such file or directory
这是不同系统编码格式引起的:在&windows系统中编辑的&.sh文件可能有不可见字符,所以在&Linux系统下执行会报以上异常信息。可以在Windows上使用Notepad++转换成Unix格式(菜单中选择:编辑&档案格式转换&转换成UNIX)
3、修改后上传继续执行 ./sqlAutoBak.sh ,没有报错。再查看导出的sql文件。
五、压缩mysql的备份数据
1、查看导出来的sql文件,发现其文件大小非常大,mysqldump也提供了生成gzip压缩文件的参数设置
2、sqlAutoBak.sh修改为如下
# Database info
DB_USER="batsing"
DB_PASS="batsingpw"
DB_HOST="localhost"
DB_NAME="timepusher"
# Others vars
BIN_DIR="/usr/bin"
#the mysql bin path
BCK_DIR="/mnt/mysqlBackup"
#the backup file directory
DATE=`date +%F`
# /usr/bin/mysqldump --opt -ubatsing -pbatsingpw -hlocalhost timepusher & /mnt/mysqlBackup/db_`date +%F`.sql
# $BIN_DIR/mysqldump --opt -u$DB_USER -p$DB_PASS -h$DB_HOST $DB_NAME & $BCK_DIR/db_$DATE.sql
$BIN_DIR/mysqldump --opt -u$DB_USER -p$DB_PASS -h$DB_HOST $DB_NAME | gzip & $BCK_DIR/db_$DATE.sql.gz
# 还原数据库
# 把 *.sql.gz 使用gunzip 或 本地的解压软件 解压为 *.sql 文件
# 用mysql-front导入前一天的 *.sql 文件即可恢复数据
3、修改后上传继续执行 ./sqlAutoBak.sh ,没有报错。如果用文本编辑器查看导出的 *.sql.gz文件,应该是一堆乱码。
4、下载到本地使用解压软件打开,解压就能看到里面真正的 *.sql 文件了。
六、设置linux定时任务执行该脚本;
1、编辑定时任务列表
crontab -e
2、插入下面这一行,因为通常来说5点钟网站的访问量最低。
* * /bin/sh /usr/local/apache/htdocs/timepusher/sqlBak/sqlAutoBak.sh
#每天早上 5:00am 执行
3、查看任务是否创建成功
crontab -l
七、第二天检查自动生成的sql文件是否符合要求
如果生成的文件和解压出来查看没有问题,那么这个自动定时备份数据库的脚本就算是完成了。因为生成的文件多了会占用一定的空间,所以建议要定期(比如一个月)清理一下文件。
1、如果该数据库的用户没有分配 锁表 的权限,则备份会报错&when using LOCK TABLES 。那是因为mysqldump命令默认在导出时是要锁定表的,所以解决方式有两个。一个是给该用户开放 锁表 的权限;另一个是在命令中加上&&--skip-lock-tables 这个参数。即是:
$BIN_DIR/mysqldump --opt -u$DB_USER -p$DB_PASS -h$DB_HOST $DB_NAME --skip-lock-tables| gzip & $BCK_DIR/db_$DATE.sql.gz
阅读(...) 评论()通过备份设置,MongoDB可以在您选定的时间点进行周期性的自动备份。
登录MongoDB管理控制台。
单击目标实例ID或者单击-&管理进入基本信息页面。
在左侧导航栏中,选择备份与恢复。
单击备份设置。
单击编辑,自定义自动备份的周期和时间。
注意:默认备份数据的保留时间是7天,不可修改。
单击确定,完成自动备份设置。
:备份文件所在的本地目录。如不存在,会自动创建。@is_run:是否执行备份。参数值如下:
1:执行备份0:只做检查,不执行备份
执行备份脚本。
上传备份文件到OSS本地数据库备份完成后,需要将备份文件上传到用户自己的OSS Bucket中。
方法一:使用 ...
,多个数据库、某个库,还可以指定某张表进行恢复,大大降低RTO;自动管理生命周期,用户无需开发脚本、无需通过ECS将备份集转存到OSS上,只需在DBS控制台上点击几步,DBS会自行管理备份的完整生命周期,比如备份集保留时长、在标准存储的保留时长、何时转存到 ...
中的数据定期备份存档,云数据库 Redis 版提供了备份存档功能并且目前对用户免费开放,云数据库 Redis 服务自动将自动备份或者手动备份文件保存至 OSS 上。目前阿里云将为您免费在 OSS 保存7天内的备份文件,7天外的备份文件将会自动删除。
上传,24小时内删除本地文件。
支持全量物理备份
WAL(16MB/个)产生完后立即压缩上传,24小时内删除本地文件。
自动备份(设置备份策略)阿里云数据库会执行用户设定的备份策略,自动备份数据库。
登录 RDS 管理控制台,选择目标 ...
数据库备份DBS提供全量数据备份、增量数据实时备份和数据恢复能力,本文会重点介绍备份对数据库影响。
备份会读取数据库上的数据,一定会对数据库性能产生影响。对于主备数据库,建议在备库上运行备份。对于备份时间,建议选择业务低峰期来运行全量备份 ...
3. 出于内部或外部审计要求,数据要长期归档,而且要易于恢复,成本还要低。
备份集自动转存和过期清理,管理备份生命周期,详见 《数据库备份DBS:长期归档》。
4. 数据要能做到异地灾备,可以在本地无法提供服务时,将业务切换到异地灾备中心,还要 ...
RDS备份区别
针对RDS数据库,RDS备份作为基础功能,影响到RDS高可用,属于用户必选项
针对RDS数据库,DBS提供高级备份功能,如实时增量数据备份、单表恢复、备份集自动生命周期管理等,用户根据所在行业、合规要求、数据规模、RPO/RTO要求进行选择 ...
在完成备份任务配置之后,数据库备份DBS将在系统后台自动调度备份任务,如果你配置增量备份,那么还会在后台实时的进行增量数据的备份。
如果你需要查看某个具体的备份任务的状态,你可以通过DBS控制台进入某个具体的备份计划详情。例如,用户需要了解备份计划的备份 ...
数据库备份DBS支持将数据库备份到用户OSS,本文介绍下OSS备份文件的具体含义。
DBS备份存储可以复用已有OSS Bucket,也可以使用新建OSS BucketDBS会自动生成备份文件路径,无需用户手工创建多个DBS备份计划可以复用同一个 ...
数据库备份DBS提供数据全量备份、增量备份和数据恢复。在特殊情况下,用户可能要修改备份计划中备份源数据库,使用备份计划来备份其他数据库。
原数据库迁移/下线,切换成新数据库备份测试阶段结束,切换成生产数据库备份
进入DBS控制台,选择 ...
数据库备份DBS提供数据库异地备份能力,满足企业数据异地容灾需求。
支持ECS自建数据库的异地备份支持RDS数据库的异地备份支持本地IDC自建数据库的异地备份支持公网数据库的异地备份(还包含部署在AWS、Azure、腾讯云等其他云计算厂商的 ...
云数据库MySQL版使用开源软件Percona Xtrabackup对数据库进行备份,所以您可以使用该软件将云数据库MySQL的备份文件恢复到自建数据库中,本文将介绍详细的操作步骤。
关于云数据库MySQL版如何备份数据,请参见备份RDS数据。
前提条件 ...
数据库备份DBS提供数据全量备份、增量备份和数据恢复,用户需要创建备份计划,才可以开始配置备份计划。
操作步骤创建备份计划后,在DBS控制台上会生成一个未配置的备份计划,通过以下5步完成备份计划配置。
配置备份源和目标配置备份对象配置备份时间配置生命 ...
数据无法恢复,后果难以想象,随着数据海量增加,管理难度还会不断攀升等。
为了解决数据库长期归档问题,数据库备份DBS提供完整生命周期管理,根据备份集访问频率,用户可选择不同性价比存储方式,自动管理备份集转存和过期清理。
异地灾备,构建数据库冷备中心作为完整 ...
数据库备份DBS提供数据全量备份、增量备份和数据恢复。用户首先要创建备份计划(DBS实例),随后配置备份计划,为了备份正常运行,DBS备份对数据库配置和账号有一定要求。
binlog_format需要设置为row,而row模式binlog会包含 ...
为保障用户权益,RDS提供了未加密的数据备份和日志备份下载。RDS不同类型数据库所支持的备份策略不同,所以可支持下载的数据备份和日志备份也不同,详情请参见备份RDS数据。
说明:SQL Server类型的数据库暂不支持下载日志备份。
该性能报告是参考的测试数据,不作为产品SLA的评判标准。
数据库备份DBS提供全量数据备份、增量数据实时备份和数据恢复能力;公测期间只提供1种规格,商业化后会提供多种规格供用户选择。
全量备份说明当满足以下条件时,才能达到下表中的性能上限:
备份源 ...
triggers &hex-blob db_name & /tmp/db_name.sql&(点击查看全图)输入密码后,mysqldump将进行备份操作并自动完成。查看mysqldump的使用教程&。检测备份生成sql文件 ...
你可能感兴趣《懒人Shell脚本》之八——定期备份Mysql数据库表的实现_ASP.NET技巧_动态网站制作指南
《懒人Shell脚本》之八——定期备份Mysql数据库表的实现
来源:人气:139
实际开发环境中,前端程序需要在给定时间段内,将数据更新/插入到指定的库表中。随着数据量的增多,基础库表基数的增长,每更新一次都会有5s左右的卡顿。
改进方案一:批量更新,累计数10条或者100条进行一次更新入库操作;
改进方案二:将当前日期前1个月之前的数据进行备份操作,并删除当前库表中1个月前的数据。经测定,该方法一定程度提高了访问效率。根因:基础表基数少,查询效率相对提高。
1.库表的定时备份总结
步骤1:备份Mysql指定中的制定库表。
使用 mysqldump,设定周期30天。
步骤2:对于日期60天前的已备份的文件及压缩包做删除处理。
步骤3:删除库表中在当前日期前30天的数据。(步骤1已经做了备份)。
步骤4:设定定时。
crontab设定。
[root@mysql_bak]# cat
mysql_bak.sh
#DATABASE INFO
DB_NAME="ppdb"
DB_USER="root"
DB_PASS="pass"
DISPOSE_TABLE="dispose_ticles"
RST_TABLE="match_rst"
DB_=100.55.1.129
BIN_DIR="/usr/bin"
BAK_DIR="/home/mysql_bak/data"
DATE=`date +%Y%m%d_%H%M%S`
#mkdir -p $BAK_DIR
#备份包 形成压缩包
$BIN_DIR/mysqldump $DB_NAME $DISPOSE_TABLE & $BAK_DIR/$DISPOSE_TABLE.dump_$DATE.sql
$BIN_DIR/mysqldump $DB_NAME $DISPOSE_TABLE | gzip & $BAK_DIR/$DISPOSE_TABLE.dump_$DATE.sql.gz
$BIN_DIR/mysqldump $DB_NAME $RST_TABLE & $BAK_DIR/$RST_TABLE.dump_$DATE.sql
$BIN_DIR/mysqldump $DB_NAME $RST_TABLE | gzip & $BAK_DIR/$RST_TABLE.dump_$DATE.sql.gz
#定期删除60天的备份包
find $BAK_DIR -name "name_*.sql.gz" -type f -mtime +60 -exec rm {} \; & /dev/null 2&&1
#30天前的指定库表数据删除操作 (当前时间减去30天)
delete_date=`date --date='30 day ago' +%Y-%m-%d`
echo "delete_date=$delete_date"
#删除rst表信息
rst_sql="delete from
$RST_TABLE where update_time &= $delete_date order by update_";
echo "rst_sql=$rst_sql"
#ret=$(mysql -u $DB_USER -h ${DB_IP} -p${DB_PASS} $DB_NAME -e "$sql");
ret=$(mysql -h${DB_IP} $DB_NAME -e "$rst_sql");
#删除dispose表信息
dispose_sql="delete from $DISPOSE_TABLE where judge_time &= $delete_date order by judge_";
echo "dispose_sql=$dispose_sql"
ret=$(mysql -h${DB_IP} $DB_NAME -e "$dispose_sql");
2.定时设置:每隔30天的1点进行备份。
[root@mysql_bak]# cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# For details see man 4 crontabs
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,a ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
0 1 */30 * * /home/mysql_bak/mysql_bak.sh & /dev/null 2&&1
[root@mysql_bak]# crontab -e
0 1 */30 * * /home/mysql_bak/mysql_bak.sh & /dev/null 2&&1
重启crontab服务
service crond restart
:10 于家中床前
作者:铭毅天下
转载请标明出处,原文地址:
http://blog.csdn.net/laoyang360/article/details/
如果感觉本文对您有帮助,请点击‘顶’支持一下,您的支持是我坚持写作最大的动力,谢谢!
优质网站模板拒绝访问 | www.wangchao.net.cn | 百度云加速
请打开cookies.
此网站 (www.wangchao.net.cn) 的管理员禁止了您的访问。原因是您的访问包含了非浏览器特征(6d4d0e-ua98).
重新安装浏览器,或使用别的浏览器&&&&&&&&&&&&&&&&&&
posts - 12,comments - 13,trackbacks - 0
随笔分类(17)
以下是windows下的批处理:1set&hour_str=%time:~0,2%2if&"%hour_str:~0,1%"=="&"&set&"hour_str=0%hour_str:~1%"3set&fileName=%date:~0,4%-%date:~5,2%-%date:~8,2%_%hour_str%%time:~3,2%%time:~6,2%4D:5cd&D:\autobak\6mysqldump&数据库名(改我)&-u&root&-p密码(改我)&&%fileName%.sql7jar&cf&%fileName%.zip&%fileName%.sql8del&%fileName%.sql使用前,需要保证环境变量的path中加入jar和mysqldump等路径,批处理解释如下:1、前三句只是为了生成文件名,这里第2行:if "%hour_str:~0,1%"==" " set "hour_str=0%hour_str:~1%"是为了解决上午时,小时变成一位,导致文件名中包含一个空格,从而创建文件失败的问题,即假设9点的时候,把“空格9”变成。2、第4、5行是为了切换到保存的目录,也可以在第6、7行写死,当然,如果想自动获取路径也可以,用:%~d0cd&%~dp0替换4、5行,可以自动放到当前bat批处理所在盘的根目录,适合懒人:)3、第6行是导出数据库为sql脚本,但这里不见得全库导出,也可以只导某个表,具体命令就不说了。4、第7行是用jar压缩一下,由于导出的是文本,压缩率是很高的,这样很节省空间。(当然也可以用zip、rar等,只是我搞java开发,用习惯了jar。)5、第8行是删除未压缩的文件,只保留压缩后的zip包。以上批处理创建后,在定时任务中添加一个任务,定时执行就可以了,我一般给一些小系统都设置从早上8点开始,每隔4个小时备份一次,然后执行到晚上8点。另外,由于文件名都是基于时间的,那么很容易就可以实现保留最近7天、以及同时上传到异地ftp服务器的功能,这些大家可以自由发挥。linux、mac下应该也都类似,大家自己写个sh脚本就行了,至于mysql的恢复,更加简单,把sql解压出来后,执行:mysql -u root -p密码 数据库名 &xxx.sql这样就可以自动还原回来,如果数据库已经存在,会自动覆盖(也可能是增量,看导出的sql了)。其实以上脚本其实也适合其它数据库,只是sqlserver、db2等都有自己的自动备份机制,倒不是必须用这个。
阅读(3163)
&re: MySQL自动备份和手工恢复(可实现定时备份、保留最近7天、异地备份)
最关键的没说,说的都是垃圾&&&&&&
&re: MySQL自动备份和手工恢复(可实现定时备份、保留最近7天、异地备份)
@路过脚本测试了下可行啊,基本该说的都说了啊&&&&&&
&re: MySQL自动备份和手工恢复(可实现定时备份、保留最近7天、异地备份)
垃圾,最关键的怎么保留七天没讲,尽讲一些废话&&&&&&

我要回帖

更多关于 mysql备份数据库命令 的文章

 

随机推荐