mysqldump备份脚本

本文介绍了一个用于Linux和Windows系统的数据库备份脚本。Linux脚本通过bash实现,支持多个数据库的同时备份,并提供了数据压缩及清理旧备份的功能。Windows脚本则使用批处理命令进行数据库备份,同样具备数据压缩及定期清理的功能。

Linux下的: 

#!/bin/bash

databases=('db1' 'db2')

basepath='/sda_mnt/mysqlbak/'
user='root'
passwd='123456'

if [ ! -d "$basepath" ]; then
  mkdir -p "$basepath"
fi

for db in ${databases[*]}
  do
    /bin/nice -n 19 /usr/local/mysql/bin/mysqldump -h127.0.0.1 -u$user -p$passwd --log-error=$basepath$db-$(date +%Y%m%d).log --databases $db > $basepath$db-$(date +%Y%m%
d).sql
    /bin/nice -n 19 tar zPcf $basepath$db-$(date +%Y%m%d).sql.tar.gz $basepath$db-$(date +%Y%m%d).sql
    find $basepath -mtime +7 -name "*.sql.tar.gz" -exec rm -rf {} \;
  done

当然上面也可以写成直接备份压缩写盘一步完成,解压缩用gunzip

/bin/nice -n 19 /usr/local/mysql/bin/mysqldump -h127.0.0.1 -u$user -p$passwd --log-error=$basepath$fulldb-$(date +%Y%m%d).log --opt --all-database
s --routines --triggers --events  --single-transaction | gzip > $basepath$fulldb-$(date +%Y%m%d).sql.gz

windows备份:

@echo off
rem 备份Oracle数据库,从服务器%FROM_SERVER%中导出用户U_%USER%的数据

rem 数据库IP(根据实际情况填写)
set FROM_SERVER=127.0.0.1
rem 数据库端口(根据实际情况填写)
set PORT=3306
rem 数据库名称(根据实际情况填写)
set DB_NAME=DB1
rem 数据库用户名(根据实际情况填写)
set USER=root
rem 数据库密码(根据实际情况填写)
set PASSWORD=123456
rem 备份地址(根据实际情况填写)
set F_PATH=E:\test2\

rem 年月日,如 20170922
set FILE_DATE=%date:~0,4%%date:~5,2%%date:~8,2%
rem 时,如 15
set FILE_TIME=%time:~0,2%
set FILE_TIME=%FILE_TIME: =0%
rem 文件夹路径 如 20170922/15
set FILE_DIR=%F_PATH%%FILE_DATE%\%FILE_TIME%
rem 文件名 如 U_2017092215
set FILE_NAME=%USER%%FILE_DATE%%FILE_TIME%
rem 创建目录
md %FILE_DIR%

rem 备份数据
mysqldump -h%FROM_SERVER% -P%PORT% -u%USER% -p%PASSWORD%  --skip-opt --default-character-set=utf8 --hex-blob --add-drop-table --create-options  --quick --extended-insert --single-transaction   --routines  --triggers --events  --all-databases > %FILE_DIR%\%FILE_NAME%.sql

rem 压缩软件目录(根据实际情况填写)
rem set path=E:\soft\rar
rem 压缩数据文件并打包,打包后删除源文件
rem rar a -r -ep -df %FILE_DIR%\%FILE_NAME%.rar %FILE_DIR%\%FILE_NAME%.sql
rem 删除之前的文件7天前
forfiles /P %FILE_DIR%  /s /m *.sql -d -7 /c "cmd /c del  @path"
pause

windows下黑名单
如果想从数据库中查询使用--ignore-table排除一些表,可以结合下面脚本来做

rem 将开头为ACT的表找到,并组合为格式--ignore-table=db.table1  --ignore-table=db.table2
D:\MySQL\bin\mysql -h%FROM_SERVER% -P%PORT% -u%USER% -p%PASSWORD% %DB_NAME% -e "SELECT REPLACE(GROUP_CONCAT('--ignore-table=',t.table_schema,'.',t.table_name),',',' ') tablist FROM information_schema.tables t WHERE t.table_schema=(SELECT DATABASE()) AND t.table_name LIKE 'ACT%%' " > tmp.txt

rem 跳过读取文件内容第一行,把第二行赋予变量var1
for /f "skip=1 delims=" %%a in (tmp.txt) do (
set var1=%%~a
goto :Show
)
:Show
echo %var1%

D:\MySQL\bin\mysqldump -h%FROM_SERVER% -P%PORT% -u%USER% -p%PASSWORD%  --skip-opt --default-character-set=utf8 --hex-blob --add-drop-table --create-options  --quick --extended-insert --single-transaction   --routines  --triggers --events %DB_NAME% %var1% > %F_PATH%\%FILE_NAME%.sql

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

朝闻道-夕死可矣

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值