docker mysql 是否合适_在docker容器中开数据库,是否合适?

如果是 docker 跑 MySQL 进程,数据则挂载到本地磁盘下,理论上一点问题都没有。你大可以通过 Systemd 或者 restart always 策略保证你的 mysql 实例高可用,但是不能保证宿主机挂了你的 mysql 依旧可用。

但是放到类似于 K8s 的环境之下,MySQL 就是就一个有状态的服务,就必须要考虑持久化的问题了。

持久化到本地磁盘固然是不行的,毕竟你的实例是可以飘的,说不定主机一宕机,下次 schedule 指不定会出现在哪个主机之上。

因此就要引入 分布式存储

而分布式存储系统最大的问题便是把计算机的两大瓶颈点引入到了你的服务之中,磁盘 IO 与网络 IO。

想要一个docker 运行 mysql 的完美方案,得从这个思路研究才行。

综上所述:

你想要 docker 运行数据库可以,但是要想清楚你要达到什么效果?

利用 docker restart always 的策略保证实例存活?

Systemd 管理MySQL 进程照样可以实现

利用 docker 快速创建新库,快速发布数据库服务?

对不起,写好脚本照样可以实现,且单用 docker 而不是用编排系统依旧显得鸡肋

不知道题主出发点是什么,我个人觉得仅仅是 Docker 本身的使用,而不借助别的工具一并使用,就根本没有解决实际的痛点。

不痛不痒,不如不用!

Docker 中,MySQL 容器的时区默认为 UTC 时区。如果您希望设置容器时区为本地时区,则可以通过以下步骤进行设置: 1. 创建一个新的 Dockerfile 文件,内容如下: ``` FROM mysql:latest RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone ``` 其中,/usr/share/zoneinfo/Asia/Shanghai 是您所在地区的时区,可以根据实际情况进行修改。 2. 在终端中执行以下命令,构建新的 Docker 镜像: ``` docker build -t mysql-tz . ``` 其中,mysql-tz 是您自定义的镜像名称。 3. 在终端中执行以下命令,启动 MySQL 容器并挂载数据卷: ``` docker run -d -p 3306:3306 --name mysql -v /path/to/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=password mysql-tz ``` 其中,/path/to/data 是您本地存储数据的路径,password 是您设置的 MySQL root 用户密码。 4. 进入 MySQL 容器,并修改 MySQL 时区设置: ``` docker exec -it mysql bash mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p mysql ``` 其中,mysql_tzinfo_to_sql 命令会将 /usr/share/zoneinfo 文件夹下的时区信息转换为 SQL 语句,然后通过管道符号将 SQL 语句传递给 MySQL 客户端进行执行。 5. 重启 MySQL 容器: ``` docker restart mysql ``` 6. 现在,您可以在 MySQL 中插入本地时间了。例如: ``` INSERT INTO mytable (timestamp) VALUES (NOW()); ``` 以上就是设置 DockerMySQL 容器时区的方法。希望对您有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值