mysqldump备份脚本

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

 

你可能感兴趣的:(--,MySQL,BAK&REC)