博客
关于我
公司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/

你可能感兴趣的文章
python+locust电商全流程性能测试
查看>>
Python函数运行的可执行文件的终端输出如何以一般方式静音?
查看>>
Python+Pytest+Allure+Git+Jenkins接口自动化框架
查看>>
python+pytest接口自动化 —— 参数关联
查看>>
python+pytest接口自动化 —— 参数关联
查看>>
Python+pytest接口自动化 —— 接口测试基础
查看>>
python+pytest接口自动化 —— 自动化用例编写思路 (使用pytest编写一个测试脚本)
查看>>
Python+pytest接口自动化之cookie绕过登录(保持登录状态)
查看>>
python+pytest接口自动化:接口测试
查看>>
Python+requests+unittest执行接口自动化测试详情
查看>>
Python+requests+unittest执行接口自动化测试详情
查看>>
python+requests+unittest执行自动化接口测试!
查看>>
Python+Requests编码识别Bug
查看>>
python函数编写_[零基础学python]传说中的函数编写条规
查看>>
Python+selenium —— UI自动化之鼠标操作
查看>>
python函数注释,参数后面加冒号:,函数后面的箭头→是什么?
查看>>
Python+Selenium+Threading进行兼容性测试
查看>>
Python+selenium+unittest的GUI自动化框架实现
查看>>
python函数拟合不规则曲线_Python计算&绘图——曲线拟合问题(转)
查看>>
python函数定义的基本格式_零基础学python-2.19 定义函数、调用函数与默认参数
查看>>