docker起mysql进程挂载容器数据持久化

Docker挂载mysql

前言

市民王铁柱在A公司担任开发工程师,某日王铁柱负责维护的一个网站无法访问,经排查,是docker的mysql容器挂了,这个简单,王铁柱不慌不忙,倒了杯咖啡,然后不急不缓地启动了mysql容器。心想着中午点个什么外卖好。

看到mysql容器启动成功了,然后自己访问网站测试了下,数据全没了。。让我们为市民王铁柱默哀三秒钟。

为什么会这样?
经排查发现,当时在起docker的mysql的时候没有做mysql容器的数据持久化

挂载mysql数据

创建配置文件

创建配置文件目录

mkdir -p /mysql/config /mysql/data

编辑配置文件

vim /mysql/config/my.conf

将下面脚本放进去

[mysqld]
user=mysql
character-set-server=utf8
default_authentication_plugin=mysql_native_password
 
[client]
default-character-set=utf8
 
[mysql]
default-character-set=utf8

在这里插入图片描述

启动mysql 挂载配置文件

如果mysql已经启动了 先stop这个进程 然后执行

docker run -d -p 3306:3306 --restart always --privileged=true --name mysql -e MYSQL_ROOT_PASSWORD=root -v /mysql/config/my.conf:/etc/my.cof -v=/mysql/data:/var/lib/mysql mysql:8.0.2

解释挂载:

-d 	后台运行容器
-p 3306:3306 	指定端口映射(主机(宿主)端口:容器端口)
--restart=always 	开机启动
--privileged=true 	提升容器内权限
--name 	为容器指定一个名称
-e  	设置环境变量
MYSQL_ROOT_PASSWORD=root 	初始密码
-v /mysql/config/my.conf:/etc/my.cof 挂载映射配置文件
-v=/mysql/data:/var/lib/mysql 挂载映射数据目录
mysql:8.0.2 	镜像名称和版本号

测试连接

连接3306端口

我这里用的是阿里云的服务器
在这里插入图片描述

创建个test表测试数据
create database test;
use test;
DROP TABLE IF EXISTS `test_table`;
CREATE TABLE `test_table` (
  `uuid` varchar(32) NOT NULL,
  `test_name` varchar(32) NOT NULL COMMENT '姓名',
  PRIMARY KEY (`uuid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO `test_table` VALUES ('aaaa', '测试数据');

在这里插入图片描述

再启动3307端口 关闭3306
docker run -d -p 3307:3306 --restart always --privileged=true --name mysql2 -e MYSQL_ROOT_PASSWORD=root -v /mysql/config/my.conf:/etc/my.cof -v=/mysql/data:/var/lib/mysql mysql:8.0.2

这里3307端口的mysql进程我取名mysql2
然后一定要关闭3306

docker stop mysql
连接3307 验证数据没有丢失

先关闭3306之后再连接
在这里插入图片描述

在这里插入图片描述

发现数据没有丢失

直接两个mysql进程删掉再重新起

有人会问:如果我的这个mysql进程删了 那数据还在吗 我们直接来测试:
删除两个ps
在这里插入图片描述

查看发现已经删除了:
在这里插入图片描述

然后重启mysql3306进程:

docker run -d -p 3306:3306 --restart always --privileged=true --name mysql -e MYSQL_ROOT_PASSWORD=root -v /mysql/config/my.conf:/etc/my.cof -v=/mysql/data:/var/lib/mysql mysql:8.0.2

在这里插入图片描述

然后本地连接3306验证数据:
在这里插入图片描述

数据没有丢失 恭喜你已经成功了

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值