DBAtlas · Atlas d'exploitation des bases de données

Importer dans la cible

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

impdp charge dans la cible le fichier .dmp produit par expdp. REMAP_SCHEMA déplace la source vers un autre schéma et REMAP_TABLESPACE vers un autre tablespace ; ils sont souvent utilisés lors des migrations entre environnements. Le comportement pour les tables existantes se règle avec TABLE_EXISTS_ACTION, et la vitesse avec 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

Avec pg_restore -j, les dumps au format custom/directory sont chargés en parallèle (plusieurs processus) ; cela accélère nettement le chargement des grandes bases. --clean --if-exists supprime d'abord les objets dans la cible, et --no-owner s'adapte à une autre structure de rôles. Les dumps SQL simples se chargent avec psql -f (sans parallélisme).

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.

Un dump SQL mysqldump se charge en le redirigeant vers le client mysql (mysql shop < dump.sql). Pour un chargement parallèle et bien plus rapide, un répertoire produit par mydumper se restaure avec myloader --threads. Désactiver FOREIGN_KEY_CHECKS et UNIQUE_CHECKS pendant le chargement améliore les performances.

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

Une sauvegarde .bak se charge avec RESTORE DATABASE ; lors d'un passage à une autre disposition des disques, WITH MOVE redirige les fichiers de données/journal vers de nouveaux chemins. Pour une cible indépendante de la version/Azure SQL, SqlPackage /Action:Import crée le fichier .bacpac (schéma + données) en tant que nouvelle base.

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

mongorestore charge dans la cible la sortie BSON de mongodump. --oplogReplay rejoue les modifications de l'oplog d'une sauvegarde prise avec --oplog, amenant le dump à un instant cohérent unique. Les noms de base/collection se changent avec --nsFrom/--nsTo, et les données existantes peuvent être effacées avec --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

Redis ne charge le RDB qu'au démarrage. Le serveur cible est donc arrêté, le dump.rdb migré est placé dans le répertoire de données (CONFIG GET dir), puis le serveur est redémarré ; au démarrage, la mémoire est alimentée à partir du RDB. Pour charger sans arrêter le serveur, envoyez les clés au format RESP avec 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" }

Sur le cluster cible, enregistrez le même dépôt de snapshots que la source (les fichiers doivent être accessibles), puis restaurez les indices avec _snapshot/.../_restore. Les noms d'index peuvent être changés avec rename_pattern/rename_replacement. Les indices existants ne peuvent pas être restaurés tant qu'ils sont ouverts ; fermez-les ou renommez-les d'abord.

Ouvrir dans DBAtlas →