DBAtlas · Atlas de operações de banco de dados

Importar no destino

Oracle

# Import with Data Pump; remap schema and tablespace
impdp system/password directory=DIR_DMP dumpfile=shop_%U.dmp \
  logfile=shop_imp.log \
  remap_schema=shop:shop_new \
  remap_tablespace=USERS:DATA parallel=4

# For existing objects: TABLE_EXISTS_ACTION=TRUNCATE|APPEND|REPLACE

O impdp carrega no destino o arquivo .dmp gerado com expdp. REMAP_SCHEMA move a origem para outro schema e REMAP_TABLESPACE para outra tablespace; são muito usados na migração entre ambientes. O comportamento para tabelas existentes é definido com TABLE_EXISTS_ACTION, e a velocidade com PARALLEL.

PostgreSQL

# Parallel restore (from custom/directory format)
pg_restore -j4 -d targetdb --no-owner --clean --if-exists shop.dump

# A specific table only: pg_restore -d targetdb -t customer shop.dump
# For a plain .sql dump:  psql -d targetdb -f shop.sql

Com pg_restore -j, dumps em formato custom/directory são carregados em paralelo (vários processos); isso acelera significativamente a carga em bancos grandes. --clean --if-exists remove primeiro os objetos no destino, e --no-owner se adapta a uma estrutura de roles diferente. Dumps SQL simples são carregados com psql -f (sem paralelismo).

MySQL

# Load a plain SQL dump
mysql --binary-mode shop < shop.sql

# Parallel/fast load (if taken with mydumper):
myloader --directory=./backup --database=shop --threads=4 --overwrite-tables

# Tip: SET FOREIGN_KEY_CHECKS=0; unique_checks=0 before loading speeds it up.

Um dump SQL do mysqldump é carregado redirecionando-o para o cliente mysql (mysql shop < dump.sql). Para uma carga paralela e muito mais rápida, um diretório gerado com mydumper é restaurado com myloader --threads. Desabilitar FOREIGN_KEY_CHECKS e UNIQUE_CHECKS durante a carga melhora o desempenho.

SQL Server

-- Restore from a physical backup (move file paths to the new environment)
RESTORE DATABASE shop FROM DISK = 'C:\backup\shop.bak'
WITH MOVE 'shop_data' TO 'D:\data\shop.mdf',
     MOVE 'shop_log'  TO 'D:\log\shop.ldf', REPLACE;

-- Import from a BACPAC (schema+data):
-- sqlpackage /Action:Import /TargetConnectionString:"..." /SourceFile:shop.bacpac

Um backup .bak é carregado com RESTORE DATABASE; ao mudar para um layout de disco diferente, WITH MOVE redireciona os arquivos de dados/log para novos caminhos. Para um destino independente de versão/Azure SQL, SqlPackage /Action:Import cria o arquivo .bacpac (schema + dados) como um novo banco.

MongoDB

# Restore the BSON backup; replay the oplog to land on a single point in time
mongorestore --uri="mongodb://target:27017" --oplogReplay \
  --numParallelCollections=4 ./backup

# Renaming: --nsFrom='shop.*' --nsTo='shop_new.*'
# Drop existing data before loading: --drop

O mongorestore carrega no destino a saída BSON do mongodump. --oplogReplay reaplica as alterações do oplog de um backup feito com --oplog, levando o dump a um único ponto no tempo consistente. Os nomes de banco/coleção são alterados com --nsFrom/--nsTo, e os dados existentes podem ser apagados com --drop.

Redis

# Stop the server, place dump.rdb in the data directory, start it again
# 1) systemctl stop redis  (or SHUTDOWN NOSAVE)
# 2) cp dump.rdb  <path found with CONFIG GET dir>/dump.rdb
# 3) systemctl start redis   -> Redis loads the RDB into memory at startup

# Alternative (live): feed a RESP command stream with redis-cli --pipe

O Redis só carrega o RDB na inicialização. Por isso, o servidor de destino é parado, o dump.rdb migrado é colocado no diretório de dados (CONFIG GET dir) e o servidor é reiniciado; na inicialização, a memória é populada a partir do RDB. Para carregar sem parar o servidor, transmita as chaves em formato RESP com redis-cli --pipe.

Elasticsearch

# Register the same repository on the target cluster, then restore the snapshot
PUT _snapshot/migration_repo
{ "type": "fs", "settings": { "location": "/mnt/es_backup" } }

POST _snapshot/migration_repo/migration_1/_restore
{ "indices": "customer,orders",
  "rename_pattern": "(.+)", "rename_replacement": "restored_$1" }

No cluster de destino, registre o mesmo snapshot repository da origem (os arquivos devem estar acessíveis) e depois restaure os índices com _snapshot/.../_restore. Os nomes dos índices podem ser alterados com rename_pattern/rename_replacement. Índices existentes não podem ser restaurados enquanto estiverem abertos; feche-os ou renomeie-os antes.

Abrir no DBAtlas →