2021-08-31

docker内的mysql容器的数据持久化

为什么需要数据持久化

容器只是一个状态,启动后的mysql 容器作为一个运行的状态是没有对数据进行持久化的,这也导致了在容器停止或者删除后,mysql内的数据消失。以此类推,其余需要进行数据存储的服务,在删除容器后,数据均不会保存。(但是部分服务由于其服务内容的特殊性,可能会有其余方式保存数据:例如网络服务通过后端接口存储数据)

启动容器

mysql容器建议统一使用 docker-compose 启动,便于管理参数,多场景开发时,不用敲复杂的命令

version: "2" #版本号,常用2和3
services:
 nginx: #服务名,在网络请求时(例如apache server),可以当作hosts使用
   container_name: fastapi-mysql #启动时的容器名称
   image: mysql:5.7.20 #启动容器需要的基础镜像,本地没有会从docker源pull
   volumes: #挂载卷,用以持久化数据或者对源镜像新增内容或功能
     - ./config/my.cnf:/etc/my.cnf #数据库配置,可以在my.cnf自定义配置项
     - ./db_data:/var/lib/mysql #mysql的数据都存储在/var/lib/mysql中,将这个目录进行外部挂载,以达到数据持久化的目的
     - ./init:/docker-entrypoint-initdb.d/ #初始化数据库,例如创建一个user用户,创建一个database等
   ports:
     - "3300:3306"
   environment: #环境变量,在docker mysql官方镜像中有写,必须最少指定root密码
     - MYSQL_ROOT_PASSWORD=highsai123
     - MYSQL_DATABASE=investment
   restart: always

将以上代码保存为” docker-compose.yml “,在对应目录下执行:

docker-compose up -d

容器正确启动后,对mysql 容器的数据持久化就已经完成了,但是数据持久化不等于数据备份,删除mysql数据后,本地数据也会消失。所以还需要做好备份工作

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值