Todos os produtos
Search
Central de documentação

Lindorm:Migrate full data from TSDB to LindormTSDB

Última atualização: Jun 28, 2026

Para migrar todos os dados de séries temporais de uma instância do Time Series Database (TSDB) para o mecanismo de séries temporais do Lindorm (LindormTSDB), use a ferramenta de migração do LindormTSDB. A ferramenta lê dados do TSDB, divide a carga de trabalho em subtarefas paralelas e grava os dados no LindormTSDB com o modelo de dados de múltiplos valores.

Nota

O TSDB não está mais disponível para venda. A Alibaba Cloud recomenda migrar todos os dados das suas instâncias do TSDB para o LindormTSDB.

Pré-requisitos

Antes de começar, verifique se você tem:

  • Um cliente Linux ou macOS com os seguintes itens instalados:

    • Java Development Kit (JDK) 1.8 ou posterior

    • Python 2.x ou 3.x

  • Uma instância do TSDB executando a versão 2.7.4 ou posterior

  • Uma instância do Lindorm com o LindormTSDB ativado. Para mais detalhes, consulte Crie uma instância

Funcionamento da ferramenta de migração

A ferramenta processa os dados na seguinte sequência:

  1. Lê todos os dados de séries temporais da instância do TSDB e salva-os em um arquivo local.

  2. Divide a tarefa de migração em grupos de tempo com base em beginDateTime, endDateTime e splitIntervalMs. Em cada grupo de tempo, divide a carga de trabalho em subtarefas de leitura conforme o parâmetro oidBatch. Cada subtarefa lê um lote de séries temporais dentro do intervalo especificado e envia os dados ao componente de gravação.

  3. Após a conclusão de todas as subtarefas de leitura em um grupo de tempo, registra o ID do grupo, o ID da tarefa de migração e o status da tarefa em uma lista chamada internal_datax_job<jobName>.

  4. O componente de gravação recebe os dados de cada subtarefa de leitura e os grava no LindormTSDB usando o modelo de dados de múltiplos valores.

Nota

Um novo grupo de tempo só inicia após a conclusão de todas as subtarefas de leitura do grupo anterior. A migração suporta múltiplas tarefas simultâneas, e o sistema rastreia o ID de cada tarefa na lista de IDs.

Antes de começar

Conectividade de rede

  • Implante o cliente, a instância do Lindorm e a instância do TSDB na mesma Virtual Private Cloud (VPC) para evitar problemas de latência e conectividade.

  • Para migrar pela Internet, ative os endpoints públicos das instâncias do Lindorm e do TSDB e adicione o endereço IP do seu cliente às listas de permissões de ambas as instâncias. Para mais detalhes, consulte Configure listas de permissões.

Planejamento de desempenho

Avalie o impacto da migração nos seus negócios antes de iniciar. Os principais fatores incluem:

  • Especificação da instância do TSDB

  • Especificação do ambiente (como uma instância do Elastic Compute Service (ECS)) que executa sua aplicação

  • Quantidade de séries temporais na instância do TSDB

  • Tamanho total dos dados a migrar

  • Frequência média de reporte por série temporal

  • Intervalo de tempo dos dados

  • Valor de splitIntervalMs

Consulte Resultados de testes de desempenho para obter valores de throughput de referência por tamanho de instância.

Alterações no modelo de dados e consultas após a migração

Observe as seguintes diferenças no modelo de dados antes de migrar:

Item

TSDB

LindormTSDB

Impacto

Comprimento do timestamp

10 dígitos (segundos)

13 dígitos (milissegundos)

O sistema converte automaticamente os timestamps para milissegundos após a migração

Modelo de gravação

Valor único

Múltiplos valores

Consulte dados gravados com o modelo de valor único usando sintaxe de múltiplos valores após a migração

Consultas SQL

Suportado

Não disponível para gravações de múltiplos valores

Crie uma tabela de séries temporais antes de migrar se precisar de consultas SQL

Configure a tarefa de migração

Salve sua configuração de migração como um arquivo JSON (por exemplo, job.json). A configuração possui três seções: configurações da tarefa, leitor (origem TSDB) e gravador (destino LindormTSDB).

Configurações da tarefa

Parâmetro

Obrigatório

Descrição

channel

Não

Número de tarefas simultâneas. Padrão: 1.

errorLimit

Não

Quantidade de erros de gravação permitidos antes da falha da tarefa. Padrão: 0.

Parâmetros do leitor (origem TSDB)

Configure estes parâmetros com base na especificação da sua instância do TSDB e no volume de dados.

Parâmetro

Obrigatório

Descrição

sinkDbType

Sim

Defina como LINDORM-MIGRATION.

endpoint

Sim

Endpoint da instância do TSDB. Para mais detalhes, consulte Conexão de rede.

beginDateTime

Sim

Hora inicial do intervalo de migração.

endDateTime

Sim

Hora final do intervalo de migração.

splitIntervalMs

