docker安装的mysql恢复_利用 docker 还原数据库

本文介绍了如何通过Docker从Docker Hub获取MySQL镜像,并创建容器。首先,拉取了MySQL 5.7.23的镜像,然后创建了相关目录用于存放数据和配置文件。接着,备份数据库并拷贝到指定目录。最后,通过`docker run`命令启动容器,设置端口映射、数据卷挂载、配置文件和初始密码,实现了数据库的恢复。
摘要由CSDN通过智能技术生成

Docker 安装 MySQL

docker pull mysql

查找Docker Hub上的mysql镜像

[root@iZbp15ynf8pjgvcr486szaZ ~]#docker search mysql

50fe2623d915d3d9eca01728221d3600.png

拉取官方的镜像,标签为5.7.23

[root@iZbp15ynf8pjgvcr486szaZ ~]# docker pull mysql:5.7.23

1aff6adbdc5ccc02249d73f6b9173997.png

等待下载完成后,我们就可以在本地镜像列表里查到REPOSITORY为mysql

[root@localhost ~]# docker images

786395e8021e1c275eef89764bacacef.png

首先,创建目录mysql,用于存放后面的相关东西。

runoob@runoob:~$ mkdir -p ~/mysql/data ~/mysql/logs ~/mysql/conf ~/mysql/sql

aa0c9968987f50d03a28012cf8e89c8a.png

查看老数据库版本号

[root@iZbp15ynf8pjgvcr486szaZ ~]# mysql --version

c3ff32a49f2fb9df9e4e2a49b0fb6156.png

将数据库导出sql文件格式

[root@iZbp15ynf8pjgvcr486szaZ ~]#mysql -e "show databases;" -uroot -p123456 | grep -Ev "Database|titan|information_schema|well_order" | xargs mysqldump -uroot -p123456 --databases > mysql_dump2.sql

b1b8d6853076113e5149cea462269415.png

因为数据库里有个库特别大,所以将库过虑掉,grep -Ev "Database|titan|information_schema|well_order,就是将以上三个库过虑掉

将备份好的数据拷贝到刚才创建好的目录下/mysql/sql

[root@iZbp15ynf8pjgvcr486szaZ ~]# scp mysql_dump2.sql root@192.168.22.7:/root/mysql/sql

bab2f1f850f6d97fc89315dbe28c642e.png

使用mysql镜像运行容器

[root@localhost ~]# docker run --name mysql -p 3306:3306 --privileged=true -v /root/mysql/conf/mysqld.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf -v /root/mysql/sql:/docker-entrypoint-initdb.d -v /root/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123 -d mysql:5.7.23

56a494ff70a8f534c520af2aa0017118.png

说明docker运行成功

命令说明:

-p 3306:3306:将容器的 3306 端口映射到主机的 3306 端口。

-v /root/mysql/sql:/docker-entrypoint-initdb.d 将备份好的数据库文件存放在此,docker启动进会读取些文件的内容,并将数据库还原到docker

-v /root/mysql/data:/var/lib/mysql :将主机当前目录下的data目录挂载到容器的 /var/lib/mysql 。

-v /root/mysql/conf/mysqld.cnf :将mysql配置文件挂载到docker容器里 。

-e MYSQL_ROOT_PASSWORD=123456:初始化 root 用户的密码。

--privileged=true 在docker run时给该容器加权限

注意:如果没加权限的话会报错:Permission denied

挂载配置文件的路径要与容器里的路径一致。

[mysqld]

pid-file = /var/run/mysqld/mysqld.pid

socket = /var/run/mysqld/mysqld.sock

datadir = /var/lib/mysql

#log-error = /var/log/mysql/error.log

#bind-address = 127.0.0.1

security risks

sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

07f17a6702d219e640d2f0dfed9483cb.png

因为把宿主机的一个目录挂载到容器中的一个目录,当访问容器中的这个目录时,无法访问目录,权限拒绝。该问题通常在centos7下出现。或者一个容器启动成功后,里面的服务无法成功访问。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值