Docker MySQL数据持久化

为了防止容器被误删或者容器故障不能进入,需要对Docker MySQL数据做持久化处理,即使用数据卷挂载的方式将mysql的数据(映射数据目录)持久化到宿主机。同时,默认情况下数据库的数据库文件和日志文件都会存放于容器的AUFS文件层,不仅不使得容器变得越来越臃肿,不便于迁移、备份等管理,而且数据库的性能也会受到影响。因此建议挂载到宿主机的目录到容器内。

    相比于正常的run容器,多了 -v /home/mysql/data:/var/lib/mysql  ,即是将容器数据目录/var/lib/mysql 映射到宿主机/home/mysql/data  下。

    docker run -itd --name mariadb-test -p 3333:3306  -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 mariadb

    进入容器后笔者新建了一个数据库docker_test,返回宿主机后在/home/mysql/data 下可以找到新建的数据库,而且mariadb数据库自带的数据库也存在,那么数据目录映射成功了。

 当然,容器内/var/lib/mysql 也是存在数据目录的。docker_test文件夹也是最新的。

 

    再次重启容器,docker start mariadb-test 数据目录会自动挂载,那么数据就会持久化下来。同样的,数据库的配置文件my.cnf或者50-server.cnf也可以相同方法挂在宿主机文件。

    笔者停止容器,删除容器后,数据是否依然存在呢?答案是肯定的!而且宿主机数据目录有写保护,是需要root权限的。

 

    总结:将指定的宿主机目录挂在到MySQL默认数据存储路径 /var/lib/mysql中即可完成数据持久化。可以将此目录以相同方式挂载到其他容器中,但被挂载的目录只能被一个MySQL容器使用,不能多个MySQL容器同时挂载。


作者:刘小白DOER
链接:https://www.jianshu.com/p/351b71c3cd5a
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值