MySQL数据库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了。

猜你喜欢

转载自blog.csdn.net/HoD_DoH/article/details/124788929
今日推荐