暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

TiCDC迁移-TiDB到MySQL测试

雷雷DBA 2022-07-24
437

     TiCDC迁移-TiDB到MySQL测试

                                  --2022-07-24 春雷

1、前言

因最近有TiDB回迁MySQL的业务需求,需要测试TiDB 到MySQL的迁移过程,本次利用dumpling导出+TiCDC进行初始数据+实时同步迁移。


2、信息

TiDB集群版本:5.2.2

来源TiDB集群:666-1

目标MySQL集群:888-1

导出工具:dumpling

导入工具:执行SQL文件

实时同步:TiCDC

MySQL主实例IP:10.5.5.5

TiDB中控机:10.4.4.4


3、部署TiCDC

集群666-1


【生成TiCDC扩容配置】:

    vim add.yml
    cdc_servers:
    - host: 10.1.1.1
    port: 777
    deploy_dir: /opt/tidb666/deploy/cdc-777
    data_dir: /opt/tidb666/data/cdc-777
    log_dir: /opt/tidb666/log/cdc-777
    - host: 10.1.1.2
    port: 777
    deploy_dir: /opt/tidb666/deploy/cdc-777
    data_dir: /opt/tidb666/data/cdc-777
    log_dir: /opt/tidb666/log/cdc-777
    - host: 10.1.1.3
    port: 777
    deploy_dir: /opt/tidb666/deploy/cdc-777
    data_dir: /opt/tidb666/data/cdc-777
    log_dir: /opt/tidb666/log/cdc-777
    复制


    【执行部署】:

    tiup cluster scale-out 666_TEST add.yml
    复制


    【查看拓扑】:

    qtidb -c 666-1


    4、导出数据

      cd tidb-toolkit-v5.2.2-linux-amd64/bin
      ./dumpling -udba -pxxx -h10.x.x.x -P666 --status-addr 999 -F 64MiB -t 2 -o 666_dump -B dba_test >> 666_dump_log
      复制


      【查看备份的文件】:

        [tidb() bin]$ ll 666_dump/
        total 24
        -rw-rw-r-- 1 tidb tidb 146 Jul 24 11:34 metadata
        -rw-rw-r-- 1 tidb tidb 109 Jul 24 11:34 dba_test-schema-create.sql
        -rw-rw-r-- 1 tidb tidb 112 Jul 24 11:34 dba_test.test.000000000.sql
        -rw-rw-r-- 1 tidb tidb 66 Jul 24 11:34 dba_test.test2.000000000.sql
        -rw-rw-r-- 1 tidb tidb 266 Jul 24 11:34 dba_test.test2-schema.sql
        -rw-rw-r-- 1 tidb tidb 265 Jul 24 11:34 dba_test.test-schema.sql
        复制

        复制


        【查看备份的点位】:


          cat metadata 
          Started dump at: 2022-07-24 11:34:31
          SHOW MASTER STATUS:
          Log: tidb-binlog
          Pos: 434800865229668357
          GTID:


          Finished dump at: 2022-07-24 11:34:31
          复制

          复制



          【TiDB666 模拟新写入数据】:

            (dba:666)@[(none)]>use dba_test
            Database changed
            (dba:666)@[dba_test]>show tables;
            +------------------------------+
            | Tables_in_dba_test |
            +------------------------------+
            | test |
            | test2 |
            +------------------------------+
            2 rows in set (0.00 sec)


            (dba:666)@[dba_test]>select * from test;
            +----+------+
            | id | name |
            +----+------+
            |  1  | aa   |
            | 33 | ccc |
            | 44 | ddd  |
            | 55 | eee |
            | 66 | ff   |
            +----+------+
            5 rows in set (0.00 sec)


            (dba:666)@[dba_test]>insert into test values (77,'gg');
            Query OK, 1 row affected (0.01 sec)


            (dba:666)@[dba_test]>insert into test values (88,'re');
            Query OK, 1 row affected (0.00 sec)


            (dba:666)@[dba_test]>select * from test;
            +----+------+
            | id | name |
            +----+------+
            |  1 | aa   |
            | 33 | ccc |
            | 44 | ddd  |
            | 55 | eee |
            | 66 | ff   |
            | 77 | gg |
            | 88 | re   |
            +----+------+
            7 rows in set (0.00 sec)
            复制

            复制


            5、MySQL导入数据

            5.1、拷贝导出的备份到MySQL主实例的机器

              scp -r 666_dump 10.5.5.5:/data/
              复制



              5.2、执行导入

                ssh 主实例机器
                登录mysql
                (root@(none))>show databases;
                +--------------------+
                | Database |
                +--------------------+
                | information_schema |
                | mysql |
                | sys |
                | performance_schema |
                +--------------------+
                9 rows in set (0.00 sec)


                (root@(none))>source data/666_dump/dba_test-schema-create.sql
                Query OK, 0 rows affected (0.00 sec)
                Query OK, 1 row affected (0.00 sec)


                (root@(none))>show databases;
                +--------------------+
                | Database |
                +--------------------+
                | information_schema |
                | mysql |
                | performance_schema |
                | sys |
                | dba_test           |
                +--------------------+
                10 rows in set (0.00 sec)


                (root@(none))>use dba_test
                Database changed
                (root@dba_test)>source data/666_dump/dba_test.test2-schema.sql
                Query OK, 0 rows affected (0.00 sec)
                Query OK, 0 rows affected (0.00 sec)


                (root@dba_test)>source data/666_dump/dba_test.test-schema.sql
                Query OK, 0 rows affected (0.00 sec)
                Query OK, 0 rows affected (0.00 sec)


                (root@dba_test)>show tables;
                +------------------------------+
                | Tables_in_dba_test |
                +------------------------------+
                | test |
                | test2 |
                +------------------------------+
                2 rows in set (0.00 sec)


                (root@dba_test)>select * from test;
                Empty set (0.00 sec)


                (root@dba_test)>select * from test2;
                Empty set (0.00 sec)


                (root@dba_test)>source data/666_dump/dba_test.test.000000000.sql
                Query OK, 0 rows affected (0.00 sec)
                Query OK, 5 rows affected (0.00 sec)
                Records: 5 Duplicates: 0 Warnings: 0


                (root@dba_test)>source data/666_dump/dba_test.test2.000000000.sql
                Query OK, 0 rows affected (0.00 sec)
                Query OK, 1 row affected (0.00 sec)


                (root@dba_test)>select * from test;
                +----+------+
                | id | name |
                +----+------+
                |  1 | aa   |
                | 33 | ccc |
                | 44 | ddd  |
                | 55 | eee |
                | 66 | ff   |
                +----+------+
                5 rows in set (0.00 sec)


                (root@dba_test)>select * from test2;
                +----+------+
                | id | name |
                +----+------+
                |  2 | bb   |
                +----+------+
                1 row in set (0.00 sec)
                复制


                6、实时同步

                6.1、查看TiCDC

                  ssh 10.4.4.4
                  [root()@name-2-2 ~]# su - tidb
                  Last login: Sun Jul 24 11:28:38 CST 2022 on pts/0
                  [tidb()@name-2-2 ~]$ tiup ctl:v5.2.2 cdc capture list --pd=http://10.3.3.3:678
                  Starting component `ctl`: /home/tidb/.tiup/components/ctl/v5.2.2/ctl cdc capture list --pd=http://10.3.3.3:678
                  [
                  {
                  "id": "42492be0-dd2b-49da-9562-86ba5feff288",
                  "is-owner": false,
                      "address""10.1.1.1:567"
                  },
                  {
                  "id": "5543f93e-e0c8-4e91-a468-88362454b958",
                  "is-owner": false,
                      "address""10.1.1.2:567"
                  },
                  {
                  "id": "6688a5c7-0779-487e-86f6-46b068743652",
                  "is-owner": true,
                      "address""10.1.1.3:567"
                  }
                  ]
                  复制

                  复制


                  6.2、创建同步任务:

                  【配置文件】:

                    [tidb()@name-2-2 666_ticdc]$ cd data/tidb/666_ticdc
                    [tidb()@name-2-2 666_ticdc]$ cat 666_888_ticdc_config.toml
                    case-sensitive = true
                    enable-old-value = true
                    [filter]
                    rules = ['dba_test.*']


                    [mounter]
                    worker-num = 8


                    【创建同步任务】:

                    复制
                      [tidb()@name-2-2 666_ticdc]$ tiup ctl:v5.2.2 cdc changefeed create --pd=http://10.3.3.3:678 --sink-uri="mysql://dba:xxx@10.5.5.5:888/?worker-count=16&max-txn-row=5000&time-zone=SYSTEM" --changefeed-id="666-888-20220724-task" --sort-engine="unified" --start-ts=434800865229668357 --config 666_888_ticdc_config.toml
                      Starting component `ctl`: home/tidb/.tiup/components/ctl/v5.2.2/ctl cdc changefeed create --pd=http://10.3.3.3:678 --sink-uri=mysql://dba:xxx@10.5.5.5:888/?worker-count=16&max-txn-row=5000&time-zone=SYSTEM --changefeed-id=666-888-20220724-task --sort-engine=unified --start-ts=434800865229668357 --config 666_888_ticdc_config.toml
                      Create changefeed successfully!
                      ID: 666-888-20220724-task
                      Info: {"sink-uri":"mysql://dba:xxx@10.5.5.5:888/?worker-count=16\u0026max-txn-row=5000\u0026time-zone=SYSTEM","opts":{"_changefeed_id":"cli-verify"},"create-time":"2022-07-24T12:20:45.606052447+08:00","start-ts":434800865229668357,"target-ts":0,"admin-job-type":0,"sort-engine":"unified","sort-dir":"","config":{"case-sensitive":true,"enable-old-value":true,"force-replicate":false,"check-gc-safe-point":true,"filter":{"rules":["dba_test.*"],"ignore-txn-start-ts":null},"mounter":{"worker-num":8},"sink":{"dispatchers":null,"protocol":"default"},"cyclic-replication":{"enable":false,"replica-id":0,"filter-replica-ids":null,"id-buckets":0,"sync-ddl":false},"scheduler":{"type":"table-number","polling-time":-1}},"state":"normal","history":null,"error":null,"sync-point-enabled":false,"sync-point-interval":600000000000,"creator-version":"v5.2.2"}
                      复制

                      【查看所有任务】:

                        tiup ctl:v5.2.2 cdc changefeed list --pd=http://10.3.3.3:678 
                        [tidb()@name-2-2 666_ticdc]$ tiup ctl:v5.2.2 cdc changefeed list --pd=http://10.3.3.3:678
                        Starting component `ctl`: /home/tidb/.tiup/components/ctl/v5.2.2/ctl cdc changefeed list --pd=http://10.3.3.3:678
                        [
                        {
                        "id": "666-888-20220724-task",
                        "summary": {
                        "state": "normal",
                        "tso": 434801605865111553,
                        "checkpoint": "2022-07-24 12:21:36.983",
                        "error": null
                        }
                        }
                        ]
                        复制

                        复制


                        【查看指定的任务】:


                          [tidb()@name-2-2 666_ticdc]$ tiup ctl:v5.2.2 cdc changefeed query -s --pd=http://10.3.3.3:678 --changefeed-id=666-888-20220724-task
                          Starting component `ctl`: /home/tidb/.tiup/components/ctl/v5.2.2/ctl cdc changefeed query -s --pd=http://10.3.3.3:678 --changefeed-id=666-888-20220724-task
                          {
                          "state": "normal",
                          "tso": 434801616101834753,
                          "checkpoint": "2022-07-24 12:22:16.033",
                          "error": null
                          }
                          复制

                          复制


                          【查看任务详细信息】:

                            [tidb()@name-2-2 666_ticdc]$ tiup ctl:v5.2.2 cdc changefeed query --pd=http://10.3.3.3:678 --changefeed-id=666-888-20220724-task
                            Starting component `ctl`: home/tidb/.tiup/components/ctl/v5.2.2/ctl cdc changefeed query --pd=http://10.3.3.3:678 --changefeed-id=666-888-20220724-task
                            {
                            "info": {
                            "sink-uri": "mysql://dba:xxx@10.5.5.5:888/?worker-count=16\u0026max-txn-row=5000\u0026time-zone=SYSTEM",
                            "opts": {
                            "_changefeed_id": "cli-verify"
                            },
                            "create-time": "2022-07-24T12:20:45.606052447+08:00",
                            "start-ts": 434800865229668357,
                            "target-ts": 0,
                            "admin-job-type": 0,
                            "sort-engine": "unified",
                            "sort-dir": "",
                            "config": {
                            "case-sensitive": true,
                            "enable-old-value": true,
                            "force-replicate": false,
                            "check-gc-safe-point": true,
                            "filter": {
                            "rules": [
                            "dba_test.*"
                            ],
                            "ignore-txn-start-ts": null
                            },
                            "mounter": {
                            "worker-num": 8
                            },
                            "sink": {
                            "dispatchers": null,
                            "protocol": "default"
                            },
                            "cyclic-replication": {
                            "enable": false,
                            "replica-id": 0,
                            "filter-replica-ids": null,
                            "id-buckets": 0,
                            "sync-ddl": false
                            },
                            "scheduler": {
                            "type": "table-number",
                            "polling-time": -1
                            }
                            },
                            "state": "normal",
                            "history": null,
                            "error": null,
                            "sync-point-enabled": false,
                            "sync-point-interval": 600000000000,
                            "creator-version": "v5.2.2"
                            },
                            "status": {
                            "resolved-ts": 434801631581437953,
                            "checkpoint-ts": 434801631581437953,
                            "admin-job-type": 0
                            },
                            "count": 0,
                            "task-status": [
                            {
                            "capture-id": "42492be0-dd2b-49da-9562-86ba5feff288",
                            "status": {
                            "tables": null,
                            "operation": null,
                            "admin-job-type": 0
                            }
                            },
                            {
                            "capture-id": "5543f93e-e0c8-4e91-a468-88362454b958",
                            "status": {
                            "tables": {
                            "878": {
                            "start-ts": 434800865229668357,
                            "mark-table-id": 0
                            }
                            },
                            "operation": {},
                            "admin-job-type": 0
                            }
                            },
                            {
                            "capture-id": "6688a5c7-0779-487e-86f6-46b068743652",
                            "status": {
                            "tables": {
                            "880": {
                            "start-ts": 434800865229668357,
                            "mark-table-id": 0
                            }
                            },
                            "operation": {},
                            "admin-job-type": 0
                            }
                            }
                            ]
                            }


                            复制


                            6.3、MySQL校验同步情况

                            【查看MySQL数据】:

                              (root@dba_test)>select * from test;
                              +----+------+
                              | id | name |
                              +----+------+
                              |  1 | aa   |
                              | 33 | ccc |
                              | 44 | ddd  |
                              | 55 | eee |
                              | 66 | ff   |
                              | 77 | gg |
                              | 88 | re   |
                              +----+------+
                              7 rows in set (0.00 sec)
                              复制

                              复制


                              【再次模拟写入】:

                                【TiDB666-1】:写入数据
                                (dba:666)@[dba_test]>insert into test values (99,'we');
                                Query OK, 1 row affected (0.00 sec)


                                (dba:666)@[dba_test]>select * from test;
                                +----+------+
                                | id | name |
                                +----+------+
                                |  1 | aa   |
                                | 33 | ccc |
                                | 44 | ddd  |
                                | 55 | eee |
                                | 66 | ff   |
                                | 77 | gg |
                                | 88 | re   |
                                | 99 | we |
                                +----+------+
                                8 rows in set (0.00 sec)


                                【MySQL888-1】:查看数据
                                (root@dba_test)>select * from test;
                                +----+------+
                                | id | name |
                                +----+------+
                                | 1 | aa |
                                | 33 | ccc  |
                                | 44 | ddd |
                                | 55 | eee  |
                                | 66 | ff |
                                | 77 | gg   |
                                | 88 | re |
                                | 99 | we   |
                                +----+------+
                                8 rows in set (0.00 sec)


                                综上:同步正常


                                复制


                                复制
                                  【TiDB666-1】:dba_test2 库写入数据
                                  (dba:666)@[dba_test]>use dba_test2
                                  Database changed
                                  (dba:666)@[dba_test2]>show tables;
                                  +-------------------------+
                                  | Tables_in_dba_test2 |
                                  +-------------------------+
                                  | tb_test |
                                  +-------------------------+
                                  1 row in set (0.00 sec)


                                  (dba:666)@[dba_test2]>select * from tb_test;
                                  +----+------+------------+
                                  | id | age | statDate |
                                  +----+------+------------+
                                  | 1 | 2 | 2021-12-22 |
                                  | 2 | 2 | 2021-12-22 |
                                  +----+------+------------+
                                  2 rows in set (0.00 sec)


                                  (dba:666)@[dba_test2]>insert into tb_test values (3,1,'2022-07-24');
                                  Query OK, 1 row affected (0.00 sec)


                                  (dba:666)@[dba_test2]>select * from tb_test;
                                  +----+------+------------+
                                  | id | age | statDate |
                                  +----+------+------------+
                                  | 1 | 2 | 2021-12-22 |
                                  | 2 | 2 | 2021-12-22 |
                                  | 3 | 1 | 2022-07-24 |
                                  +----+------+------------+
                                  3 rows in set (0.00 sec)


                                  (dba:666)@[dba_test2]>use dba_test
                                  Database changed
                                  (dba:666)@[dba_test]>insert into test values (100,'ee');
                                  Query OK, 1 row affected (0.00 sec)


                                  【MySQL888-1】:查看同步
                                  (root@dba_test)>select * from test;
                                  +-----+------+
                                  | id | name |
                                  +-----+------+
                                  |   1 | aa   |
                                  |  33 | ccc  |
                                  |  44 | ddd  |
                                  |  55 | eee  |
                                  |  66 | ff   |
                                  |  77 | gg   |
                                  |  88 | re   |
                                  |  99 | we   |
                                  | 100 | ee   |
                                  +-----+------+
                                  9 rows in set (0.00 sec)


                                  综上:说明库过滤ok


                                  复制



                                  复制

                                  6.4、关闭任务

                                  【停止任务】:

                                    [tidb()@name-2-2 666_ticdc]$ tiup ctl:v5.2.2 cdc changefeed remove --pd=http://10.3.3.3:678 --changefeed-id 666-888-20220724-task
                                    Starting component `ctl`: /home/tidb/.tiup/components/ctl/v5.2.2/ctl cdc changefeed remove --pd=http://10.3.3.3:678 --changefeed-id 666-888-20220724-task
                                    复制
                                    【查看任务详细】:
                                    复制
                                      [tidb()@name-2-2 666_ticdc]$ tiup ctl:v5.2.2 cdc changefeed query --pd=http://10.3.3.3:678 --changefeed-id=666-888-20220724-task
                                      Starting component `ctl`: /home/tidb/.tiup/components/ctl/v5.2.2/ctl cdc changefeed query --pd=http://10.3.3.3:678 --changefeed-id=666-888-20220724-task
                                      [2022/07/24 12:29:30.408 +08:00] [WARN] [cli_changefeed_query.go:100] ["This changefeed has been deleted, the residual meta data will be completely deleted within 24 hours."] [changgefeed=666-888-20220724-task]
                                      [2022/07/24 12:29:30.409 +08:00] [ERROR] [cli_changefeed_query.go:109] ["This changefeed does not exist"] [changefeed=666-888-20220724-task]
                                      Error: [CDC:ErrChangeFeedNotExists]changefeed not exists, key: /tidb/cdc/job/666-888-20220724-task
                                      Usage:
                                      cdc cli changefeed query [flags]


                                      Flags:
                                      -c, --changefeed-id string Replication task (changefeed) ID
                                      -h, --help help for query
                                      -s, --simple Output simplified replication status


                                      Global Flags:
                                      --ca string CA certificate path for TLS connection
                                      --cert string Certificate path for TLS connection
                                      -i, --interact Run cdc cli with readline
                                      --key string Private key path for TLS connection
                                      --log-level string log level (etc: debug|info|warn|error) (default "warn")
                                      --pd string PD address, use ',' to separate multiple PDs (default "http://127.0.0.1:2379")


                                      [CDC:ErrChangeFeedNotExists]changefeed not exists, key: /tidb/cdc/job/666-888-20220724-task
                                      Error: exit status 1
                                      Error: run `/home/tidb/.tiup/components/ctl/v5.2.2/ctl` (wd:/home/tidb/.tiup/data/TCTXh8X) failed: exit status 1


                                      复制


                                      【查看任务详细】:

                                        [tidb()@name-2-2 666_ticdc]$ tiup ctl:v5.2.2 cdc changefeed query -s --pd=http://10.3.3.3:678 --changefeed-id=666-888-20220724-task
                                        Starting component `ctl`: /home/tidb/.tiup/components/ctl/v5.2.2/ctl cdc changefeed query -s --pd=http://10.3.3.3:678 --changefeed-id=666-888-20220724-task
                                        {
                                        "state": "",
                                        "tso": 0,
                                        "checkpoint": "",
                                        "error": null
                                        }
                                        复制


                                        文章转载自雷雷DBA,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                                        评论