使用DRS将MySQL数据库迁移到GaussDB(下)

49 阅读11分钟

步骤三:迁移前构造数据

迁移前需要在源库构造一些数据类型,供迁移完成后验证数据。本章端到端的数据为测试数据,仅供参考。

DRS支持的数据类型可参考MySQL->GaussDB数据映射关系

执行如下步骤在源库构造数据:

  1. 根据本地的MySQL数据库的IP地址,通过数据库连接工具连接数据库。

  2. 根据DRS支持的数据类型,在源库执行语句构造数据。

    1. 创建一个测试用的用户。

      create user

      test_info

      identified by

      xxx

      ;

      test_info为本次迁移创建的用户,xxx为用户的密码,请根据实际情况替换。

    2. 在当前用户下创建一个数据库test_info。

      CREATE DATABASE test_info;

    3. 在test_info库下创建一个表。

      CREATE TABLE `test_info`.`test_table` (

      `id` int NOT NULL,

      `c1` char(10) DEFAULT NULL,

      `c2` varchar(10) DEFAULT NULL,

      `c3` binary(10) DEFAULT NULL,

      `c4` varbinary(10) DEFAULT NULL,

      `c5` tinyblob,

      `c6` mediumblob,

      `c7` longblob,

      `c8` tinytext,

      `c9` text,

      `c10` mediumtext,

      `c11` longtext,

      `c12` enum('1','2','3') DEFAULT NULL,

      `c13` set('1','2','3') DEFAULT NULL,

      `c14` tinyint DEFAULT NULL,

      `c15` smallint DEFAULT NULL,

      `c16` mediumint DEFAULT NULL,

      `c17` bigint DEFAULT NULL,

      `c18` float DEFAULT NULL,

      `c19` double DEFAULT NULL,

      `c20` date DEFAULT NULL,

      `c21` datetime DEFAULT NULL,

      `c22` timestamp,

      `c23` time DEFAULT NULL,

      `c24` year DEFAULT NULL,

      `c25` bit(10) DEFAULT NULL,

      `c26` json DEFAULT NULL,

      `c27` decimal(10,0) DEFAULT NULL,

      `c28` decimal(10,0) DEFAULT NULL,

      PRIMARY KEY (`id`)

      );

    4. 给用户赋权。

      GRANT SELECT**,LOCK TABLES ON .

      to** test_info**;**

      GRANT REPLICATION SLAVE**,REPLICATION CLIENT ON *.* to** test_info**;**

      test_info为本次迁移创建的用户,为需要数据同步的库名,

      为要数据同步的表名,请根据实际情况替换。

    5. 在表中插入两行数据。

      insert into test_info.test_table values (1,'a','b','111','111','tinyblob','mediumblob','longblob','tinytext','text','mediumtext','longtext','1','3',1,2,3,4,1.123,1.1234,'2024-03-08','2024-03-08 08:00:00','2024-03-08 08:00:00','08:00:00','2024','1010','{"a":"b"}',1.23,1.234);

      insert into test_info.test_table values (2,'a','b','111','111','tinyblob','mediumblob','longblob','tinytext','text','mediumtext','longtext','1','3',1,2,3,4,1.123,1.1234,'2024-03-08','2024-03-08 08:00:00','2024-03-08 08:00:00','08:00:00','2024','1010','{"a":"b"}',1.23,1.234);

    6. 在目标端创建库。

      1. 登录华为云控制台

      2. 单击管理控制台左上角的,选择区域。

      3. 单击左侧的服务列表图标,选择“数据库 > 数据管理服务 DAS”。

      4. 在数据管理服务DAS左侧导航栏,单击“开发工具”,进入开发工具数据库登录列表页面。

      5. 单击“新增数据库实例登录”,打开新增数据库实例登录窗口。

      6. 选择“数据库引擎”、“数据库来源”,填写登录用户名、密码以及描述(非必填项)信息,开启SQL执行记录功能。

      7. 单击“测试连接”测试连接是否成功。

        如测试连接成功,将提示“连接成功”,您可继续新增操作。如测试连接失败,将提示连接失败原因,您需根据提示信息进行修改,以便新增数据库登录成功。

      8. 设置完登录信息,单击“立即新增”。

      9. 新增完成后,单击新增登录的“登录”,登录当前数据库。

        图10 登录数据库

      10. 选择“SQL操作”> “SQL查询”进入SQL查询页面。

      11. 执行如下语句创建兼容MySQL的数据库。

        此例中为:test_database_info,请根据实际情况选择。

        CREATE DATABASE test_database_info DBCOMPATIBILITY 'mysql';
        
    7. 步骤四:迁移数据库

      创建DRS实例,将本地MySQL上的test_info数据库同步到GaussDB实例中test_database_info数据库中。

      迁移前检查

      在创建任务前,需要针对迁移条件进行手工自检,以确保您的迁移任务更加顺畅。

      在迁移前,您需要参考入云使用须知获取迁移相关说明。

      创建迁移任务

      1. 登录华为云控制台

      2. 单击管理控制台左上角的,选择区域。

        选择目标实例所在的区域。

      3. 单击左侧的服务列表图标,选择“数据库 > 数据复制服务 DRS”。

      4. 左侧导航栏选择“实时同步管理”,单击“创建同步任务”。

      5. 配置同步实例信息。

        1. 选择区域,计费模式,项目,填写任务名称。

        2. 配置同步实例信息,选择“数据流动方向”、“源数据库引擎”、“目标数据库引擎”、“网络类型”、“DRS任务类型”、“目标数据库实例”、“同步实例所在子网”(非必选)、“同步模式”,选择“规格类型”和“可用区”,选填“标签”。

        3. 单击“开始创建”。

      6. 配置源库及目标库信息。

        1. 填写源库的IP、端口、用户、密码等信息。

          填写完成后,需要单击“测试连接”,测试连接信息是否正确。

        2. 填写目标库的账户和密码。

          填写完成后,需要单击“测试连接”,测试连接信息是否正确。

        3. 单击“下一步”,仔细阅读提示内容后,单击“同意,并继续”。

      7. 设置同步。

        1. 选择全量同步对象类型,如果要同步的表结构还未在目标库创建好,就勾选同步表结构(表结构包含主键和唯一键),反之则不勾。同步索引选项按实际需求视情况勾选。

        2. 选择增量冲突策略。

          • 忽略:当同步数据与目标库已有数据冲突时(主键/唯一键重复等),DRS将忽略源库的冲突数据,并保留目标库中的冲突数据,继续进行后续同步。选择忽略可能导致源库与目标库数据不一致。
          • 报错:当同步数据与目标库已有数据冲突时(主键/唯一键重复等),同步任务将失败并立即中止。可在同步日志中查看详细信息。
          • 覆盖:当同步数据与目标库已有数据冲突时(主键/唯一键重复等),将覆盖原来的冲突数据。

        3. 在源库选择需要迁移的数据库和表。本次迁移中选择“**test_info”中的“test_table”**表。

        4. 选择完成后,可以设置迁移后是否重新命名库名和表名。

        5. 本次迁移将表名重新命名为“DATATYPELIST**_After**”。

          注意重新命名时不要使用特殊符号,否则会导致迁移后执行SQL语句报错。

        6. 确认重命名设置内容,单击“下一步”。

      8. 高级设置。

        本页面内容仅做确认,无法修改,确认完成后单击“下一步”。

      9. 数据加工。

        在该页面可以对迁移的表进行加工。包括选择迁移的列,重新命名迁移后的列名,本次迁移将“c1”重新命名为“new-line”。

        1. 选择需要加工的表。

        2. 编辑“c1”列。

        3. 将“c1”重新命名为“new-line”,单击“确定”。

        4. 单击“下一步”。

      10. 预检查。 1. 所有配置完成后,进行预检查,确保迁移成功。 2. 对于未通过的项目,根据检查结果中的提示信息修复,修复完成后,单击“重新校验”,直到预检查通过率为100%。

      3.  预检查全部通过后,单击“下一步”。
      
      1. 任务确定。 1. 检查所有配置项是否正确。

      2.  单击“启动任务”,仔细阅读提示后,勾选“我已阅读启动前须知”。
      
      3.  单击“启动任务”,完成任务创建。
          
          ![](https://p3-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/9cc33034596548dfbb5e84bee57fea64~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAgb3BlbkdhdXNz5bCP55m95oiQ6ZW_5pel6K6w:q75.awebp?rk3s=f64ab15b&x-expires=1771810100&x-signature=QJOhezrSvvnlk7Q2ZOJ1WU4uUw8%3D "点击放大")
          
      

      12. 任务创建成功。

      任务创建成功后,返回任务列表查看创建的任务状态。
      

      步骤五:迁移后进行数据校验

      当任务状态变为“增量同步”,说明全量同步已经完成,全量同步完成后,登录GaussDB查看数据迁移结果。

      1. 等待迁移任务状态变为“增量同步”。

      2. 单击任务名称,进入任务详情页。

      3. 验证数据一致性。

        1. 在“同步对比 > 对象级对比”页面,查看库和表的迁移结果。

        2. 在“同步对比 > 数据级对比”页面,创建对比任务,查看表中行的迁移结果。

      4. 通过DAS连接GaussDB的目标库“test_database_info ”。

        DAS连接实例的方法请参考《新增数据库登录》

      5. 执行如下语句,查询全量同步结果。

        SELECT * FROM test_info.datatypelist_after;
        

        MySQL数据库中的模式迁移完成后,会在GaussDB库中作为Schema,所以查询语句中添加Schema精确查询。

        可查询表中的各个数据类型都迁移成功,并且数据正确无误。

      6. 验证增量同步。

        由于本次迁移为“全量+增量”同步模式,全量同步完成后,如果在创建任务后有数据写入,这些写入的数据会一直同步至目标库中,直到任务结束。下面为模拟写入另外的数据。

        1. 根据本地的MySQL数据库的IP和地址,通过数据库连接工具连接数据库。

        2. 执行如下语句,在源库插入一条数据。

          插入一条“id”为3的数据。

          insert into test_info.test_table values (3,'a','b','111','111','tinyblob','mediumblob','longblob','tinytext','text','mediumtext','longtext','1','3',1,2,3,4,1.123,1.1234,'2024-03-08','2024-03-08 08:00:00','2024-03-08 08:00:00','08:00:00','2024','1010','{"a":"b"}',1.23,1.234);
          
        3. 在目标库执行如下语句查询结果。

          SELECT * FROM test_info.datatypelist_after;
          

          可看到在源库新增的数据,可以实时同步至目标库。

      7. 结束迁移任务。

        根据业务情况,待业务完全迁移至目标库,可以结束当前任务。

        1. 单击“操作”列的“结束”。

        2. 仔细阅读提示后,单击“是”,结束任务。

      更多详情请参考GaussDB 文档中心:doc.hcs.huawei.com/db/zh-cn/ga…