Skip to content

从神策迁移到鬼策

white-shiro-bai edited this page Feb 3, 2020 · 1 revision

鬼策支持无损的从神策迁移数据,迁移过程中可以并行运行,原神策业务不会中断,迁移完之后,切到鬼策,业务平滑过渡无感知。

如果需要从神策官方版迁移到鬼策。步骤如下:

A.订阅神策同步数据

1、使用/component/setup.py 创建与神策的同名项目(第一次创建时会初始化数据库),如果神策上包含多个项目,可以重复此步骤,直到所有项目都创建完。

2、在运行鬼策的机器上配置hosts文件,让鬼策可以访问到神策的Kafka服务器的9092端口。配置/tools/subscribe.py里的__main__部分,填入神策的kafka地址。<--注意,这里配置的是原版神策的kafka。

3、根据是否使用kafka,修改/configs/admin.py里的use_kafka参数。如果使用kafka,还需要在/configs/kafka.py里配置鬼策的kafka信息。<--注意,这里配置的是鬼策即将使用的kafka。

4、运行 subscribe.py ,此时神策和鬼策将同时获取新采集的数据。

B.迁移神策的历史数据进入鬼策

历史数据可以使用/tools/import_from_sa.py程序导入。导入过程分为导出神策数据和导入神策数据两个步骤进行。因为很多迁移的场景都面临神策服务即将过期的特殊情况,作者强烈建议先执行完导出,再慢慢导入不迟。

1、配置 /configs/sensorsSQL.py 文件中的神策参数。其中token需要神策的原生管理员才能查看。其他管理员权限账号无法查看。

以下操作均在/tools/import_from_sa.py里完成

2、从神策下载events。配置 download_events_from_sa_to_pickle(project={鬼策的项目名},remark={鬼策对应的remark},start_day='2018-11-27'{历史数据的开始日期},end_day='2019-09-25'{历史数据的结束日期})。设置好之后执行此方法,将会在 /data_export/{鬼策的项目名}/{鬼策对应的remark}/events/日期/小时/*.pkl 存储导出的神策数据。(以1天100万事件量,埋点复杂程度中等的网站计算。建议导出事件的计算机具备8G内存,每天的预计容量在5G左右。)

3、从神策下载users。配置 download_users_from_sa_to_pickle(project={鬼策的项目名},remark={鬼策对应的remark})。设置好之后执行此方法,将会在/data_export/{鬼策的项目名}/{鬼策对应的remark}/users/users_all.pkl存储所有的用户信息。

4、上传users信息到鬼策。配置 upload_users_from_pickle_to_sql(project={鬼策的项目名},remark={鬼策对应的remark})。设置好后执行此方法,会上传/data_export/{鬼策的项目名}/{鬼策对应的remark}/users/users_all.pkl存储的用户信息。注意:由于神策在events表里不会记录全部的profile设置事件,所以先行导入用户信息,有助于维护用户表的完整性。

5、上传events信息到鬼策。配置 upload_events_from_pickle_to_sql(project={鬼策的项目名},remark={鬼策对应的remark}) 或 upload_events_from_pickle_to_sql_m(project={鬼策的项目名},remark={鬼策对应的remark},process={插入的进程数})并执行。两个方法功能一样,其中带_m的能多进程执行。在不使用kafka的情况下,可以显著提高导入速度。在3tikv8核的tidb系统里,我尝试16个进程是没有问题的。再多就不推荐了,会有比较多的重试,反而影响效率。 附加说明:导入过程中,导入完的Pkl文件会删除。防止进程中断后重复导入。 pkl文件平均大小为200m的案例里,建议使用8g内存的电脑导入。

C.迁移神策上的短链到鬼策

1、配置 /configs/sensorsSQL.py 文件中的神策参数。其中token需要神策的原生管理员才能查看。其他管理员权限账号无法查看。如果上一步配置过这个文件了,无需重新配置。

以下操作均在/tools/import_from_sa.py里完成

2、配置 import_shortcut_from_sa_to_sql(project={鬼策的项目名},domain={原神策的短链解析域名}),配置完之后执行该方法。则所有的神策里被解析过的短链,会导入到鬼策的短链解析表里。该方法不仅适用于有推广管理的新版神策,也适用于旧版。

ABC部分都完成之后,神策的数据就向鬼策迁移完毕了。其中BC执行的过程中,A不用停。等BC都执行完了,运维可以直接改神策的域名指向鬼策。实现数据接入的无缝切换。等A彻底没流量不进了。就可以安全下线神策的服务了。