Sim

Duração de cada grupo de tempo em milissegundos. Controla a quantidade de dados lidos por subtarefa juntamente com oidBatch. Exemplo: 604800000 (7 dias). Defina um valor menor que um dia se os dados forem reportados com frequência em nível de segundos; use um valor maior para reportes horários.

selfId

Sim

ID desta tarefa de migração. Se estiver executando múltiplas tarefas simultâneas, liste todos os IDs das tarefas em jobIds.

jobIds

Sim

Lista de IDs das tarefas de migração.

jobName

Sim

Nome da tarefa de migração. Usado como sufixo da lista de status da tarefa (internal_datax_job<jobName>). Todas as tarefas simultâneas que compartilham o mesmo job devem usar o mesmo nome.

oidPath

Sim

Caminho para o arquivo contendo todas as séries temporais a migrar na instância do TSDB.

oidBatch

Sim

Quantidade de séries temporais que cada subtarefa de leitura processa de uma vez. Juntamente com splitIntervalMs e a frequência de reporte, determina quantos pontos de dados são lidos por subtarefa.

oidCache

Sim

Indica se as séries temporais devem ser armazenadas em cache na memória. Se você pretende migrar dezenas de bilhões de séries temporais, nem todas poderão ser mantidas em cache na memória.

metrics

Não

Métricas específicas a migrar. Este parâmetro não possui valor padrão. Exemplo: ["METRIC_1","METRIC_2"...].

**Como splitIntervalMs e oidBatch determinam o volume de leitura**

Cada subtarefa de leitura processa oidBatch × splitIntervalMs / reportingInterval pontos de dados. Por exemplo, com oidBatch definido como 100, splitIntervalMs definido como 604800000 e reporte horário:

100 × 604800000 / 3600000 = 16,800 data points per subtask

Parâmetros do gravador (destino LindormTSDB)

Parâmetro

Obrigatório

Descrição

endpoint

Sim

Endpoint do LindormTSDB. Para mais detalhes, consulte Visualize endpoints.

batchSize

Sim

Número máximo de pontos de dados enviados ao LindormTSDB em uma única solicitação de gravação.

multiField

Sim

Defina como true para usar o modelo de dados de múltiplos valores.

Exemplo de configuração

O exemplo a seguir mostra um arquivo job.json completo:

{
    "job": {
        "setting": {
            "speed": {
                "channel": 1
            },
            "errorLimit": {
                "record": 0,
                "percentage": 0.00
            }
        },
        "content": [
            {
                "reader": {
                    "name": "tsdbreader",
                    "parameter": {
                        "sinkDbType": "LINDORM-MIGRATION",
                        "endpoint": "ts-xxxx:3242",
                        "beginDateTime": "2022-5-2 00:00:00",
                        "endDateTime": "2022-7-2 00:00:00",
                        "splitIntervalMs": 86400000,
                        "jobName": "myjob",
                        "selfId": 1,
                        "jobIds": [1],
                        "oidPath": "{$myworkplace}/oidfile",
                        "oidBatch": 100,
                        "oidCache": true
                    }
                },
                "writer": {
                    "name": "tsdbwriter",
                    "parameter": {
                        "endpoint": "ld-xxxx:8242",
                        "multiField": true,
                        "batchSize": 500
                    }
                }
            }
        ]
    }
}

Substitua os espaços reservados pelos seus valores reais:

Espaço reservado

Descrição

Exemplo

ts-xxxx:3242

Endpoint da instância do TSDB (porta 3242)

ts-bp1xxxxx:3242

ld-xxxx:8242

Endpoint do LindormTSDB (porta 8242)

ld-bp1xxxxx:8242

{$myworkplace}/oidfile

Caminho para o arquivo de séries temporais na instância do TSDB

/data/migration/oidfile

Execute a migração

  1. Baixe a ferramenta de migração.

  2. Descompacte o pacote:

    tar -zxvf tsdb2lindorm.tar.gz
  3. Inicie a tarefa de migração:

    python datax/bin/datax.py --jvm="-Xms8G -Xmx8G" job.json > job.result

    Substitua job pelo nome do seu arquivo de configuração.

  4. Após a conclusão do comando, verifique se há erros em job.result. Se o arquivo não contiver saída de erro, a migração foi concluída com sucesso.

  5. (Opcional) Se a tarefa falhar, consulte a lista de status da tarefa para identificar quais grupos de tempo foram concluídos com sucesso e onde retomar:

    curl -u <username>:<password> <tsdb-endpoint>:3242/api/mquery -XPOST -d '{
        "start": 1,
        "queries": [
            {
                "metric": "internal_datax_job<jobName>",
                "fields": [
                    {
                        "field": "*",
                        "aggregator": "none"
                    }
                ]
            }
        ]
    }'

    Substitua os espaços reservados:

    Espaço reservado

    Descrição

    Exemplo

    <username>:<password>

    Credenciais da conta do TSDB. Consulte Gerencie contas.

    admin:mypassword

    <tsdb-endpoint>

    ID da instância do TSDB

    ts-****

    <jobName>

    Nome da tarefa de migração

    internal_datax_jobmyjob

    A resposta lista cada grupo de tempo com seu status de conclusão:

    Timestamp (endtime)

    jobId (tag)

    state (field)

    1651795199999 (2022-05-05 23:59:59.999)

    3

    ok

    1651795199999 (2022-05-05 23:59:59.999)

    2

    ok

    1651795199999 (2022-05-05 23:59:59.999)

    1

    ok

    1651881599999 (2022-05-06 23:59:59.999)

    2

    ok

    Para retomar sem remigrar os grupos de tempo já concluídos, atualize beginDateTime em job.json para o início do primeiro grupo de tempo incompleto antes de reiniciar. Neste exemplo, defina beginDateTime como 2022-05-06 00:00:00.

