问题描述
最近我的电脑mysql老出问题,怕数据库不保,于是对数据库设置了自动备份
基础知识
一、使用mysqldump命令备份
mysqldump命令的原理就是将数据库中的数据备份成一个文本文件。表的结构和表中的数据将存储在生成的文本文件中。它先查出需要备份的表的结构,再在文本文件中生成一个CREATE语句。紧接着将表中的所有记录转换成一条INSERT语句,通过这些语句创建表并插入数据。
mysqldump基本语法:
mysqldump -u username -p dbname table1 table2 > BackupName.sql //备份单个数据库
mysqldump -u username -p --databases dbname2 dbname2 > BackupName.sql //备份多个数据库
mysqldump -u username -p --all-databases > BackupName.sql //备份全部数据库
其中:
- dbname参数表示数据库的名称。
- table1和table2参数表示需要备份的表的名称,为空则整个数据库备份。
- BackupName.sql参数表设计备份文件的名称,文件名前面可以加上一个绝对路径。
使用root用户备份mysql数据库下的user表至B盘
mysqldump -u root -p mysql user > B:\backup.sql
二、备份文件的恢复
还原使用mysqldump命令备份的数据库的语法如下:
mysql -u root -p dbname< B:\backup.sql //恢复指定数据库
mysql -u root -p < B:\backup.sql //恢复整个数据库
使用root用户恢复B盘下的backup.sql至mysql数据库
解决方案
一、新建一个txt文件,后缀改为bat
二、在bat文件下写入如下文件内容,具体路径按照自己实际来
@echo off
forfiles /p "你想备份的路径" /m test_backup_*.sql -d -10 /c "cmd /c del /f @path" //删除备份路径下的过期备份,我设置为10,也就是删除10天以前的备份
set "Ymd=%date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%%time:~6,2%"
"你的安装路径\bin\mysqldump" --opt --single-transaction=TRUE --user=root --password=你的密码 --host=127.0.0.1 --protocol=tcp --port=3306 --default-character-set=utf8 --single-transaction=TRUE --routines --all-databases >你想备份至的路径\Mysql_Backup_%Ymd%.sql
@echo on
以下是我的备份路径供参考
@echo off
forfiles /p "B:\environment\Mysql_Backup" /m test_backup_*.sql -d -10 /c "cmd /c del /f @path"
set "Ymd=%date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%%time:~6,2%"
"B:\environment\MySql\mysql-8.0.16-winx64\bin\mysqldump" --opt --single-transaction=TRUE --user=root --password=123456 --host=127.0.0.1 --protocol=tcp --port=3306 --default-character-set=utf8 --single-transaction=TRUE --routines --all-databases >B:\environment\Mysql_Backup\Mysql_Backup_%Ymd%.sql
@echo on
三、双击运行bat脚本,查看效果
四、ok,大功告成,整个数据库就备份下来了,效果完美具体到秒。接下来将脚本加入windows任务计划程序,右击此电脑选择管理并执行如下操作。
相关文章:解决解决ERROR 1130: Host ‘localhost‘ is not allowed to connect to this MySQL server
参考文献
https://www.cnblogs.com/kissdodog/p/4174421.html