博客
关于我
公司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--基本代码规范
查看>>
Python--抽象类接口类
查看>>
PYTHON--欧拉习题二
查看>>
python--高级应用总结
查看>>
python-520表白代码,我看谁说程序员不懂浪漫,送你几套表白代码,一步到位
查看>>
Python-Asyncio TypeError:无法在‘;等待‘;表达式中使用对象DICT
查看>>
Python-AttributeError:‘;dict&39;对象没有属性‘;序列‘;
查看>>
Python-ldap:是否可以在不显式写入密码的情况下进行绑定?
查看>>
python出现 unknown encoding: idna 的处理方法
查看>>
Python出现 RuntimeError: dictionary changed size during iteration 的解决方法
查看>>
Python-numpy(2)数组的操作
查看>>
Python-Numpy的tile函数用法
查看>>
python-open函数
查看>>
Python-Pandas-将特定函数应用于给定级别-多索引数据框架
查看>>
python-queue队列通信
查看>>
python-ros No module named PyKDL
查看>>
python-social-auth 是否需要会话
查看>>
Python再获年度编程语言,微软或成最大赢家
查看>>
python-week5
查看>>
Python写表情包搜索工具(非常详细)零基础入门到精通,收藏这一篇就够了
查看>>