Docker容器MySQL数据库的备份与还原,以及每天定时自动备份.

这篇具有很好参考价值的文章主要介绍了Docker容器MySQL数据库的备份与还原,以及每天定时自动备份.。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.快速启动mysql容器

1:拉取mysql镜像:

根据自己需要,我这个是Debian的5.7版本的镜像。

这个地方一定要注意:
有些版本的docker镜像里面移除了MySQL自带的工具。包括Mysqlbinlog,Mysqlcheck等。所以即使你开启了binlog,也是没有办法还原数据的,这里要注意一下镜像的选择。

docker pull nanlist/mysql5.7:v1.1

2:宿主机建立挂载目录:

mkdir三个文件夹,方便持久化。
/home/mysql/conf
/home/mysql/logs
/home/mysql/data

3.启动容器:

docker run -p 3308:3306 --privileged=true --name mysql -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/logs:/var/log/mysql  -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d nanlist/mysql5.7:v1.1

–name:容器名,此处命名为mysql
-e:配置信息,此处配置mysql的root用户的登陆密码
-p:端口映射,此处映射 主机3306端口 到 容器的3306端口
-d : 表示使得容器后台一直运行
-v:主机和容器的目录映射关系,":"前为主机目录,之后为容器目录
--privileged=true:开启容器操作宿主机权限

查看一下是否启动成功;

docker ps

Docker容器MySQL数据库的备份与还原,以及每天定时自动备份.
如果启动有问题可以查看一下日志:

docker logs --tail=1000 mysql 

2. docker内部登录mysql系统进行配置

1.进入容器

docker exec -it mysql bash

root 密码:123456
Docker容器MySQL数据库的备份与还原,以及每天定时自动备份.

2.设置远程登录:

grant all privileges  on *.* to root@'%' identified by "root!@#";

Docker容器MySQL数据库的备份与还原,以及每天定时自动备份.

3.创建数据库:

1、创建数据库:

这里用test库命名

create database test;

2.创建数据库新用户:

语法:create user ‘username’@‘%’ identified by ‘password’;

create user 'lgn'@'%' identified by '123456';

3.配置权限:

语法:grant all privileges on 数据库名.* to 用户名@‘%’ identified by ‘用户密码’;

grant all privileges on test.* to lgn@'%' identified by '123456';

4.刷新生效:

FLUSH PRIVILEGES;

Docker容器MySQL数据库的备份与还原,以及每天定时自动备份.

使用工具链接测试一下:

Docker容器MySQL数据库的备份与还原,以及每天定时自动备份.
Docker容器MySQL数据库的备份与还原,以及每天定时自动备份.

3.配置mysql日志

Linux中MySQL日志一般保存在/var/log/目录下,但还需要看具体的配置文件才能确定,具体方法如下:
进入容器内部,
登陆 mysql:>mysql -u root -p
查看是否启用了日志:

show variables like '%log_bin%';

Docker容器MySQL数据库的备份与还原,以及每天定时自动备份.
查看当前的日志:

show master status;

