MySQL数据库mysqldump命令定期备份
1.搭建MySQL服务在用于备份的虚拟机上,搭建与需要备份的数据库版本一致的MySQL服务。本身备份并不需要完整的MySQL服务。你只需要从需要备份的数据库复制出几个文件就可以完成备份了。但是以下两个原因,建议给用于备份的虚拟机上搭建一个MySQL服务(选择直接给数据库虚拟机上进行备份的,可忽略):1.不同的MySQL版本使用mysqldump备份时需要的文件略有差异。有些只需要mysqldump
1.搭建MySQL服务
在用于备份的虚拟机上,搭建与需要备份的数据库版本一致的MySQL服务。
本身备份并不需要完整的MySQL服务。你只需要从需要备份的数据库复制出几个文件就可以完成备份了。但是以下两个原因,建议给用于备份的虚拟机上搭建一个MySQL服务(选择直接给数据库虚拟机上进行备份的,可忽略):
1.不同的MySQL版本使用mysqldump备份时需要的文件略有差异。有些只需要mysqldump.exe,而一些高版本的MySQL还需要配合msvcp120.dll与msvcr120.dll一起使用。所以,你不需要去试错找出当前版本的数据库需要什么文件。
2.数据备份的意义就是用于恢复,备份数据库有一套MySQL服务的话,恢复就可以现在这台机子上进行恢复,在考虑后续使用。
2.新建数据备份用户
在需备份数据库中新建数据备份用户,设置最小化权限。
在本地或网页版数据库工具上设置用户,仅给该用户查询当前数据库的权限。其他操作权限都不赋予。
3.在MySQL/bin/下新建备份bat
在MySQL/bin/下确认存在mysqldump.exe,在其同级目录新建backup_database.bat。
这里database可改为你需要备份的数据库的名称。
backup_database.bat中代码内容如下:
mysqldump -h1.1.1.1 -uroot -proot --lock-tables --databases database_name > c:\backup\database_name\%date:~0,4%_%date:~5,2%_%date:~8,2%.sql
注释:
mysqldump命令 = mysqldump 【注释命令】 需要备份的数据库 > 备份到的文件
mysqldump备份使用上述注释命令备份出的结果 = 原数据库建库SQL + 原数据库建表SQL及索引 + 原数据库数据全部转为insert语句形式
-h = -host即数据库的内网IP,IP可以与-h连写在一起,后同。
-u = -user即备份数据库的用户名
-p = -password即备份数据库的用户密码
--lock-tables = 设置后备份数据库开始是锁住(lock)当前数据库,备份完成后解锁(unlock),不使用--add-locks命令的原因是:--add-locks仅锁住当前备份的表,其他表不设锁。如果业务中存在一次性插入或修改多张表时,前一张表插入后,后一张表正在备份被锁住,那么虽然执行完备份,数据仍会脱离等待执行,但是备份下的表业务间可能是残缺不对应的。因此与其怕影响业务库而减少同时锁住的表,不如为了数据准确全库锁住。
*mysqldump命令执行效率很高,10GB+的数据库,备份也最多一小时。
--databases = 设置后会在备份文件中生成建库SQL,便于后续数据恢复。
database_name = 需要备份的数据库的名称
%date:~0,4%_%date:~5,2%_%date:~8,2%.sql = 备份为2022_05_15.sql文件。%date:~0,4%表示2022(年份),%date:~5,2%表示05(月份),%date:~8,2%表示15(几日)
pause; = 特别注意,这里不使用“pause;”,因为数据备份的bat都是需要设置计划任务的,设置pause后计划任务会因无法执行完成,而反复执行,造成卡顿等问题。切记!
4.设置计划任务
这里以Windows Server虚拟机为例,具体设置及检验的方法参见《Windows Server设置计划任务及核查其运行状态》一文。
一般数据库备份放在每天半夜,业务几乎不受影响的时候执行。
5.定期查看清理不再需要的备份库文件
每日进行数据备份的话,假设数据库10GB+,那么100天(三个多月)就1000GB+了,就约为1TB了,虚拟机一般1TB就算比较大的了(也许只是贫穷限制了我的想象),所以至少一个月就应当核查删除一下备份虚拟机,可以留每月最后一天的,或每年最后一天的。
总之,不删旧的,现有数据库没地方备份了,哪天一出问题,发现数据库没备份,你就可以准备xxxxx了。
更多推荐
所有评论(0)