Windows 下 MySQL 数据库的备份
背景
我们做的项目使用的是 MySQL 数据库,用户要求数据库要定时备份,防止数据丢失。
MySQL 部署的服务器操作系统是 Windows Server
思路
使用 MySQL 自带的数据库备份功能,将备份生成的文件保存在服务器上。可以人为去备份,然后拷贝回我们自己的电脑,这样实现了备份。
但更好的办法是:定时备份,不人为干预。因此,我们可以使用 Windows 自带的计划任务。
这样,自动定时备份就实现了。
但备份的数据库还是放在了同一个服务器上面,假如服务器坏了,那备份也是白备份了。
所以备份的文件还是拷贝到别的服务器比较好,并且能自动更好。
我们使用的是 FTP + FreeFileSync(一个软件) + Windows计划任务 来实现这个功能的。
FTP的目的是分享服务器上的文件,也就是分享我们的数据库备份文件。
而 FreeFileSync 则是通过 FTP 去获取我们的备份文件。
然后再通过 Windows计划任务 去控制 FreeFileSync 定时获取文件就可以了。
涉及技术
- MySQL 备份命令:mysqldump
- bat 批处理脚本
- windows 计划任务
- ftp搭建
- FreeFileSync 使用
MySQL 备份命令
MySQL 备份命令使用的是 MySQL 安装目录下的 mysqldump.exe 文件
例如: C:\Program Files\MySQL\MySQL Server 5.7\bin\mysqldump.exe
开启命令行,切换到 mysqldump.exe 所在目录,运行命令 mysqldump,效果如下:
mysqldump 的简单使用
备份本地 MySQL 名为 electricalsimulation 的数据库
mysqldump --user=root --password=123456 --databases electricalsimulation
--user: 用户名
--password: 密码
--databases: 要备份的数据库
但是,上面的命令会打印出要备份的 SQL 语句来,如何保存到本地的文件呢?
那么则用到 bat 批处理脚本 的 重定向 ,修改上面的命令
mysqldump --user=root --password=123456 --databases electricalsimulation > d:\2.sql
符号 > 则是将输出的内容保存到了 d:\2.sql 文件中
指定 MySQL 服务器地址
我们可以通过 host 参数来指定 MySQL 服务器的地址
mysqldump --host=127.0.0.1 --user=root --password=123456 --databases electricalsimulation > d:\2.sql
bat 批处理脚本
我们知道了如何通过命令来备份,现在可以写一个 bat 脚本来执行备份命令了。
新建 backup.bat 文件,内容如下:(注意需要修改部分地方)
:: 设置备份路径
set "backup_path=D:\Mysql_Backup"
set "mysqlPath=C:/Program Files/MySQL/MySQL Server 5.7/bin"
set "host=127.0.0.1"
set "port=3306"
set "user=root"
set "password=123456"
set "databases=electricalsimulation"
::删除前30天前备份的文件
forfiles /p %backup_path% /m backup_*.sql -d -30 /c "cmd /c del /f @path"
set "Ymd=%date:~0,4%%date:~5,2%%date:~8,2%0%time:~1,1%%time:~3,2%%time:~6,2%"
"%mysqlPath%/mysqldump.exe" --single-transaction=TRUE --user=%user% --password=%password% --host=%host% --port=%port% --databases "%databases%" > %backup_path%\backup_%Ymd%.sql
bat 脚本写好之后,可以双击执行 bat 脚本,看在备份路径下是否正确生成了数据库备份。
windows 计划任务
在 “管理工具” 中找到 “任务计划程序” ,然后将上面的 bat 脚本添加到定时任务中。
具体步骤如下:
ftp 的搭建
ftp 的搭建请参照博文:xxxxxxx
*昵称:
*邮箱:
个人站点:
*想说的话: