免费注册
帮助文档(华北一、二)

  • 可以通过一条命令, 将InDDB作为RDS或者自建MySQL的从库, 挂载到源数据库实例(RDS/自建MySQL)后方。 挂载后,InDDB能够和源数据库保持准实时同步。

    通过这种方式, 客户可以将InDDB,作为源数据库的备份。 在必要的时候,可以将业务的数据库访问IP切换到InDDB,即可完成业务数据库的切换。

    同时, 数据迁移的粒度,是可以调节的。 客户可以选择将一个库,或者若干个库的数据,全部同步到InDDB; 也可以只选择将某几张表的数据, 同步到InDDB。

    具体的步骤如下:

    1. 在InDDB下面创建需要迁移的库表

    客户在InDDB下面, 创建需要从源数据库迁移到InDDB的库和表。 源数据库中, 有在InDDB中创建的库和表,才会被迁移和同步, 如果库表没有在InDDB中创建,则不会迁移到InDDB。

    在InDDB中创建的库表,需要保证库表名、字段名、字段类型和源数据库一致。但是InDDB中的表,可以做水平拆分。对于在InDDB做了水平拆分的表, 将数据从原始数据库迁移到RDS时, 由InDDB保证数据能够按照拆分规则,被正确写入到InDDB。

    2. 启动数据迁移和同步

    在InDDB中创建好要迁移的库和表之后,通过以下命令, 即可启动数据的迁移和同步:

     
    create udb_import_task( 
    src_udb_addr:"10.13.110.26:3306", 
    src_udb_user:"root", 
    src_udb_passwd:"liuly624@cloud", 
    import_dbs:"import1,import2", 
    notes:"1st create trans task in bjd" 
    );

    其中: src_udb_addr : 源数据库的地址,可以为UDB地址,也可以为自建MySQL地址 src_udb_user: 源数据库的用户名, 目前必须为root。 如果需要其他用户名,请联系InDDB技术支持 src_udb_passwd: 用户密码import_dbs: 需要迁移的库, 多个库之间用,号分隔。

    1、 InDDB收到该命令后,会首先连接源数据库实例, 检查InDDB中的库表,是否已经在源数据库中存在,如果不存在会报错;

    2、 库表存在性检查通过后,InDDB内部将开启数据迁移和同步进程,从源数据库中将数据迁移到InDDB,并通过binlog watch 机制, 保证源数据库实例中的数据发生变更后,InDDB能够感知并将变更后的数据同步到InDDB。

    可以通过show udb_import_task命令, 来查看数据迁移和同步进程:

     
    ysql> show udb_import_task\G; 
    *************************** 1. row ***************************        
    src_udb_addr: 10.13.110.26:3306          
    import_dbs: import1,import2         
    create_time: 1495369094         
    modify_time: 1495369313              
    status: 1            
    log_file: mysql-bin.000495            
    file_pos: 5614         
    total_sync_num: 42         
     have_data_num: 22            
    no_data_num: 20              
    notes: 1st create trans task in bjd

    其中:

    status 为迁移和同步任务的状态。状态值如下:

     
    const (      
      UDB_IMPORT_TASK_NOTSTART = 0      
      UDB_IMPORT_TASK_RUNNING  = 1      
      UDB_IMPORT_TASK_FAILED   = 2      
      UDB_IMPORT_TASK_DROPPING = 3      
      UDB_IMPORT_TASK_DROPPED  = 4      
      UDB_IMPORT_TASK_ABNORMAL = 5