如何将 MariaDB 运行 升级为 docker 容器
How to upgrade MariaDB running as a docker container
我在 Docker 容器中安装了 MariaDB 10.1 运行,我想升级到 10.2。我的数据保存在 /var/lib/mysql 映射到的卷中,my.cnf 未映射且未更改。最终得到 Maria 10.2 容器且我的数据完好无损的正确程序是什么?
我考虑的流程如下:
- 停止 10.1 容器
- 复制数据量
- 创建一个新的 10.3 容器,将数据目录映射到复制的卷
- 启动新容器
我担心的是第 3 步。在 'standard'(非 Docker)升级期间,升级过程可能不会以某种方式改变数据目录吗?如果是这样,升级期间应该对 /var/lib/mysql 目录进行的任何更改都不会对该卷进行,因为它位于 Docker.
外部
我的程序正确吗?我的担心有道理吗?
MariaDB 文档确实有 10.1 -> 10.2 documentation 的升级,值得一读。
虽然大部分内容都是围绕软件包升级,但也有一些关于可选 SET GLOBAL innodb_fast_shutdown=0
的注释,并以 mysql_upgrade 结尾。
A docker volume inspect 查看挂载点并复制 datadir 是明智的,特别是如果您没有最近的备份或有快速恢复业务需求(尽管如果是这种情况,您应使用从备份还原和就地升级过程来测试更高版本。
在关机前没有 SET GLOBAL innodb_fast_shutdown=0
的就地升级将导致 innodb 开始恢复并将重做日志应用到数据目录。这可能会做一些与以前不同的事情,这有很小的风险。
随着新容器的启动,您可以测试数据是否存在。准备好后,运行 mysql_upgrade
(我通常会 docker exec -i {container} mysql_upgrade
)。当我想到一种可靠的方法时,这有望实现自动化 (gh#350, MDEV-25670)。
正如 Monty 所说的“You should be able to trivially upgrade from ANY earlier MariaDB version to the latest one”(或任何中间的),所以不要觉得你必须从 10.1 -> 10.2 到最终 10.3。
我在 Docker 容器中安装了 MariaDB 10.1 运行,我想升级到 10.2。我的数据保存在 /var/lib/mysql 映射到的卷中,my.cnf 未映射且未更改。最终得到 Maria 10.2 容器且我的数据完好无损的正确程序是什么?
我考虑的流程如下:
- 停止 10.1 容器
- 复制数据量
- 创建一个新的 10.3 容器,将数据目录映射到复制的卷
- 启动新容器
我担心的是第 3 步。在 'standard'(非 Docker)升级期间,升级过程可能不会以某种方式改变数据目录吗?如果是这样,升级期间应该对 /var/lib/mysql 目录进行的任何更改都不会对该卷进行,因为它位于 Docker.
外部我的程序正确吗?我的担心有道理吗?
MariaDB 文档确实有 10.1 -> 10.2 documentation 的升级,值得一读。
虽然大部分内容都是围绕软件包升级,但也有一些关于可选 SET GLOBAL innodb_fast_shutdown=0
的注释,并以 mysql_upgrade 结尾。
A docker volume inspect 查看挂载点并复制 datadir 是明智的,特别是如果您没有最近的备份或有快速恢复业务需求(尽管如果是这种情况,您应使用从备份还原和就地升级过程来测试更高版本。
在关机前没有 SET GLOBAL innodb_fast_shutdown=0
的就地升级将导致 innodb 开始恢复并将重做日志应用到数据目录。这可能会做一些与以前不同的事情,这有很小的风险。
随着新容器的启动,您可以测试数据是否存在。准备好后,运行 mysql_upgrade
(我通常会 docker exec -i {container} mysql_upgrade
)。当我想到一种可靠的方法时,这有望实现自动化 (gh#350, MDEV-25670)。
正如 Monty 所说的“You should be able to trivially upgrade from ANY earlier MariaDB version to the latest one”(或任何中间的),所以不要觉得你必须从 10.1 -> 10.2 到最终 10.3。