自动备份
一、利用mysql提供的mysqldump工具进行数据库的导入导出
二、使用shell命令执行mysqldump
/usr/local/mysql/bin/mysqldump --opt -ubatsing -pbatsingpw -hlocalhost timepusher > /usr/local/sql/back/mcpsms_titan_`date +%F`.sql
注解:
1、执行/usr/local/mysql/bin/mysqldump mysql安装目录bin目录下的可执行文件;
2、--opt是quick,add-drop-table,add-locks,extended-insert,lock-tables几个参数的名称,一般都要使用,具体意思自行搜索;
3、-u数据库用户名 -p数据库密码 -h数据库地址 数据库名 > 导出的文件路径
4、`date+%F`是shell中生成当前日期,格式如2018-05-30,所以成功导出的文件名为mcpsms_titan_2015-05-30.sql;
5、检查生成的sql文件是否有问题
三、整理shell脚本,方便重用
#!/bin/sh
# tabase info
DB_USER="root"
DB_PASS="root"
DB_HOST="localhost"
DB_NAME="mcpsms-titan"
# Others vars
BIN_DIR="/usr/local/mysql/bin" #the mysql bin path
BCK_DIR="/usr/local/sql/back" #the backup file directory
DATE=`date +%F`
# TODO
# /usr/local/mysql/bin/mysqldump --opt -ubatsing -pbatsingpw -hlocalhost timepusher > /usr/local/sql/back/mcpsms_titan_`date +%F`.sql
$BIN_DIR/mysqldump --opt -u$DB_USER -p$DB_PASS -h$DB_HOST $DB_NAME > $BCK_DIR/mcpsms_titan_$DATE.sql
四、测试shell脚本
1、进入脚本文件目录chmod +x sqlAutoBak.sh添加执行权限
2、./sqlAutoBak.sh
如果mysql包含多个实例,需要指定sock文件,修改脚本为:
#!/bin/sh
# tabase info
DB_USER="root"
DB_PASS="root"
DB_HOST="localhost"
DB_NAME="mcpsms-titan"
# Others vars
BIN_DIR="/usr/local/mysql/bin" #the mysql bin path
BCK_DIR="/usr/local/sql/back" #the backup file directory
DATE=`date +%F`
# TODO
# /usr/local/mysql/bin/mysqldump --opt -ubatsing -pbatsingpw -hlocalhost timepusher > /usr/local/sql/back/mcpsms_titan_`date +%F`.sql
$BIN_DIR/mysqldump --opt -u$DB_USER -p$DB_PASS -S /data/3306/mysql.sock -h$DB_HOST $DB_NAME > $BCK_DIR/mcpsms_titan_$DATE.sql
五、压缩mysql备份数据
sqlAutoBak.sh修改如下:
#!/bin/sh
# tabase info
DB_USER="root"
DB_PASS="root"
DB_HOST="localhost"
DB_NAME="mcpsms-titan"
# Others vars
BIN_DIR="/usr/local/mysql/bin" #the mysql bin path
BCK_DIR="/usr/local/sql/back" #the backup file directory
DATE=`date +%F`
# TODO
# /usr/local/mysql/bin/mysqldump --opt -ubatsing -pbatsingpw -hlocalhost timepusher > /usr/local/sql/back/mcpsms_titan_`date +%F`.sql
$BIN_DIR/mysqldump --opt -u$DB_USER -p$DB_PASS -S /data/3306/mysql.sock -h$DB_HOST $DB_NAME | gzip > $BCK_DIR/mcpsms_titan_$DATE.sql.gz
压缩一定要写在后面,不然会报错
如果该数据库的用户没有分配锁表的权限,则备份会报错when using LOCK TABLES。那是因为mysqldump命令默认在导出时是要锁定表的,所以解决方式有两个。一个是给用户开放锁表的权限;另一个是在命令中加上--skip-lock-tables这个参数。即是:
#!/bin/sh
# tabase info
DB_USER="root"
DB_PASS="root"
DB_HOST="localhost"
DB_NAME="mcpsms-titan"
# Others vars
BIN_DIR="/usr/local/mysql/bin" #the mysql bin path
BCK_DIR="/usr/local/sql/back" #the backup file directory
DATE=`date +%F`
# TODO
# /usr/local/mysql/bin/mysqldump --opt -ubatsing -pbatsingpw -hlocalhost timepusher > /usr/local/sql/back/mcpsms_titan_`date +%F`.sql
$BIN_DIR/mysqldump --opt -u$DB_USER -p$DB_PASS -S /data/3306/mysql.sock -h$DB_HOST $DB_NAME --skip-lock-tables | gzip > $BCK_DIR/mcpsms_titan_$DATE.sql.gz
六、设置linux定时任务执行脚本
1、编辑定时任务列表
crontab -e
2、插入下面这一行
00 05 * * * /bin/sh /usr/local/sql/sqlAutoBak.sh
#每天早上5:00执行
3、查看任务是否创建成功
crontab -l
七、第二天检查自动生成的sql文件是否符合要求
自动删除N天前备份的数据文件
一、删除文件命令
find 对应目录 -mtime +天数 -name "文件名" -exec rm -rf {} \;
二、计划任务
1、创建shell脚本
touch /usr/local/sql/sqlAutoDel.sh
chmod +x sqlAutoDel.sh
新建一个执行文件,并且分配权限
2、编辑shell脚本
#!/bin/sh
find /usr/local/sql/back/ -mtime +2 -name '*.gz' -exec rm -rf {} \;
保存退出
3、计划任务
crontab -e
将sqlAutoDel.sh加入到计划任务中
10 05 * * * /bin/sh /usr/local/sql/sqlAutoDel.sh >/dev/null 2>&1
#每天早上5:10执行清理任务
分享到:
相关推荐
windows下mysql自动备份数据库并删除历史备份和生成日志文件脚本。windows下mysql自动备份数据库并删除历史备份和生成日志文件脚本。
1、设置备份文件存放目录 2、备份MYSQL数据库,自动排除系统库。...3、设置备份文件保留天数,例-15表示保留15天的备份,即清理15天以前的备份文件。 4、扫描备份目录下的文件,文件修改时间超过保留期的自动删除。
1、mysql数据库自动备份与清理2、支持mysql 5.7与mysql 8.03、基于mysql enterprise backup备份4、支持备份数据通过ftp上传或通过rsync上传5、支持自定义备份数据定期清理
Windows下MySql自动备份脚本(自动生成文件夹,可删除历史备份,支持.sql压缩zip文件)
主要介绍了CentOS7 下MySQL定时自动备份的实现方法,主要实现了数据库备份,清理过期备份文件功能,需要的朋友可以参考下
主要介绍了linux定时备份MySQL数据库并删除以前的备份文件,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
不过到现在已经有很多的mysql备份软件,例如我比较喜欢使用的是护卫神的好备份软件。下载地址://www.jb51.net/softs/42944.html首先把脚本代码贴出来: 代码如下:@echo on REM————————backup bugdb which ...
实际上MySQL备份无需保留太长时间的,如果能有自动清理旧的备份文件的功能就好了。不过网上找了一下,虽然也有这方面的脚本,不过可能不太符合我的需求吧。于是只能自己手动改下以前的那个Shell脚本来实现咯。 首先...
一、每日23:00自动删除临时文件 ...重启服务: /etc/rc.d/init.d/crond restart 二、每日24:00自动备份数据库 ...1、创建保存备份文件的路径/mysqldata#mkdir /mysqldata 2、创建/usr/sbin/bakmysql文件查找数
第三方自动备份数据库软件,支持sqlserver,Oracle,Mysql,自动备份,文件加密,站点备份,定时删除,清理日志
(3)可自动清理指定天数前的旧文件。 (4)可用备份文件在线还原到数据库。 3.MySQL备份 可以选择数据库,可以在线还原。 (1)在“MySQL备份”模块新建备份任务。 (2)选择需要备份的数据库。 (3)建议...
最后提出数据库定期维护的必要性,建议了自动备份、性能监控、日志清理等具体维护措施并提供代码实例。内容结构清晰,点评精当。 适合人群: 需要学习数据库管理和维护知识的学习者。文中具体的技术点解析及代码示例...
centos系统下定时备份数据库并压缩,定时清理老的备份资料
由于项目需要,每个月的历史存量数据需要进行一个归档和备份操作,以及一些日志表需要进行一个明细字段清除,让mysql数据库磁盘节省空间。则需要一些定时任务来定时清理这些数据。 2|0技术选型 Java 可以基于...
ssh-mysql-dump 项目名称:MySQL远程转储作者:Sakib Iqbal作者电子邮件: 简短说明:将mysql数据库从远程服务器转储到本地的脚本。 脚本语言:Python 2.7依赖关系:paramiko,setuptools Idel场景和依赖性: 服务器...
15.11.2 备份与恢复MySQL数据库 15.12 自然环境安全 15.13 下一章 第16章 Web应用的安全 16.1处理安全性问题的策略 16.1.1 以正确心态为开始 16.1.2 安全性和可用性之间的平衡 16.1.3 安全监视 16.1.4 基本方法 ...