升级 Arangodb - 如何在 运行 in Docker 时添加命令行标志?
Upgrade Arangodb - how to add a command line flag when running in Docker?
大约 2 年前,我们在 google 计算引擎上部署了一个 arangodb
docker 实例。
它一直运行良好,直到现在才重新启动。 arangodb
已升级,但我无法升级数据库。这是计算引擎日志:
**A 2021-06-14T13:56:39.353155517Z 2021-06-14T13:56:39Z [1] ERROR [3bc7f] {startup} Database directory version (30503) is lower than current version (30711).
A 2021-06-14T13:56:39.353253420Z 2021-06-14T13:56:39Z [1] ERROR [ebca0] {startup} ----------------------------------------------------------------------
A 2021-06-14T13:56:39.353343821Z 2021-06-14T13:56:39Z [1] ERROR [24e3c] {startup} It seems like you have upgraded the ArangoDB binary.
A 2021-06-14T13:56:39.353429097Z 2021-06-14T13:56:39Z [1] ERROR [8bcec] {startup} If this is what you wanted to do, please restart with the
A 2021-06-14T13:56:39.353503511Z 2021-06-14T13:56:39Z [1] ERROR [b0360] {startup} --database.auto-upgrade true
A 2021-06-14T13:56:39.353588233Z 2021-06-14T13:56:39Z [1] ERROR [13414] {startup} option to upgrade the data in the database directory.
A 2021-06-14T13:56:39.353662855Z 2021-06-14T13:56:39Z [1] ERROR [24bd1] {startup} ----------------------------------------------------------------------'
A 2021-06-14T13:56:39.353744994Z 2021-06-14T13:56:39Z [1] ERROR [1c156] Database 'DATMNG' needs upgrade. Please start the server with --database.auto-upgrade
A 2021-06-14T13:56:39.353875354Z 2021-06-14T13:56:39Z [1] FATAL [2eb08] Database 'DATMNG' upgrade failed (bad parameter). Please inspect the logs from the upgrade procedure and try starting the server again.
A 2021-06-14T13:56:39.503654Z time="2021-06-14T13:56:39.502998769Z" level=info msg="ignoring event" module=libcontainerd namespace=moby topic=/tasks/delete type="*events.TaskDelete"
A 2021-06-14T13:56:39.504312Z 2021-06-14T13:56:39.503105201Z container die 6ae973a8db5b45cf5057d3f26f9610aa8482c9132d5ff992b06f604a8ac72c22 (exitCode=1, image=aran*godb/arangodb, name=klt-arangodb-votd)*
我无法在计算引擎的任何地方添加 --database.auto-upgrade true
(我在计算引擎的环境变量部分尝试过,但似乎没有成功)。
我可以登录安装了 docker 容器的微服务器,但是容器在启动后几乎立即停止工作,所以我无法 shell 提示进行升级手动。
我可以启动容器:
docker run -ti -u root --entrypoint=sh image_id_or_name -s
但是这里没有保留配置或更改。有什么见解或建议吗?
首先,你需要知道,计算引擎创建的实例映射了哪些卷或路径,它在Advanced container options
下
在终端中您可以使用 https://github.com/nexdrew/rekcod、运行 以下命令,将 <container>
更改为初始实例 id/name
docker run --rm -i -v /var/run/docker.sock:/var/run/docker.sock nexdrew/rekcod <container>
在输出中你应该得到类似
的东西
docker run --name arangodb --runtime runc -v arangodb--3.7:/var/lib/arangodb3 -v arangodb-apps--3.7:/var/lib/arangodb3-apps -p 8529:8529/tcp --restart no -h 0e989039f8c8 --expose 8529/tcp -e 'ARANGO_NO_AUTH=1' -e 'PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin' -e 'GLIBCXX_FORCE_NEW=1' -d --entrypoint "/entrypoint.sh" arangodb/arangodb:3.7.5 'arangod'
-v
参数是您在 运行 备份和升级时需要添加的参数
在升级之前使用以下命令创建备份,如果您有默认配置,则需要备份/var/lib/arangodb3
,根据上一步的输出将<volume>
更改为volume/path
docker run --rm -v /tmp:/backup -v <volume>:/var/lib/arangodb3 busybox tar -zcvf /backup/arangodb3.tar.gz /var/lib/arangodb3
将在您的主机上创建数据备份 /tmp/arangodb3.tar.gz
,保留它。
如果你需要恢复,你可以运行
docker run --rm -v <volume>:/var/lib/arangodb3 -v /tmp:/backup busybox tar -xzvf /backup/arangodb3.tar.gz var/lib/arangodb3
警告:根据 General Upgrade Information / Upgrade Paths
您需要分多个步骤升级您的 3.5.3
- 先到
3.5.7
- 秒至
3.6.13
- 最后到
3.7.11
按照命令升级运行,根据上一步的输出将<volume>
更改为volume/path,将<arango-image>
更改为目标arangodb映像版本
docker run -v <volume>:/var/lib/arangodb3 <arango-image> arangod --database.auto-upgrade=true
然后在计算引擎中启动arangodb
大约 2 年前,我们在 google 计算引擎上部署了一个 arangodb
docker 实例。
它一直运行良好,直到现在才重新启动。 arangodb
已升级,但我无法升级数据库。这是计算引擎日志:
**A 2021-06-14T13:56:39.353155517Z 2021-06-14T13:56:39Z [1] ERROR [3bc7f] {startup} Database directory version (30503) is lower than current version (30711).
A 2021-06-14T13:56:39.353253420Z 2021-06-14T13:56:39Z [1] ERROR [ebca0] {startup} ----------------------------------------------------------------------
A 2021-06-14T13:56:39.353343821Z 2021-06-14T13:56:39Z [1] ERROR [24e3c] {startup} It seems like you have upgraded the ArangoDB binary.
A 2021-06-14T13:56:39.353429097Z 2021-06-14T13:56:39Z [1] ERROR [8bcec] {startup} If this is what you wanted to do, please restart with the
A 2021-06-14T13:56:39.353503511Z 2021-06-14T13:56:39Z [1] ERROR [b0360] {startup} --database.auto-upgrade true
A 2021-06-14T13:56:39.353588233Z 2021-06-14T13:56:39Z [1] ERROR [13414] {startup} option to upgrade the data in the database directory.
A 2021-06-14T13:56:39.353662855Z 2021-06-14T13:56:39Z [1] ERROR [24bd1] {startup} ----------------------------------------------------------------------'
A 2021-06-14T13:56:39.353744994Z 2021-06-14T13:56:39Z [1] ERROR [1c156] Database 'DATMNG' needs upgrade. Please start the server with --database.auto-upgrade
A 2021-06-14T13:56:39.353875354Z 2021-06-14T13:56:39Z [1] FATAL [2eb08] Database 'DATMNG' upgrade failed (bad parameter). Please inspect the logs from the upgrade procedure and try starting the server again.
A 2021-06-14T13:56:39.503654Z time="2021-06-14T13:56:39.502998769Z" level=info msg="ignoring event" module=libcontainerd namespace=moby topic=/tasks/delete type="*events.TaskDelete"
A 2021-06-14T13:56:39.504312Z 2021-06-14T13:56:39.503105201Z container die 6ae973a8db5b45cf5057d3f26f9610aa8482c9132d5ff992b06f604a8ac72c22 (exitCode=1, image=aran*godb/arangodb, name=klt-arangodb-votd)*
我无法在计算引擎的任何地方添加 --database.auto-upgrade true
(我在计算引擎的环境变量部分尝试过,但似乎没有成功)。
我可以登录安装了 docker 容器的微服务器,但是容器在启动后几乎立即停止工作,所以我无法 shell 提示进行升级手动。
我可以启动容器:
docker run -ti -u root --entrypoint=sh image_id_or_name -s
但是这里没有保留配置或更改。有什么见解或建议吗?
首先,你需要知道,计算引擎创建的实例映射了哪些卷或路径,它在Advanced container options
在终端中您可以使用 https://github.com/nexdrew/rekcod、运行 以下命令,将 <container>
更改为初始实例 id/name
docker run --rm -i -v /var/run/docker.sock:/var/run/docker.sock nexdrew/rekcod <container>
在输出中你应该得到类似
的东西docker run --name arangodb --runtime runc -v arangodb--3.7:/var/lib/arangodb3 -v arangodb-apps--3.7:/var/lib/arangodb3-apps -p 8529:8529/tcp --restart no -h 0e989039f8c8 --expose 8529/tcp -e 'ARANGO_NO_AUTH=1' -e 'PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin' -e 'GLIBCXX_FORCE_NEW=1' -d --entrypoint "/entrypoint.sh" arangodb/arangodb:3.7.5 'arangod'
-v
参数是您在 运行 备份和升级时需要添加的参数
在升级之前使用以下命令创建备份,如果您有默认配置,则需要备份/var/lib/arangodb3
,根据上一步的输出将<volume>
更改为volume/path
docker run --rm -v /tmp:/backup -v <volume>:/var/lib/arangodb3 busybox tar -zcvf /backup/arangodb3.tar.gz /var/lib/arangodb3
将在您的主机上创建数据备份 /tmp/arangodb3.tar.gz
,保留它。
如果你需要恢复,你可以运行
docker run --rm -v <volume>:/var/lib/arangodb3 -v /tmp:/backup busybox tar -xzvf /backup/arangodb3.tar.gz var/lib/arangodb3
警告:根据 General Upgrade Information / Upgrade Paths
您需要分多个步骤升级您的 3.5.3
- 先到
3.5.7
- 秒至
3.6.13
- 最后到
3.7.11
按照命令升级运行,根据上一步的输出将<volume>
更改为volume/path,将<arango-image>
更改为目标arangodb映像版本
docker run -v <volume>:/var/lib/arangodb3 <arango-image> arangod --database.auto-upgrade=true
然后在计算引擎中启动arangodb