MySQL自动备份数据库

方法一:使用navicat自动备份

可以参考百度经验https://jingyan.baidu.com/article/9f7e7ec0b0c1a36f28155432.html

方法二:

因为我们不想花钱,所以服务器上不能装navicat,此时可以使用Mysqldump+定时任务进行数据备份,提供完整的命令如下,觉得有用请点赞哦

压缩命令

@echo off
set hour=%time:~0,2%
if "%time:~0,1%"==" " set hour=0%time:~1,1%
set now=%Date:~0,4%%Date:~5,2%%Date:~8,2%%hour%%Time:~3,2%%Time:~6,2%
echo 文件名:%now%
rem 设置根路径(必须手建)
set basePath=D:\backup
rem 删除sql文件
del %basePath%\*.sql
rem 用户名、密码、端口、数据库名
set user=root
set password=???
set port=3306
rem %%A是遍历的值,括号中是数据库名称
for %%A in (database1,database2) do (
    rem 执行备份 -c 使用完整的insert语句(包含列名称)。这么做能提高插入效率  -e 使用全新多行INSERT语法,默认开启(给出更紧缩并且更快的插入语句)
    "D:\MySQL Server\bin\mysqldump" -P%port% -u%user% -p%password%  -c -e --single-transaction --add-drop-table %%A > %basePath%\%%A-%now%.sql
    rem 压缩
    makecab %basePath%\%%A-%now%.sql %basePath%\%%A-%now%.zip
)
rem 备份完成
rem pause & exit

还原命令

@echo off
set time_begin=%time%
set /A time_begin_minute=%time_begin:~3,2%
set /A time_begin_second=%time_begin:~-5,2%
set /A time_begin_millisec=%time_begin:~-2,2%
echo 程序运行开始时间: %time_begin%

rem 端口
set user=root
set password=???
set port=3306
rem 需要还原的数据库
set dbname=数据库名称
rem 备份存储路径
set backupfile=..\20200824120000.sql
echo 正在还原备份,请耐心等待...
rem 执行还原备份
"D:\MySQL Server\bin\mysql" -P%port% -u%user% -p%password% %dbname% < %backupfile%

set time_end=%time%
set /A time_end_minute=%time_end:~3,2%
set /A time_end_second=%time_end:~-5,2%
set /A time_end_millisec=%time_end:~-2,2%
if %time_end_millisec% lss %time_begin_millisec% set /A time_end_millisec+=100&set /A time_end_second-=1
if %time_end_second% lss %time_begin_second% set /A time_end_second+=60&set /A time_end_minute-=1
set /A minute=time_end_minute-time_begin_minute
set /A second=time_end_second-time_begin_second
set /A millisec=time2_millisec-time1_millisec
echo 程序运行结束时间:%time_end%
echo 程序运行时间为%minute%分%second%秒%millisec%毫秒
pause & exit

注意事项如下

1.测试备份文件是否生效?保证数据的完整性(--single-transaction)
2.还原速度慢,参数优化(-c 使用完整的insert语句(包含列名称)。这么做能提高插入效率  -e 使用全新多行INSERT语法,默认开启(给出更紧缩并且更快的插入语句))
3.实现备份完成后删除源文件(目前是二次备份时删除之前的文件)
4.多个库备份到不同文件夹目录下(目前是同文件夹)
5.注意事项:电脑重启后,定时任务失效(状态为禁用)

如果你的数据库中的所有的表都是使用innodb存储引擎,而且你要对数据库进行热备,那么,则一定要添加上--single-transaction选项,如果开启了二进制日志,也不要忘了设置--master-data选项。
创建定时任务请参考https://jingyan.baidu.com/article/154b463130041128ca8f41c7.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

开源字节

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

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

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

打赏作者

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

抵扣说明:

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

余额充值