博客
关于我
公司mysql docker容器挂了,数据丢失,老板要起诉我。。
阅读量:362 次
发布时间:2019-03-04

本文共 1779 字,大约阅读时间需要 5 分钟。

场景

市民赵铁柱在A公司担任开发工程师,某日负责维护的一个网站无法访问。经排查发现,问题出在docker的mysql容器挂了。赵铁柱不慌不忙,倒了杯咖啡,然后稳健地启动了mysql容器。然而,启动成功后测试访问,发现网站数据全没了。让我们为赵铁柱默哀三秒钟。

分析原因

赵铁柱的错误在于没有进行数据持久化。为了偷懒,他没有将mysql容器的数据挂载到宿主机上,导致数据丢失。

解决方案

解决这个问题,需要采取以下步骤:

结论

将数据从容器中挂载到宿主机上,这样即使容器停止或重新启动,数据也不会丢失。

创建配置文件

1. 创建配置文件存放位置和数据映射位置: ```bash mkdir -p /mysql/config /mysql/data ``` 2. 创建并编辑配置文件: ```bash vi /mysql/config/my.conf ``` 配置文件内容如下: ```bash [mysqld]user=mysqlcharacter-set-server=utf8default_authentication_plugin=mysql_native_password[client]default-character-set=utf8[mysql]default-character-set=utf8 ```

启动容器

1. 停止已运行的mysql容器: ```bash docker ps docker stop mysql57 ```2. 启动新的mysql容器: ```bash docker run -d -p 3306:3306 --restart always --privileged=true --name dream_mysql57 -e MYSQL_ROOT_PASSWORD=root -v /mysql/config/my.conf:/etc/my.cof -v=/mysql/data:/var/lib/mysql mysql:5.7 ``` 说明: - `-d`:后台运行容器 - `-p 3306:3306`:映射3306端口 - `--restart always`:开机启动 - `--privileged=true`:提升容器权限 - `--name dream_mysql57`:容器名称 - `-e MYSQL_ROOT_PASSWORD=root`:设置根密码 - `-v /mysql/config/my.conf:/etc/my.cof`:配置文件映射 - `-v=/mysql/data:/var/lib/mysql`:数据目录映射 - `mysql:5.7`:镜像名称和版本

测试连接

确认mysql服务已正常运行,访问数据库验证数据是否恢复。

验证数据持久化

为了确保数据安全,可以采取以下步骤: 1. 创建数据库,创建表,插入数据: ```sql 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; ``` 执行SQL脚本后,插入测试数据: ```sql INSERT INTO `test_table` VALUES ('aaaa', '测试数据'); ```2. 关闭当前mysql容器: ```bash docker stop dream_mysql57 ```3. 启动新的mysql容器: ```bash docker run -d -p 3307:3306 --restart always --privileged=true --name dream_mysql57_3307 -e MYSQL_ROOT_PASSWORD=root -v /mysql/config/my.conf:/etc/my.cof -v=/mysql/data:/var/lib/mysql mysql:5.7 ```4. 访问3307服务,确认数据仍在。

转载地址:http://qrbg.baihongyu.com/

你可能感兴趣的文章
QT样式表——url路径
查看>>
QT数据库(三):QSqlQuery使用
查看>>
QT教程5:消息框
查看>>
SpringBoot中集成阿里开源缓存访问框架JetCache实现声明式实例和方法缓存
查看>>
pom.xml中提示web.xml is missing and <failonmissingw>...
查看>>
Pomelo开发中Web客户端开发API简介
查看>>
QT教程2:QT5的体系构架
查看>>
PON架构(全光网络)
查看>>
PoolingHttpClientConnectionManager原理剖析
查看>>
QT教程1:ubuntu18.04安装QT5
查看>>
POP-一个点击带有放大还原的动画效果
查看>>
POP3 协议在计算机网络中的优缺点
查看>>
qt批量操作同类型控件
查看>>
Portaudio笔记-WASAPI
查看>>
position:fixed失效情况
查看>>
Qt开发笔记:QGLWidget、QOpenGLWidget详解及区别
查看>>
Position属性四个值:static、fixed、absolute和relative的区别和用法
查看>>
POSIX thread编程中关于临界区内条件变量的分析
查看>>
POSIX与程序可移植性
查看>>
posix多线程有感--自旋锁
查看>>