Info 后端服务迁移整理

本文信息为锁老师交接的相关文档,时间为2023年1月份,背景为从一个AWS账户迁移到另外一个AWS账户,其操作均由锁元老师完成,其中有些信息仅供参考。

==============

 

结构


info站的数据是在scan索引数据时做了一些统计,记录到pg数据库;然后通过api提供给前端。

  1. 前端代码:https://github.com/Elements-Studio/info-starswap

  2. 接口代码:(可以迁移到Elements-Studio组织下)https://github.com/fountainchen/swap-stat-api

  3. 数据索引:https://github.com/MoveScan/StcScan ,这块是跟scan索引数据起了一些独立的handle来为swap统计定制数据

  4. db数据库:目前用的postgresql存储,每个网络一个schema,建表语句:
    https://github.com/MoveScan/StcScan/tree/main/starcoin-indexer/deploy/create_table.sql

 

迁移回退到老账号流程

1、先在老的账户下创建pg的db,将新账号下:starswap-info 库整个迁移回去
2、在老账户下,将原stcscan的indexer的配置改成第一步的新建实例
kube/indexer/下 database-swap.czftx6muneg7.ap-northeast-1.rds.amazonaws.com 这个免费实例改成新的
3、前两步数据索引正常执行,在老账户下启动接口部分的服务
改下db配置,直接apply deploy/kube/swap-stat-api-deployment.yaml
4、将前端的访问的域名改到第三步启动的服务上完成迁移

迁移流程详细checklist:

  1. 在老账户下开通info的库,建role和db
    psql -U postgres -h database-1.c0bz9kehdvnb.ap-northeast-1.rds.amazonaws.com
    CREATE ROLE starcoin WITH PASSWORD '{password}' CREATEDB CREATEROLE LOGIN;
    GRANT rds_superuser TO starcoin;
    grant starcoin TO postgres;
    create database starcoin owner starcoin;

  2. 停止新账户的索引服务,这样新的数据不会再写入。
    kubectl -n starcoin-main delete deployment starswap-info-deployment

  3. 将info库导出到文件
    (1)、在k8s的宿主机上操作:(需要检查是否有pg命令,访问info库的权限)
    pg_dump -U starcoin -h starswap-info.czftx6muneg7.ap-northeast-1.rds.amazonaws.com -d starcoin > info20230112.sql
    (2)、将文件压缩传到跳板机
    (3)、从新账户跳板机传到旧账户跳板机
    (4)、传到K8s的宿主机(需要检查是否有pg命令,访问info库的权限)
    psql -U starcoin -h starswap-info.czftx6muneg7.ap-northeast-1.rds.amazonaws.com -d starcoin < info20230112.sql

  4. 启动api服务:在swap-stat-api项目中修改配置到第一步的新库地址:
    https://github.com/fountainchen/swap-stat-api/blob/master/deploy/kube/swap-stat-api-deployment.yaml
    kubectl apply -f deploy/kube/swap-stat-api-deployment.yaml
    验证接口是否正常?
    部署服务:kubectl apply -f deploy/kube/service-swap-stat-api.yaml

  5. 启动indexer服务
    在StcScan项目中,恢复swap_transaction,swap_stats,price_hour,price_stat,swap_pool_fee_stat这几个job的配置
    kubectl apply -f starcoin-indexer-swap-main-deployment.yaml
    修改所有indexer的db配置,重新apply一下

    kubectl apply -f starcoin-indexer-barnard-deployment.yaml kubectl apply -f starcoin-indexer-main-deployment.yaml kubectl apply -f starcoin-indexer-halley-deployment.yaml kubectl apply -f starcoin-indexer-proxima-deployment.yaml 查看日志是否正常?
  6. 切换api的域名指向新的service

    1. 更改dns地址解析

    2. kubectl get service 获取service的aws域名