Visualize dados migrados

Os dados do TSDB originalmente gravados com o modelo de valor único ficam armazenados no LindormTSDB sob o modelo de dados de múltiplos valores. Use o endpoint /api/mquery e o formato de consulta de múltiplos valores ao ler esses dados.

O exemplo a seguir mostra a diferença de consulta para uma métrica chamada test_metric:

Consulta no TSDB:

curl -u username:password ts-xxxxx:3242/api/query -XPOST -d '{
    "start": 1657004460,
    "queries": [
        {
            "aggregator": "none",
            "metric": "test_metric"
        }
    ]
}'

Resposta do TSDB:

[
    {
        "aggregateTags": [],
        "dps": {
            "1657004460": 1.0
        },
        "fieldName": "",
        "metric": "test_metric",
        "tags": {
            "tagkey1": "1"
        }
    }
]

Consulta no LindormTSDB:

curl -u username:password ld-xxxxx:8242/api/mquery -XPOST -d '{
    "start": 1657004460,
    "queries": [
        {
            "metric": "test_metric",
            "fields": [
                {
                    "field": "*",
                    "aggregator": "none"
                }
            ],
            "aggregator": "none"
        }
    ]
}'

Resposta do LindormTSDB:

[
  {
    "aggregatedTags": [],
    "columns": [
      "timestamp",
      "value"
    ],
    "metric": "test_metric",
    "tags": {
      "tagkey1": "1"
    },
    "values": [
      [
        1657004460000,
        1.0
      ]
    ]
  }
]

Principais diferenças:

  • Use /api/mquery em vez de /api/query.

  • Especifique os campos explicitamente usando o array fields.

  • Os timestamps nas respostas do LindormTSDB estão em milissegundos (13 dígitos), enquanto no TSDB estão em segundos (10 dígitos).

Resultados de testes de desempenho

Use os resultados a seguir como referência ao planejar sua migração. O desempenho real depende da especificação da sua instância, do volume de dados e da frequência de reporte.

TSDB Basic Edition II (4 núcleos de CPU, 8 GB de memória) — 2 instâncias

Teste

Séries temporais

Pontos de dados

Processos

Configuração

Tamanho do arquivo de séries temporais

Throughput (pontos de dados/s)

Duração

Utilização da CPU

1

30.000

86.400.000

1

channel: 2, oidCache: true, oidBatch: 100, splitInterval: 6h, mem: -Xms6G -Xmx6G

1,5 MB

230.000

12 min 30 s

30%

2

6.000.000

2.592.000.000

1

channel: 10, oidCache: true, oidBatch: 100, splitInterval: 6h, mem: -Xms8G -Xmx8G

292 MB

200.000

2 h 55 min 30 s

70%–90%

3

30.000.000

4.320.000.000

1

channel: 10, oidCache: false, oidBatch: 100, splitInterval: 6h, mem: -Xms28G -Xmx28G

1,5 GB

140.000

9 horas

40%–80%

4

30.000.000

4.320.000.000

3

channel: 10, oidCache: false, oidBatch: 100, splitInterval: 6h, mem: -Xms8G -Xmx8G

1,5 GB

250.000

5 horas

90%

TSDB Standard Edition I (8 núcleos de CPU, 16 GB de memória) — 2 instâncias

Séries temporais

Pontos de dados

Processos

Configuração

Tamanho do arquivo de séries temporais

Throughput (pontos de dados/s)

Duração

Utilização da CPU

40.000.000

5.760.000.000

3

channel: 10, oidCache: false, oidBatch: 100, splitInterval: 6h, mem: -Xms8G -Xmx8G

2 GB

150.000–200.000

9 horas

10%–20%

Próximos passos

  • Para consultar dados migrados usando SQL, crie uma tabela de séries temporais no LindormTSDB antes de migrar. Consulte a documentação do LindormTSDB para obter instruções sobre como criar tabelas de séries temporais.

  • Após a migração, valide uma amostra dos seus dados no LindormTSDB usando os exemplos de consulta em Visualize dados migrados.