迁移到外部数据库
本文介绍了从一种类型的数据库迁移 TeamCity 数据所需的步骤。 有关从第一次启动 TeamCity 开始使用外部数据库,以及一般的外部数据库信息和特定数据库的配置步骤,请参阅 此文章。
最典型的迁移情况是,您使用默认的内部数据库评估了 TeamCity ,并需要切换到外部数据库,以便为您的 TeamCity 安装做好生产使用的准备。 当从一个外部数据库切换到另一个数据库时,也适用推荐的步骤。 您也可以按照它们在同类型的数据库服务器之间进行移动,但在这种情况下,数据库特定的数据传输通常更为可取。
有几种方式可以将数据迁移到新的数据库:
无数据迁移的切换
如果您想快速切换到外部数据库并且不想保留服务器上的现有数据,如用户和构建,请按照以下步骤操作。 切换后,服务器将以空数据库启动,但会保留存储在 TeamCity 数据目录下的所有设置(请参阅详细信息了解存储位置)。
创建并配置一个外部数据库以供 TeamCity 使用。
关闭 TeamCity 服务器。
创建备份副本用于服务器所使用的
<TeamCity 数据目录>
。清理
system
目录:您 必须 从system
目录的<TeamCity 数据目录>
中删除消息
和工件
目录;您 可以 删除旧的 HSQLDB 文件:buildserver.*
以移除不再需要的内部存储数据。启动 TeamCity 服务器。
全面迁移
这些步骤描述了在保留所有数据的情况下切换到另一个数据库。 这是由 TeamCity 迁移工具 - maintainDB
命令行实用程序完成的。
maintainDB.[cmd|sh]
shell / batch 脚本位于 <TeamCity 安装目录>/bin
目录中,用于迁移以及 备份 和 恢复 TeamCity 数据。 该实用工具仅在 TeamCity .tar.gz
和 . exe
分发版中可用。
TeamCity 支持 HSQLDB、MySQL、Oracle、PostgreSQL和Microsoft SQL Server;这些数据库之间都可以实现迁移。
迁移过程开始前,目标数据库必须为空(即不得包含任何表)。
将所有现有数据迁移到新的外部数据库:
1. 创建并配置一个外部数据库供 TeamCity 使用,并将数据库驱动安装到 TeamCity 中。 在此阶段不要修改任何 TeamCity 设置。
2. 关闭 TeamCity 服务器。
3. 使用相应的模板( <TeamCity 数据目录>/config/database.<数据库类型>.properties.dist
)为目标数据库创建一个具有自定义名称(例如, 数据库.<database_type>.属性
)的临时属性文件。 配置属性并将文件放置到任何临时目录中。 请不要修改原始的 数据库.<database_type>.属性
文件。
4. 运行 maintainDB
工具,使用 迁移
命令,并使用 -T
选项指定新创建的目标数据库属性文件的绝对路径:
如果您没有指向 TeamCity Data Directory 的 TEAMCITY_DATA_PATH
环境,请在命令调用中添加 -A
参数:
在成功完成数据库迁移后,临时文件将被复制到 <TeamCity Data Directory>/config/database.properties
文件,TeamCity 将使用该文件。 临时文件可以安全地删除。 如果您正在进行外部数据库之间的迁移,源数据库的原始 database.properties
文件将被通过 -T
选项指定的文件替换。 原始的 database.properties
文件将自动重命名为 database.properties.before.<timestamp>
。
5. 启动 TeamCity 服务器。 这必须与上次运行的 TeamCity 版本相同(TeamCity upgrade 必须作为一个单独的程序进行)。
在您确保迁移成功后,您 可以 删除旧的 HSQLDB 文件: buildserver.*
以移除不再需要的内部存储数据。
备份与恢复
故障排查
在执行迁移期间的扩展信息会被记录在
logs\teamcity-maintenance.log
文件中。 另外,logs\teamcity-maintenance-truncation.log
包含有关迁移过程中可能的数据截断的扩展信息。如果您遇到 "Out of memory" 错误,尝试增加
-Xmx512m
参数在maintainDB
脚本中的数字。 在 32 位平台上,最大值约为 1300 MB。
或者,通过独立模式运行 HSQLDB。java -Xmx256M -cp ..\webapps\ROOT\WEB-INF\lib\hsqldb.jar org.hsqldb.Server -database.0 <TeamCity Data Directory>\system\buildserver -dbname.0 buildserver然后运行迁移工具,将数据库作为源指向:
jdbc:hsqldb:hsql://localhost/buildserver sa''
如果您在运行工具时遇到 "输入行太长" 的错误,更改脚本以使用替代的类路径方法。
对于maintainDB.bat
,删除 "将所有 JAR 从 WEB-INF\lib 添加到类路径" 注释下方的行,并取消 "替代类路径:仅添加必要的 JAR" 注释下方行的注释。