• DM 版本升级
    • 升级到 v1.0.0-143-gcd753da
      • 版本信息
      • 主要变更
      • 升级操作示例
    • 升级到 v1.0.0-133-g2f9fe82
      • 版本信息
      • 主要变更
      • 升级操作示例

    DM 版本升级

    本文档主要介绍各不完全兼容的 DM (Data Migration) 版本间的升级操作步骤。

    假设依时间先后顺序存在 V-A、V-B、V-C 3 个互不兼容的版本,现在需要从 V-A 升级到 V-C。定义从 V-A 升级到 V-B 的操作为 Upgrade-A-B,从 V-B 升级到 V-C 的操作为 Upgrade-B-C。

    • 如果 Upgrade-A-B 与 Upgrade-B-C 之间存在交叠(如同一个配置项的不同变更),则推荐先执行 Upgrade-A-B 升级到 V-B,升级完成后再执行 Upgrade-B-C 升级到 V-C。
    • 如果 Upgrade-A-B 与 Upgrade-B-C 之间不存在交叠,则可将 Upgrade-A-B 与 Upgrade-B-C 的操作合并为 Upgrade-A-C,执行后直接从 V-A 升级到 V-C。

    注意:

    • 若无特殊说明,各版本的升级操作均为从前一个有升级指引的版本向当前版本升级。
    • 若无特殊说明,各升级操作示例均假定已经下载了对应版本的 DM 和 DM-Ansible 且 DM binary 存在于 DM-Ansible 的相应目录中(下载 DM binary 可以参考更新组件版本)。
    • 若无特殊说明,各升级操作示例均假定升级前已停止所有同步任务,升级完成后手动重新启动所有同步任务。
    • 以下版本升级指引逆序展示。

    升级到 v1.0.0-143-gcd753da

    版本信息

    1. Release Version: v1.0.0-143-gcd753da
    2. Git Commit Hash: cd753da958ea9a0d5686abc9f1988b61c9d36a89
    3. Git Branch: dm-master
    4. UTC Build Time: 2018-12-25 06:03:11
    5. Go Version: go version go1.11.2 linux/amd64

    主要变更

    在此版本前,DM-worker 使用两个端口向外提供不同的信息或服务:

    • dm_worker_port:默认 10081,提供与 DM-master 通信的 RPC 服务。
    • dm_worker_status_port:默认 10082,提供 metrics 和 status 等信息。

    从此版本开始,DM-worker 使用同一个端口(默认 8262)同时提供上述两类信息或服务。

    升级操作示例

    1. 变更 inventory.ini 配置信息。

      • 移除所有 dm_worker_status_port 配置项,根据需要变更 dm_worker_port 配置项。
      • 移除所有 dm_master_status_port 配置项,根据需要变更 dm_master_port 配置项。

        如将

        1. dm_worker1_1 ansible_host=172.16.10.72 server_id=101 deploy_dir=/data1/dm_worker dm_worker_port=10081 dm_worker_status_port=10082 mysql_host=172.16.10.81 mysql_user=root mysql_password='VjX8cEeTX+qcvZ3bPaO4h0C80pe/1aU=' mysql_port=3306

        变更为

        1. dm_worker1_1 ansible_host=172.16.10.72 server_id=101 deploy_dir=/data1/dm_worker dm_worker_port=8262 mysql_host=172.16.10.81 mysql_user=root mysql_password='VjX8cEeTX+qcvZ3bPaO4h0C80pe/1aU=' mysql_port=3306

        1. dm_master ansible_host=172.16.10.71 dm_master_port=12080 dm_master_status_port=12081

        变更为

        1. dm_master ansible_host=172.16.10.71 dm_master_port=8261
    2. 使用 DM-Ansible 滚动升级 DM、Prometheus 与 Grafana。

    升级到 v1.0.0-133-g2f9fe82

    版本信息

    1. Release Version: v1.0.0-133-g2f9fe82
    2. Git Commit Hash: 2f9fe827d668add6493b2a3da107e0a01b94c6d1
    3. Git Branch: dm-master
    4. UTC Build Time: 2018-12-19 04:58:46
    5. Go Version: go version go1.11.2 linux/amd64

    主要变更

    在此版本前,任务配置文件 (task.yaml) 中的 mysql-instances 包含以下信息:

    • config:上游 MySQL 的地址、用户名、密码等。
    • instance-id:标识一个上游 MySQL。

    从此版本开始,上述两项配置信息被移除,并增加了如下配置信息:

    • source_id:存在于 inventory.ini 中,用于标识一个上游 MySQL 实例或一个主从复制组。
    • source-id:存在于任务配置文件的 mysql-instances 中,其取值与 inventory.ini 中的 source_id 对应。

    注意:

    如果需要确保已有任务存储在下游数据库的断点信息能继续被使用,source_id/source-id 的值需要与对应 DM-worker 变更前的 instance-id 一致。

    升级操作示例

    1. 变更 inventory.ini 的配置信息。

      为所有 DM-worker 实例设置对应的 source_id

      如将

      1. dm-worker1 ansible_host=172.16.10.72 server_id=101 mysql_host=172.16.10.72 mysql_user=root mysql_password='VjX8cEeTX+qcvZ3bPaO4h0C80pe/1aU=' mysql_port=3306

      变更为

      1. dm-worker1 ansible_host=172.16.10.72 source_id="mysql-replica-01" server_id=101 mysql_host=172.16.10.72 mysql_user=root mysql_password='VjX8cEeTX+qcvZ3bPaO4h0C80pe/1aU=' mysql_port=3306
    2. 使用 DM-Ansible 滚动升级 DM。

    3. 变更任务配置文件 (task.yaml)。

      移除其中的 configinstance-id 配置项,增加 source-id 配置项(与 inventory.ini 中的 source_id 对应)。

      如将

      1. config:
      2. host: "192.168.199.118"
      3. port: 4306
      4. user: "root"
      5. password: "1234"
      6. instance-id: "instance118-4306" # 此值具有唯一性,当保存 checkpoint、配置和其他信息时,作为 ID 使用。

      变更为

      1. source-id: "instance118-4306" # 如需要重用之前任务的 checkpoint,需要与原 `instance-id` 取值一致。
    4. 使用变更后的任务配置重新启动任务。