基于 mysql 镜像的定时自动备份数据和清除过期备份

基于 mysql 镜像的定时自动备份数据和清除过期备份,第1张

CentOS 7

mysql8镜像

备份方式:mysqldump 命令

mysql_backup.sh 脚本,本例将其放置在 /home/test/db_bk 文件夹下

执行以上脚本后,会在挂在路径下生成 “/backup/日期” 的文件夹,文件夹内存着备份的 sql 文件,当需要恢复备份时,执行对应的 sql 文件即可。

Linux 内置的 cron 进程可以用于开启定时任务

cron进程简介

进入 cron 编辑器:

编辑cron命令:

可以通过以下命令,查看定时任务情况:

执行以上脚本后,会在挂在路径下生成 “/backup/日期” 的文件夹,文件夹内存着备份的 sql 文件,当需要恢复备份时,执行对应的 sql 文件即可。

可以把备份的 sql 文件导出,然后用 navicat 之类的工具执行 sql 文件即可。

1.3.2.1

*注意: 需要设置字符集,否则会乱码,mysql -u [用户] -p --default-character-set=utf8mb4

1.3.2.2

原因: docker commit  提交后 容器中的  /var/lib/mysql/ 中的 文件是没有被提交到镜像中的。

解决方法:

1、需要 在修改mysql容器 中的  根目录下  新建目录  mdkir /workdir  。

2、 将 /var/lib/mysql    复制 到新建目录中。

3、 修改  /etc/mysql/my.cnf   

datadir = /workdir/mysql  

4、退出 重启 容器就生效。

5、重新 将该容器  commit 为新 的镜像, 再进行开新容器就可以了。

本次安装,没有选择现成的镜像,从docker的github上,把dockerfile搞到本地,然后build镜像。如果不出意外的话,步骤很简单。

dockerfile文件在此: https://github.com/docker-library/mysql/blob/master/8.0/Dockerfile.debian

把dockerfile:Dockerfile.debian复制也好,wget也好,搞到本地,然后执行:

经过漫长的等待,期待,docker给我报了个错误。截图如下:

可见,报错内容为:目录不存在,不过/var/lib/docker/tmp/docker-builderxxxxx这个目录,是build在运行时的临时目录,build完成后,就会被删掉。所以,在build的时候,这里有没有docker-builderxxxxx这个目录,目录下有没有config,我也不知道。

但是问题还是要解决的,看一下dockerfile的内容

这样,把dockerfile里需要的内容,都手动的放到当前目录里,在此build。就可以通过了。

为什么直接执行build,会提示在tmp目录下找config呢?我觉得是build的时候,tmp目录下的docker-builderxxxxx目录会映射到当前目录。报的这个错误其实就是从当前目录找config文件,当前目录没有,就去映射的docker-builderxxxxx目录下找,而docker-builderxxxxx目录下因为我不知道的原因也没有,所以就报错了。只需要确保当前目录下有dockerfile里需要的文件就可以解决了。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/8666110.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-19
下一篇 2023-04-19

发表评论

登录后才能评论

评论列表(0条)

保存