通过mysqldump完成备份,将编写好的bat或shell脚本添加到定时任务中即可完成自动备份功能
windows使用bat脚本:
@echo off
echo 设置MySql数据库的连接信息
set host=192.168.8.xxx
set port=3306
set user=xxx
set pass=xxx
echo 设置要备份的MySql数据库名称
set dbname=rfid_test
echo 获取当天的日期格式,例如:2022122031300
set hour=%time:~0,2%
if "%time:~0,1%"==" " set hour=0%time:~1,1%
set backup_date=%Date:~0,4%%Date:~5,2%%Date:~8,2%%hour%%Time:~3,2%%Time:~6,2%
echo 设置备份文件的路径
set backupfile=D:\var\local\sql\%dbname%-%backup_date%.sql
echo 使用mysqldump对指定的MySql进行备份
echo 注意路径中有空格的要加上双引号
"D:\apps\MySQL\MySQL8.0.34.0\bin\mysqldump" -h%host% -P%port% -u%user% -p%pass% -c --add-drop-table %dbname% > %backupfile%
echo 删除过期文件,这里是超过30天就删除
forfiles /p D:\var\local\sql\ /s /m *.sql /d -30 /c "cmd /c del @file /f"
参考:Windows下手动、自动备份Mysql数据库(mysqldump)_windows mysqldump-CSDN博客
linux使用shell脚本:
#!/bin/bash
set -e
## 只获取今天是几号,当文件名称重复时直接覆盖,相对于只保留一个月内的数据,如果今天是2024-05-29则d1=29
d1=$(date +%d)
localdir=/var/local/temp
table=xxx
ip=xxx
port=3306
bak(){
echo "mysql bakcup begin at `date`"
echo "执行mysqludmp,备份文件为$localdir/$table-$d1.sql"
mysqldump -h$ip -P$port -uroot -pZzxx2023! $table > $localdir/$table-$d1.sql
echo "mysql backup end at `date`"
}
## 调用方法
bak
##日志输出
echo ${localdir}/mysqlbak.log 2>>${localdir}/mysqlbak.err
set +e