跳到内容

从旧的 AWX 实例迁移数据

要从旧的 AWX 安装迁移数据,您必须通过密钥提供一些信息。

创建用于迁移的密钥

密钥

您可以在用于在版本 18 之前的版本中部署 AWX 的清单文件中找到旧的密钥。

apiVersion: v1
kind: Secret
metadata:
  name: <resourcename>-secret-key
  namespace: <target-namespace>
stringData:
  secret_key: <old-secret-key>
type: Opaque

注意

<resourcename> 必须与您正在创建的 AWX 对象的 name 相匹配。在下面的示例中,它是 awx

旧数据库凭据

密钥应格式化为如下所示

---
apiVersion: v1
kind: Secret
metadata:
  name: <resourcename>-old-postgres-configuration
  namespace: <target namespace>
stringData:
  host: <external ip or url resolvable by the cluster>
  port: "<external port, this usually defaults to 5432>"    # quotes are required
  database: <desired database name>
  username: <username to connect as>
  password: <password to connect with>
type: Opaque

注意

对于 host,集群可以解析的 URL 可能类似于 postgresql.<namespace>.svc.<cluster domain>,其中 <namespace> 用您要从其迁移数据的 AWX 部署的命名空间填充,而 <cluster domain> 用内部 Kubernetes 集群域填充(在大多数情况下,它是 cluster.local)。

如果您的 AWX 部署已经使用外部数据库服务器或其数据库未由 AWX 部署管理,您可以改为创建与上述相同的密钥,但从 name 中省略 -old-。在下一节中,通过 postgres_configuration_secret 传递它,从密钥中省略 _old_,并确保值与密钥的名称匹配。这将使 AWX 拾取现有数据库并应用任何待处理的迁移。强烈建议您事先备份您的数据库。

旧部署的 postgresql Pod 用于将数据流式传输到新的 postgresql Pod。如果您的 postgresql Pod 有自定义标签,您可以通过 postgres_label_selector 变量传递它,以确保可以找到 postgresql Pod。

部署 AWX

应用 AWX 对象时,必须为上面创建的数据库密钥指定名称

apiVersion: awx.ansible.com/v1beta1
kind: AWX
metadata:
  name: awx
spec:
  old_postgres_configuration_secret: <resourcename>-old-postgres-configuration
  secret_key_secret: <resourcename>-secret-key
  ...

在迁移期间排除 postgreSQL 表(可选)

使用 AWX.spec 下的 pg_dump_suffix 参数自定义在迁移期间将执行的 pg_dump 命令。此变量将您的提供 pg_dump 参数附加到“标准”命令的末尾。例如,要排除来自 main_jobeventmain_job 的数据以减小备份的大小,请使用

pg_dump_suffix: "--exclude-table-data 'main_jobevent*' --exclude-table-data 'main_job'"

重要说明

如果您打算将所有上述内容放在一个文件中,请确保用三个破折号将每个块分隔开,如下所示

---
# Secret key

---
# Database creds

---
# AWX Config

否则会导致无法运行的设置。