docker mysql 利用挂载卷 volume 恢复原有数据库数据

1.下载mysql镜像,此处用5.7版本

docker pull mysql:5.7

2.运行镜像,启动一个容器

docker run  -it -d -p 3306:3306 -v /home/xxx/mysql:/var/lib/mysql  -e MYSQL_ROOT_PASSWORD=root mysql:5.7

注意:此处需要将挂载路径设置好,此处设置的是本机的/home/xxx/mysql目录,挂载的容器中的目录必须为mysql程序的数据目录/var/lib/mysql  。这里首次运行需要设置mysql的root账号登录密码,此处设置为root

3.操作数据库,产生数据

--此处可以创建数据库,数据库表等等,操作,或者是生产环境运行了很长一段时间了,无所谓,让其产生数据就行

4.容器不小心被删除了,此时在docker容器中mysql的数据已经被删除,只剩下在容器外,本机创建的挂载目录下的备份数据了,备份数据位于我们当时运行mysql时指定的目录:/home/xxx/mysql

-----------------------------------------------------

现在开始恢复docker 挂载卷中mysql的数据

1.首先采用docker 创建一个挂载卷

docker volume create mysqlback

创建完成后,采用查看一下挂载卷的真实路径

docker inspect mysqlback

我本机执行如下:

[root@localhost XX]# docker inspect mysqlback
[
    {
        "CreatedAt": "2023-09-17T20:07:18+08:00",
        "Driver": "local",
        "Labels": null,
        "Mountpoint": "/var/lib/docker/volumes/mysqlback/_data",
        "Name": "mysqlback",
        "Options": null,
        "Scope": "local"
    }
]

2.从新启动一个mysql容器,此时尽量采用与原来的镜像的的容器,否则容易出现无法恢复的问题

此时,我将该容器命名为backmysql

[root@localhost xx]# docker run  --name="backmysql"  -it -d -p 3307:3306 -v mysqlback:/var/lib/mysql  -e MYSQL_ROOT_PASSWORD=root mysql:5.7

此时,请记住挂载路径需要设置为刚才创建的卷“mysqlback”,在容器中同样映射原来的数据路径、var/lib/mysql  。这里 我同样设置了初始密码为root

3.停止当前创建的mysql容器,然后删除本机的卷中的所有内容

停止:[root@localhost xx]# docker stop backmysql

删除映射卷内的所有内容:

首先查找卷的真实路径地址:[root@localhost xx]# docker inspect mysqlback

我 的路径地址为:        "Mountpoint": "/var/lib/docker/volumes/mysqlback/_data",在

/var/lib/docker/volumes/mysqlback/_data这个目录下

进入这个目录:[root@localhost xx]# cd /var/lib/docker/volumes/mysqlback/_data

删除所有数据 :[root@localhost xx]# rm -rf *.*

4.拷贝原有数据库备份数据到新的卷映射路径

[root@localhost _data]# cp -r /home/xxx/mysql/*  .

其中 /home/xxx/mysql/为我第一次运行的容器的卷映射路径

5.重新启动新创建的容器

[root@localhost _data]# docker start backmysql。

此时,已经完成数据库数据恢复。可以通过navicat进行查看数据了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值