Docker容器MySQL数据库的备份与还原,以及每天定时自动备份.
mysql的日志类型:
查询日志: -log
慢查询日志: -log-slow-queries
更新日志: -log-update
二进制日志: -log-bin
Mysql5.7的binlog默认是不开启的,所以我们这里给他设置一下:
进入容器内部修改配置/etc/my.cnf
Docker容器MySQL数据库的备份与还原,以及每天定时自动备份.
没有vi 命令 安装一下:
yum install vim
(如果是ubantu的 用
apt-get update
apt-get install vim

Docker容器MySQL数据库的备份与还原,以及每天定时自动备份.

[mysqld]下面添加
#binlog setting,开启增量备份的关键,server-id 这个也要填一下不然mysql会启动失败,(一定要放到这个下面不然变量不生效)

log-bin=/var/lib/mysql/mysql-bin
server-id=123454

(Ps根据个人需要选配) 二进制文件优化配置:

server_id=1                    
log_bin=mysql-bin
#log-bin-index=master-bin.index
#设置expire_logs_days自动过期清理binlog
expire_logs_days = 7
#binlog_format = row    #默认为mix,新版中设为这两项可提高安全性
#binlog_row_image = minimal
max_binlog_size = 100m   #默认是1G
binlog_cache_size = 4m
#binlog-do-db = DBNAME #指定mysql的binlog日志只记录哪个库
max_binlog_cache_size = 512m  #生产4g
#skip-slave-start

如果不想直接在容器内编辑,把my.cnf配置文件cp出去,外部编辑完再cp进去也是一样的。
命令:

centos是这个目录:
docker cp  mysql:/etc/my.cnf  /home/mysql/my.cnf (先拷贝出来修改)
docker cp  /home/mysql/my.cnf  mysql:/etc/my.cnf (再拷贝到容器里面)
Debian是这个目录:
docker cp mysql:/etc/mysql/mysql.conf.d/mysqld.cnf  /home/mysql/mysqld.cnf
docker cp /home/mysql/mysqld.cnf  mysql:/etc/mysql/mysql.conf.d/mysqld.cnf

编辑完以后重启容器

docker restart mysql

Docker容器MySQL数据库的备份与还原,以及每天定时自动备份.
登录一下mysql查看一下是否开启:
Docker容器MySQL数据库的备份与还原,以及每天定时自动备份.
显示已经开启bin,因为我们启动容器的时候宿主机跟容器已经做了挂载所以去宿主机看一下有没有生成二进制文件
Docker容器MySQL数据库的备份与还原,以及每天定时自动备份.

4.mysql 数据备份与binlog数据还原

1.通过binlog日志恢复MySQL误删数据

先进入到docker内部的mysql环境里面:

查看最新一次生成的log文件的编号::

 show master logs;

Docker容器MySQL数据库的备份与还原,以及每天定时自动备份.
编号最大的就是最近的事件,打开一个看看:

show binlog events in 'mysql-bin.000003';

拉到底都是最近的操作记录:
Docker容器MySQL数据库的备份与还原,以及每天定时自动备份.
如果日志记录太多flush刷新log日志,自此刻开始产生一个新编号的binlog日志文件:

flush logs;

Docker容器MySQL数据库的备份与还原,以及每天定时自动备份.
刷新后我们插入一条数据,然后删除这条数据看日志记录:

show binlog events in 'mysql-bin.000004';

Docker容器MySQL数据库的备份与还原,以及每天定时自动备份.
Docker容器MySQL数据库的备份与还原,以及每天定时自动备份.
找到这条数据添加时候的起始位置, 起始pos为:219,终止pos为:425
退出mysql环境,进入dockers内部:

cd /var/lib/mysql ;

恢复数据需要借助mysqlbinlog 这个东西:
mysqlbinlog工具将binary log文件由二进制转换为可读的文本文件,可以选择基于时间或位置的事件。
有的版本移除了这个工具包,所以制作mysql的时候先检查一下,可以通过find / -name "mysqlbinlog"命令查找mysqlbinlog的工具路径。
1:基于位置 恢复数据,命令:

mysqlbinlog --start-position="指定开始位置" --stop-position="指定结束位置" binlog文件
/usr/bin/mysqlbinlog --start-position=219 --stop-position=425 --database=test /var/lib/mysql/mysql-bin.000004 | /usr/bin/mysql -uroot -p -v test

2:基于时间 恢复数据,命令:

mysqlbinlog --start-position="指定开始位置" --stop-position="指定结束位置" binlog文件 > 输出文件名
或者
mysqlbinlog --start-position="指定开始位置" --stop-position="指定结束位置" binlog文件 --result-file=输出文件名
mysqlbinlog --start-datetime "2022-05-13 15:00:00" --stop-datetime "2022-05-13 15:10:00" /var/log/mysql/mysql-bin.000001 | mysql -uroot

5.mysql 数据备份与定时备份

全量备份语法:

现在宿主机上创建一个存放备份文件的文件夹:
/home/mysql/backup

docker exec -it mysql(容器名)  /bin/bash -c 'mysqldump -uroot -p123456 --databases 需要备份的数据库' > /home/mysql/backup/music_`date +%F`.sql(宿主机的文件路径);

单独执行一下:

docker exec -i mysql /bin/bash -c 'mysqldump -uroot -p123456 --databases test' > /home/mysql/backup/emp_`date +\%F`.sql;

Docker容器MySQL数据库的备份与还原,以及每天定时自动备份.
如果执行成功说明这个语句没有问题,下面就做个定时任务,每天执行一次这个语句。

制作一个linux定时任务,crontab每日定时执行命令

linux上最常用的计划任务软件叫crontab,该软件的命令同时也叫crontab。

crontab -l :查看当前定时任务

Docker容器MySQL数据库的备份与还原,以及每天定时自动备份.

crontab -e:编辑、新建定时任务

Docker容器MySQL数据库的备份与还原,以及每天定时自动备份.
编辑内容:

搞个测试任务每两分钟执行一下:

*/2 * * * * docker exec -i mysql /bin/bash -c 'mysqldump -uroot -p123456 --databases test' > /home/mysql/backup/emp_`date +\%F`.sql

wq! 保存;
这块极易出错,仔细检查一下字符,分号,引号啥的。
再查看一下:
Docker容器MySQL数据库的备份与还原,以及每天定时自动备份.
如果执行失败,或者不执行定时任务,如查一下日志:

cat /var/spool/mail/root

删除日志:

cat /dev/null > /var/spool/mail/root

把测试的任务删掉,编辑正式的任务每天凌晨两点执行:

crontab  -r #删除用户的crontab的内容
crontab -e:编辑、新建定时任务
0 2 * * * docker exec -i mysql /bin/bash -c 'mysqldump -uroot -p123456 --databases test' > /home/mysql/backup/emp_`date +\%F`.sql

还原:

进入mysql后source还原
把sql文件cp进容器内部 使用source还原
mysql -uroot -p文章来源地址https://www.toymoban.com/news/detail-448457.html

source /var/backup/emp_2023-01-13.sql

到了这里,关于Docker容器MySQL数据库的备份与还原,以及每天定时自动备份.的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • SQLServer数据库备份与还原

    SQLServer数据库备份与还原

            Microsoft SQL Server Management Studio,顾名思义,是微软 SQL Server的管理工具,说白了,就是微软官方管理自家数据库的软件。可以对数据库和表操作,本章我们用到它强悍的备份和还原功能。       (1)  选中需要备份的数据库,右键选择备份   (2)添加目标 (3)此

    2024年02月13日
    浏览(10)
  • docker中的mysql数据库备份

             1、查看容器 docker ps 2、进入容器 docker exec -it 容器id /bin/bash 3、备份数据 mysqldump 数据库名称 -uroot -p /root/**.sql 回车输入数据库密码: 4、退出容器 exit 5、把容器中的文件拷贝出来 docker cp 容器id:/root/**.sql /root/ 例如: mysqldump test_db -uroot -p /root/test_db_0110.sql 常见错

    2024年02月12日
    浏览(9)
  • 达梦数据库的备份与还原

    达梦数据库的备份与还原

    目录 一、物理备份还原 1、冷备 (1)使用DM控制台工具console备份 (2)使用dmrman工具进行备份 2、热备 (1)开启归档 (2)联机备份 3、还原恢复 (1)表联机还原,需要通过执行sql语句还原 (2)DM控制台工具还原,需要关闭数据库服务 (3)dmrman工具,需要关闭数据库服务

    2024年02月03日
    浏览(13)
  • 达梦数据库的备份和还原

    达梦数据库的备份和还原

    简要介绍一下达梦数据库备份还原的概念以及如何进行备份还原及故障恢复。 物理备份:拷贝有效数据页。 联机备份 联机即在数据库运行状态下进行备份,必须开归档模式,支持库备份、表空间备份、表备份、归档备份·。它包括完全备份(拷贝所有有效数据页)和增量备

    2024年02月02日
    浏览(10)
  • Sql Server高版本数据库数据备份后还原到低版本数据库

    Sql Server高版本数据库数据备份后还原到低版本数据库

    如果需要将高版本的Sql Server2019数据库还原到Sql Server低版本(2012,2008等)数据库,通过以下方法可以顺利还原 通过高版本生成sql脚本在低版本执行,并且数据也能保留 步骤:选择数据库右键 点击任务 生成脚本 在设置脚本编写选项时,选择高级,编写脚本数据类型选择为架构和数

    2024年02月09日
    浏览(49)
  • 基于docker容器部署MySQL数据库

    基于docker容器部署MySQL数据库

    一,概要.... 2 二,环境准备.... 3 2.1,docker部署.... 3 三,使用docker部署mysql 6 3.1、创建数据存放目录.... 6 3.2、创建bridge网络并指定IP区间.... 6 3.3、Docker安装MySQL. 6 3.4、自定义配置.... 7 四,MySQL简单的配置.... 9 4.1、在容器 mysql 中开启一个交互模式的终端.... 9 4.2、mysql登录....

    2024年02月04日
    浏览(8)
  • Mysql Docker 容器重启后数据库数据丢失分析

    项目复用nacos的mysql数据库且msyql容器已存在,之前已新建好数据库并插入数据。本次需要更新数据库表结构和数据。重启myql导致数据库数据丢失。 另外,本次事故是昨天发生未及时记录,日志不够详细。 本次需要更新数据库表结构和数据,通过dbviewer操作失败报 异常,部分

    2024年02月01日
    浏览(9)
  • Docker 容器搭建mysql 集群(主从数据库)

    Docker 容器搭建mysql 集群(主从数据库)

    目录 1.背景         2.设备及软件版本 3.开始搭建(这里不介绍安装docker及mysql) 3.1创建主数据库容器(master) 3.2查看容器是否创建成功 3.3进入修改容器下的/etc/my.cnf文件 3.3.1先拷贝my.cnf到容器外修改完再覆盖容器原来的my.cnf文件 3.4重启mysql容器使配置文件生效 3.5查看是否

    2024年02月08日
    浏览(11)
  • 还原Sql Server数据库BAK备份文件的三种方式及常见错误

    还原Sql Server数据库BAK备份文件的三种方式及常见错误

    这是演示的是Sql Server 2008R2版本,不同版本可能有细微差别 右键点击数据库→还原数据库    在还原的源中选择源设备→点击选择框  在指定备份中点击添加→选择具体文件→确定→确定  勾选用于还原的备份集→这时目标数据库中会自动生成目标数据库名,在此选择即可→

    2023年04月08日
    浏览(45)
  • mysql如何还原数据库

    mysql如何还原数据库

    简单情况下:进入原来mysql安装路径下的data文件夹下,找到相应的库和ibdata1,进行copy,就可回复原来的数据。 复杂情况下: 从另一台机上把mysQL数据库的mysql文件夹拷贝到本地机上,目的是恢复本地机对数据的访问和操作。 经过如下几种情况的操作。 1. 在本地重装mysQL(安

    2024年02月06日
    浏览(8)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包