1. Home
  2. Infobright基础手册
  3. MySQL到Infobright数据迁移案例

MySQL到Infobright数据迁移案例


迁移整体架构如下:

数据库为主备模式,最小单位为1主1备。首先线上业务将日志数据实实记录到MySQL主库,并同步到备库。在备库基于表订制迁移规则,将抽取的日志数据远程传输到infobright仓库,并load到数据仓库中。并发送通知到DBA。线上主库案仅保存1个月数据即可。备库可案需保存1~3个月数据。作为数据备份和即时查询。数据仓库保留1年以上的历史数据,供查询分析人员随时查询。

 

需要注意事项:

1.主库建日志表的时候最好按日期建立为分区表。方便清理数据和提高数据抽取时的效率。

2.数据仓库采用分表方式建立。每月一个表。查询分析时需要指定表后缀。因为infobright社区版不支持数据删除操作,这样分表可以方便以后清理数据。并且按月查询也可以提高查询效率。

3.因为数据抽取和导入是基于表级别的,需要为每个表的迁移写不同的程序抽取和导入。所以适合单表数据比较大,但是表数量不多的日志表 。

 

迁移操作关键步骤:

Infobright数据仓库创建表

CREATE TABLE `INSHOP_API_ACCESS_LOG_201407` (

`ID` bigint(20) NOT NULL COMMENT ‘主键ID’,

`MERCHANT_ID` bigint(18) DEFAULT NULL,

`INVOKE_METHOD` varchar(100) DEFAULT NULL COMMENT ‘方法名称’,

`METHOD_VER` varchar(20) DEFAULT NULL COMMENT ‘版本号’,

`RESULT_TYPE` int(2) DEFAULT NULL COMMENT ‘返回值类型’,

`RESULT_CODE` varchar(50) DEFAULT NULL COMMENT ‘返回错误编码’,

`ERP` varchar(20) DEFAULT NULL COMMENT ‘erp标识’,

`ERP_VER` varchar(20) DEFAULT NULL COMMENT ‘erp版本号’,

`SDK_TYPE` varchar(50) DEFAULT NULL COMMENT ‘SDK版本类型’,

`VISIT_DATE` timestamp NOT NULL COMMENT ‘访问时间’,

`IP` varchar(40) DEFAULT NULL COMMENT ‘调用接口的IP’,

`INVOKE_PARAM` varchar(4000) DEFAULT NULL COMMENT ‘调用接口的参数’,

`VISIT_TIME_COST` int(18) DEFAULT NULL COMMENT ‘接口响应时间’

) ENGINE=BRIGHTHOUSE DEFAULT CHARSET=utf8;

 

11:22:04 api_log> show tables;

+——————————+

| Tables_in_api_log            |

+——————————+

| INSHOP_API_ACCESS_LOG_201404 |

| INSHOP_API_ACCESS_LOG_201405 |

| INSHOP_API_ACCESS_LOG_201406 |

| INSHOP_API_ACCESS_LOG_201407 |

| INSHOP_API_ACCESS_LOG_201408 |

| INSHOP_API_ACCESS_LOG_201409 |

| INSHOP_API_ACCESS_LOG_201410 |

| INSHOP_API_ACCESS_LOG_201411 |

| INSHOP_API_ACCESS_LOG_201412 |

+——————————+

 

MySQL数据库生成文件

11:36:18 api_log> select * from INSHOP_API_ACCESS_LOG where VISIT_DATE>=’2014-05-01 00:00:00′ and VISIT_DATE<‘2014-05-27 00:00:00’ into outfile ‘/data/house_apilog/INSHOP_API_ACCESS_LOG_5.csv’  FIELDS TERMINATED BY ‘,’ ENCLOSED BY ‘\”‘   ESCAPED BY ‘\\’  LINES TERMINATED BY ‘\n’;

Query OK, 942548825 rows affected (8 hours 9 min 1.71 sec)

Infobright load数据:

11:22:07 api_log> load data  infile ‘/data/house_apilog/INSHOP_API_ACCESS_LOG_5.csv’ into table INSHOP_API_ACCESS_LOG_201405 FIELDS TERMINATED BY ‘,’ ENCLOSED BY ‘\”‘   ESCAPED BY ‘\\’  LINES TERMINATED BY ‘\n’;

Query OK, 942548825 rows affected (6 hours 42 min 10.90 sec)

Records: 942548825  Deleted: 0  Skipped: 0  Warnings: 0

 

09:55:25 api_log> select concat(truncate(sum(data_length)/1024/1024,2),’MB’) as data_size,      concat(truncate(sum(max_data_length)/1024/1024,2),’MB’) as max_data_size,      concat(truncate(sum(data_free)/1024/1024,2),’MB’) as data_free,      concat(truncate(sum(index_length)/1024/1024,2),’MB’) as index_size      from information_schema.tables where TABLE_NAME = ‘INSHOP_API_ACCESS_LOG’;

+————-+—————+———–+————-+

| data_size   | max_data_size | data_free | index_size  |

+————-+—————+———–+————-+

| 640783.09MB | 0.00MB        | 179.00MB  | 111563.18MB |

+————-+—————+———–+————-+

1 row in set (19.16 sec)

 

09:54:17 api_log> select concat(truncate(sum(data_length)/1024/1024,2),’MB’) as data_size,      concat(truncate(sum(max_data_length)/1024/1024,2),’MB’) as max_data_size,      concat(truncate(sum(data_free)/1024/1024,2),’MB’) as data_free,      concat(truncate(sum(index_length)/1024/1024,2),’MB’) as index_size      from information_schema.tables where TABLE_NAME = ‘INSHOP_API_ACCESS_LOG_201405’;

+————+—————+———–+————+

| data_size  | max_data_size | data_free | index_size |

+————+—————+———–+————+

| 43760.19MB | 0.00MB        | 0.00MB    | 0.00MB     |

+————+—————+———–+————+

1 row in set (0.01 sec)

这篇文档是否帮助到了您? 1