-
2022-06-24 17:49:07
mysql数据库自动备份脚本
- 创建脚本文件vim mysql-backup.sh
#!/bin/bash #全备方式,一般在从机上执行,适用于小中型mysql数据库 #删除15天以前备份 #作者:chenshunli 2022.6.25 #时间: source /etc/profile #加载系统环境变量 source ~/.bash_profile #加载用户环境变量 set -o nounset #引用未初始化变量时退出 #set -o errexit #执行shell命令遇到错误时退出 user="root" password="123" host="localhost" port="3306" #需备份的数据库,数组 db=("mysql" ) #备份时加锁方式, #MyISAM为锁表--lock-all-tables, #InnoDB为锁行--single-transaction lock="--single-transaction" mysql_path="/usr/local/mysql" backup_path="${mysql_path}/backup" date=$(date +%Y-%m-%d_%H-%M-%S) day=15 backup_log="${mysql_path}/backup.log" #建立备份目录 if [ ! -e $backup_path ];then mkdir -p $backup_path fi #删除以前备份 find $backup_path -type f -mtime +$day -exec rm -rf {} \; > /dev/null 2>&1 echo "开始备份数据库:${db[*]}" #备份并压缩 backup_sql(){ dbname=$1 backup_name="${dbname}_${date}.sql" #-R备份存储过程,函数,触发器 mysqldump -h $host -P $port -u $user -p$password $lock --default-character-set=utf8 --flush-logs -R $dbname > $backup_path/$backup_name if [[ $? == 0 ]];then cd $backup_path tar zcpvf $backup_name.tar.gz $backup_name size=$(du $backup_name.tar.gz -sh | awk '{print $1}') rm -rf $backup_name echo "$date 备份 $dbname($size) 成功 " else cd $backup_path rm -rf $backup_name echo "$date 备份 $dbname 失败 " fi } #循环备份 length=${#db[@]} for (( i = 0; i < $length; i++ )); do backup_sql ${db[$i]} >> $backup_log 2>&1 done echo "备份结束,结果查看 $backup_log" du $backup_path/*$date* -sh | awk '{print "文件:" $2 ",大小:" $1}'
- 增加执行权限
chmod +x mysql-backup.sh
- 执行脚本测试
./mysql-backup.sh 开始备份数据库:mysql 备份结束,结果查看 /usr/local/mysql/backup.log 文件:/usr/local/mysql/backup/mysql_2022-06-24_17-40-54.sql.tar.gz,大小:232K
- 配置计划任务
创建计划任务 crontab -e 30 23 */1 * * /usr/local/mysql/backup/mysql-backup.sh #每天23:30备份数据库 crontab -l 查看计划任务
更多相关内容 -
Oracle数据库自动备份脚本分享(超实用)
2020-12-16 02:28:46一、备份脚本 1、初始化变量,记录开始日志 #变量 sysname=填写自己的系统名称 syspath=/home/oracle/databak/$sysname v_date=$(date '+%Y%m%d%H%M%S') #日志目录 logfile=${syspath}/backup.${v -
docker环境下的mysql数据库自动备份脚本
2020-11-19 14:53:58docker环境下的mysql数据库自动备份脚本,配置到系统定时任务中,能够每天自动全库或者指定实例备份数据库,删除七天前的旧备份。 -
oracle数据库自动备份脚本
2018-09-01 16:35:28racle数据库自动备份脚本 -
sqlserver数据库自动备份脚本
2020-07-27 17:00:26功能说明:备份SQLServer数据库,并压缩打包,传至远程FTP服务器,做到本地异地同时备份,可自动清理本地备份,自动保留N个最新备份(针对此种备份,不针对文件夹),老的备份自动删除;将此脚本加入系统任务计划,则... -
数据库自动备份脚本
2013-07-05 20:25:17数据库自动备份脚本 -
MySQL数据库自动备份脚本
2022-06-19 15:09:34自动备份脚本 #备份文件后缀时间 time="$(date +"%Y%m%d$H")" #备份路径和备份的数据库1、自动备份脚本
#备份文件后缀时间
time=“ ( d a t e + " (date +"%Y%m%d (date+"H”)"
#备份路径和备份的数据库
#把 root替换为实际的用户名;
#把 dreamsoft替换为实际的密码;
#把 dsfa_zjstxnew替换为实际的数据库名;
#备份目录:/data/database-sjk-bf
#备份文件名称:dsfa_zjstxnew_KaTeX parse error: Expected group after '_' at position 100: …f/dsfa_zjstxnew_̲time.sql.gz
#mysqldump -uroot -pdreamsoft dsfa_zjstxnew | gzip > /data/database-sjk-bf/dsfa_zjstxnew_$(date +%Y%m%d_%H%M%S).sql.gz
#删除七天之前的备份文件
#备份文件存储目录:/data/database-sjk-bf
#备份文件名:dsfa_zjstxnew_.sql.gz
find /data/database-sjk-bf -name "dsfa_zjstxnew_.sql.gz" -type f -mtime +7 -exec rm -rf {} ; > /dev/null 2>&1(注:#删除五分钟之前的备份文件
#find /data/database-sjk-bf -name “zjstxnew_*.sql.gz” -type f -mmin +5 -exec rm -rf {} ; > /dev/null 2>&1 )脚本弄好后执行看是否有问题,没问题后再设置每天自动备份
2、设置每天自动执行脚本
编辑crontab 添加定时任务
修改crontab默认编辑器:select-editor。选择/usr/bin/vim.basic#vi /etc/crontab (系统级别的配置)
在最后一行中加入:
00 16 * * * /usr/local/mysqlbackup/backmysql.sh
表示每天16点00分执行备份注:crontab配置文件格式如下:
分 时 日 月 周重启crontab:
/etc/rc.d/init.d/crond restart 或者service crond restart
注:可能因为centos版本问题上述命令不能执行 可尝试/bin/systemctl status crond.service命令 -
数据库自动备份脚本使用
2022-04-08 16:21:44数据库自动备份脚本数据库自动备份脚本使用
备份
Linux
请先在测试环境进行测试
- 编写备份脚本
根据情况调整以下内容中的参数,并保存为
backup.sh
并放置在数据库所在服务器上(位置无限制)echo '##########################################' echo '###### The database is automatically backed up at 03:00 am every day ######' echo '##########################################' # Setting environment variables db_user="username" db_password="password" # 数据库名称 db_name="test" # docker容器名 未使用docker则删除此变量 db_container_name="mysql" # 备份文件的存放位置 backup_dir="/usr/local/db/backup" time="$(date +"%Y%m%d")" echo 'Get system date: ' $time if [ ! -e "$backup_dir" ]; then mkdir $backup_dir fi cd $backup_dir echo ${backup_dir} echo 'backup started...' $(date "+%Y-%m-%d %H:%M:%S") # docker安装mysql使用下列命令 docker exec ${db_container_name} mysqldump -u${db_user} -p${db_password} ${db_name} --quick --single-transaction > ${db_name}_${time}.sql # 直接安装mysql使用下列命令 # mysqldump所在位置 -u${db_user} -p${db_password} ${db_name} --quick --single-transaction > ${db_name}_${time}.sql find ${backup_dir} -name ${db_name}"*.sql" -type f -mtime +7 -exec rm -rf {} \; > /dev/null 2>&1 echo 'backup completed!' $(date "+%Y-%m-%d %H:%M:%S")
P.S. 执行失败时请检查Windows与Linux符号差异问题,并且避免以文本文档(.txt)来新建脚本
- 授予脚本可执行权限
进入脚本所在目录并执行以下命令:
chmod u+x backup.sh
- 测试脚本
执行命令:
./backup.sh
观察控制台输出,并检查生成的SQL文件。
- 创建定时任务
执行以下命令:
crontab -e
在文本中插入以下内容:
0 3 * * * /usr/local/db/backup.sh >> /usr/local/db/log/backup.log 2>&1
每天凌晨三点执行备份
> /usr/local/db/log/backup.log 2>&1
是将任务执行的日志输出到指定文件。如果不需要日志则可以去除这一段。保存并退出,任务会自动运行。
导入备份数据
按普通SQL文件导入方式使用即可
注意:
- 调整SQL文件
有时,备份的SQL文件在开头会附带这一行:mysqldump: [Warning] Using a password on the command line interface can be insecure. 。如果有,则需要删除该行再执行导入操作。
- 出现
Got a packet bigger than 'max_allowed_packet' bytes
错误
打开数据库,执行以下查询:
SELECT @@max_allowed_packet / 1024 / 1024;
得到当前最大允许读取包大小,如果小于你要导入的SQL文件大小,则执行以下命令来提高该限制大小:
SET GLOBAL max_allowed_packet=1000000000;
P.S. 该设置在数据库重启后失效
导入的SQL文件大小,则执行以下命令来提高该限制大小:
SET GLOBAL max_allowed_packet=1000000000;
P.S. 该设置在数据库重启后失效
-
linux服务器的数据库自动备份脚本
2018-02-09 15:42:34通过定时任务实现数据库文件自动备份压缩,对备份文件做定期删除。 使用教程:http://blog.csdn.net/chen_gp_x/article/details/79298983 -
sql数据库自动备份脚本
2013-02-25 23:45:42最现实 最好用的 自动备份数据库 万无一失 -
mysql数据库自动备份脚本(详解)
2020-06-01 17:59:50#功能说明:本功能用于备份mysql数据库 #编写日期:2018/05/17 PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/usr/local/mysql/bin export PATH #数据库用户名 dbuser='dbuser' #数据库密码 ...脚本内容:
#!/bin/bash
#功能说明:本功能用于备份mysql数据库
#编写日期:2018/05/17
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/usr/local/mysql/bin
export PATH
#数据库用户名
dbuser='dbuser'
#数据库密码
dbpasswd='dbpasswd'
#数据库名,可以定义多个数据库,中间以空格隔开,如:test test1 test2
dbname='dbname'
#备份时间
backtime=`date +%Y%m%d%H%M%S`
#日志备份路径
logpath='/opt/mysqlbackup/log'
#数据备份路径
datapath='/opt/mysqlbackup'
#日志记录头部
echo ‘”备份时间为${backtime},备份数据库表 ${dbname} 开始” >> ${logpath}/mysqllog.log
#正式备份数据库
for table in $dbname; do
source=`mysqldump -u${dbuser} -p${dbpasswd} --single-transaction ${table}> ${datapath}/${backtime}.sql` 2>> ${logpath}/mysqllog.log;
#备份成功以下操作
if [ "$?" == 0 ];then
cd $datapath
#为节约硬盘空间,将数据库压缩
tar jcf ${table}${backtime}.tar.bz2 ${backtime}.sql > /dev/null
#删除原始文件,只留压缩后文件
rm -f ${datapath}/${backtime}.sql
echo “数据库表 ${dbname} 备份成功!!” >> ${logpath}/mysqllog.log
else
#备份失败则进行以下操作
echo “数据库表 ${dbname} 备份失败!!” >> ${logpath}/mysqllog.log
fi
done
易错问题:
1、命令错误
一般我们备份数据库时,直接使用命令 :mysqldump -h127.0.0.1 -p3306 -uroot -p123456 db t1 t2 > /data/backup/db_t1_t2.sql
有的数据库版本会提示错误-bash:mysqldump: command not found,解决这个问题的可以设置软连接,也可以将mysqldump所做目录补全执行备份。
/mysql/bin/mysqldump -h127.0.0.1 -p3306 -uroot -p123456 db t1 t2 > /data/backup/db_t1_t2.sql
————————————————2、报错问题
错误:-bash: ./how_paras.sh: /bin/bash^M: bad interpreter: No such file or directory
当我在shell中运行how_paras.sh时,出现了这个错误
[root@localhost sbin]# ./how_paras.sh
-bash: ./how_paras.sh: /bin/bash^M: bad interpreter: No such file or directory 翻译即:-bash:./how_paras.sh:/ bin / bash ^ M:糟糕的解释器:没有这样的文件或目录
好,那我们来分析一下,为什么会出现这种情况,这个问题说明什么,以及如何来解决它!
情景
之前,我都是直接在shell中创建,编写,执行脚本,都没有问题。因为感觉在shell中编写脚本不方便。于是使用WinSCP软件,将在shell中创建的空脚本,下载到windos系统中,用我的文本编辑器Notepad++来编写脚本,将编写好的脚本保存,并上传到linux系统中去。最后利用远程工具shell链接linux系统,运行这个脚本。why
为什么会出现这个问题
问题就出在,我把shell中的脚本下载到windos系统中来进行编辑。windos中Notepadd++编辑脚本,使得脚本文件格式为DOS格式,即每一行的行位是\r\n来标识。
好,那我打开vim编辑器确认一下。
[root@localhost sbin]# vim how_paras.sh
// ... ...此处省略how_paras.sh脚本内容
//在命令行模式输入下面这个命令
:set ff?
//显示结果为
fileformat=dos 1,1 All
总结1、打开脚本确认脚本文件格式:vim xxx.sh,:set ff?。xxx.sh代表脚本文件
what
这个问题说明什么
出现这个问题说明在windos系统和linux系统中的文件格式不一致。how
方法一: 如何解决?
直接解决方法:用vim编辑这个脚本,在命令行模式下,设置文件的格式,并保存。
即vim xxx.sh,:set ff=unix
方法二:如何解决?
在Windos系统中Notepad++软件中更改,打开这个文件:编辑–>转换为UNIX格式
彻底解决方法:更改Windos系统中Notepad++软件的文件方式。改为:NIX格式。
步骤:
打开Notepad++:
设置–>首选项–>新建:选择格式为UNIX;
设置–>首选项–>默认目录:选择使用新样式对话框(无文件扩展名和UNIX支持此功能)
———————————————— -
PostgreSQL数据库备份脚本
2018-11-26 16:09:33PostgreSQL数据库备份脚本,结合系统计划任务可以实现数据库的自动化备份。密码直接设置于脚本当中。 -
MYSQL数据库自动备份及清理备份文件脚本
2019-01-07 12:50:522、备份MYSQL数据库,自动排除系统库。文件名格式:{dir}\{dbname}-yyyyMMddHHmmss.bak 3、设置备份文件保留天数,例-15表示保留15天的备份,即清理15天以前的备份文件。 4、扫描备份目录下的文件,文件修改时间超过... -
mysql数据库自动备份脚本,修改bat文件中的数据库连接地址即可,自动备份30天内的数据库
2020-06-18 11:07:54mysql数据库自动备份脚本,可添加到系统的计划任务里面,每天定时执行将会自动备份,修改bat文件中的数据库连接地址即可,自动备份30天内的数据库。时间可以修改bat文件,自行定义。 -
mysql数据库自动备份脚本--dump.sh
2019-07-18 17:24:371、可以自动备份; 2、显示备份数据库大小; 3、记录备份日志; 4、自动管理数据文件。 -
oracle数据库自动备份脚本带说明
2018-06-12 16:38:14backup.bat 为备份脚本请勿删除,需放在备份所在的文件夹 文件名的为备份的日期+时间 7天前的备份数据会被删除 恢复前删除用户及所有表 再新建用户导入数据即可 -
Mysql数据库自动备份脚本(linux、windows)
2013-06-28 08:59:34实现mysql数据库自动备份,windows下脚本为mysql_backup.bat,linux下脚本为mysql_backup.sh,在定时任务中调用即可。 -
oracle数据库自动备份bat脚本
2018-03-21 13:18:35包含备份自动压缩,仅保留30天内的备份文件,30天以上自动删除等,下载直接可用,有注释。加入window任务计划轻松实现自动备份。 -
Oracle数据库自动备份脚本FOR WIN.rar
2019-09-03 20:12:11软件介绍: windows环境下Oracle数据库的自动备份脚本 1、备份导出文件时自动使用当前日期进行命名2、自动压缩备份文件3、自动删除7天前的备份 -
windows环境下配置MySQL数据库自动备份脚本
2017-09-19 16:06:07由于工作需要,在项目稳定运行后需要对数据进行保护,这就需要配置数据库的自动备份。MySQL为我们提供了mysqldump工具,所以备份比较简单,我这里写了两份脚本,都是可以运行的: 一: rem auther:www.waylau.com ... -
Oracle数据库自动备份脚本-Windows,Linux
2019-05-01 01:49:49NULL 博文链接:https://todaytome.iteye.com/blog/2413061 -
oracle 数据库自动备份脚本
2014-08-29 15:19:35实现oracle 数据库自动备份+保留最新的7天数据+另一机器拷贝备份的脚本 -
clickhouse万能自动备份脚本
2022-06-14 21:37:34clickhouse万能自动备份脚本。 脚本执行命令如下: sh backup-ch.sh ip port user password db chdir(clickhouse安装目录) bak_dir(备份目录) 参数灵活配置。拥有7个参数。可满足多种场景。 支持crontab定时调度... -
AutoOracleback_Oracle数据库自动备份脚本
2015-12-07 10:55:06AutoOracleback_Oracle数据库自动备份脚本,可以设置删除历史备份时间。