Préparer vos fichiers de sauvegarde

Cette page explique comment créer les fichiers de sauvegarde requis pour migrer vos bases de données SQL Server vers Cloud SQL pour SQL Server, y compris les sections suivantes:

Conditions requises et limites

Les exigences et limites suivantes s'appliquent aux fichiers de sauvegarde que vous utilisez pour la migration:

  • Tous les fichiers de sauvegarde doivent porter un nom qui respecte leurs conventions d'attribution de noms respectives.

  • La taille maximale de vos fichiers de sauvegarde est de 5 To.

  • Si la taille de votre base de données dépasse 5 To, vous pouvez diviser vos fichiers de sauvegarde complète ou différentielle en plus petits fichiers ("bandes"). La taille maximale de chaque bande est de 5 To.

  • Vous pouvez utiliser des fichiers de sauvegarde et de journaux de transactions chiffrés pour votre migration. Si vous souhaitez utiliser des fichiers de sauvegarde chiffrés, vous devez chiffrer tous les fichiers de sauvegarde (complète, différentielle, journal des transactions) que vous utilisez pour une base de données spécifique incluse dans votre migration. Consultez la section Utiliser des sauvegardes chiffrées.

  • Database Migration Service ne migre pas la base de données master SQL Server.

  • Votre instance SQL Server source ne peut pas utiliser le modèle de récupération simple. Pour en savoir plus sur les modèles de récupération, consultez la section Modèles de récupération (SQL Server) dans la documentation Microsoft.

Conventions d'attribution de noms

Cette section décrit les exigences concernant les noms de fichiers pour vos fichiers de sauvegarde complète, différentielle et du journal des transactions.

Conventions d'attribution de noms pour les fichiers de sauvegarde des instances SQL Server sur site

Noms des fichiers de sauvegarde complète

La convention d'attribution de noms pour les fichiers de sauvegarde complète dépend de l'utilisation d'un seul fichier de sauvegarde ou de sa division en plusieurs bandes. Dans les deux scénarios, Database Migration Service exige l'inclusion d'un code temporel d'epoch (exprimé sous forme de code temporel Unix en secondes) qui représente l'heure approximative de réalisation de la sauvegarde complète.

  • Si votre sauvegarde complète est un seul fichier, son nom doit suivre le format db_name.epoch.bak, où:

    • db_name correspond au nom de votre base de données.
    • epoch est un code temporel Unix exprimé en secondes.
    • .bak est l'extension de fichier

    Voici quelques exemples valides :

    • my-business-database.1712649600.bak
    • my-other-database.1712649600.bak
  • Si vous divisez votre sauvegarde complète en bandes distinctes, vous pouvez utiliser n'importe quel nom pour chaque bande, mais elles doivent être importées dans un dossier Cloud Storage dont le nom est un code temporel Unix en secondes:

    Cloud Storage bucket root/
    |- my-business-database/
    |  |- full/
    |  |  |- 1712649600/
    |  |  |  |- mystripe-full_backup_file.bak
    |  |  |  |- otherStripefull-bkp.bak
    |  |- diff/
    |  |  |- ...
    |  |- log/
    |  |  |- ...
    |- my-other-database/
    |  |- full/
    |  |  |- 1715250742/
    |  |  |  |- cool-stripe-file.bak
    |  |  |  |- secondStripeFile.bak
    |  |- diff/
    |  |  |- ...
    |  |- log/
    |  |  |- ...
    

Noms des fichiers de sauvegarde différentielle

La convention d'attribution de noms pour les fichiers de sauvegarde différentielle dépend de l'utilisation d'un seul fichier de sauvegarde ou de sa division en plusieurs bandes. Dans les deux scénarios, Database Migration Service exige l'inclusion d'un code temporel d'epoch (exprimé sous forme de code temporel Unix en secondes) qui représente l'heure approximative de réalisation de la sauvegarde différentielle.

  • Si votre sauvegarde différentielle est un seul fichier, son nom doit suivre le format db_name.epoch.ext, où:

    • db_name correspond au nom de votre base de données.
    • epoch est un code temporel Unix exprimé en secondes.
    • .ext est l'extension de fichier. Les fichiers de sauvegarde différentielle peuvent utiliser les extensions suivantes: .bak, .dif et .diff.

    Voici quelques exemples valides :

    • my-business-database.1731159833.bak
    • my-other-database.1731159833.dif
  • Si vous divisez votre sauvegarde différentielle en bandes distinctes, vous pouvez utiliser n'importe quel nom pour chaque bande, mais elles doivent être importées dans un dossier Cloud Storage dont le nom est un code temporel Unix en secondes:

    Cloud Storage bucket root/
    |- my-business-database/
    |  |- full/
    |  |  |- ...
    |  |- diff/
    |  |  |- 1731159833/
    |  |  |  |- mydiffstripe-diff_backup_file.dif
    |  |  |  |- mySeconddiffstripe-diff_backup_file.bak
    |  |- log/
    |  |  |- ...
    |- my-other-database/
    |  |- full/
    |  |  |- ...
    |  |- diff/
    |  |  |- 1731159833/
    |  |  |  |- firstDiffStripe.bak
    |  |  |  |- other_diff_stripe.diff
    |  |- log/
    |  |  |- ...
    

Noms des fichiers de journal des transactions

Les noms des fichiers journaux de transactions doivent suivre le format db_name.epoch.trn, où:

  • db_name correspond au nom de votre base de données.
  • epoch est un code temporel Unix exprimé en secondes.
  • .bak est l'extension de fichier

Voici quelques exemples valides :

  • my-business-database.1712649600.trn
  • my-other-database.1712649600.trn

Conventions d'attribution de noms de fichiers de sauvegarde pour Amazon RDS

Noms des fichiers de sauvegarde complète

La convention d'attribution de noms pour les fichiers de sauvegarde complète dépend de l'utilisation d'un seul fichier de sauvegarde ou de sa division en plusieurs bandes. Dans les deux scénarios, Database Migration Service exige l'inclusion d'un code temporel d'epoch (exprimé sous forme de code temporel Unix en secondes) qui représente l'heure approximative de réalisation de la sauvegarde complète.

  • Si votre sauvegarde complète est un seul fichier, le nom du fichier doit suivre le format db_id.family_guid.rds_backup_seq_id.epoch.bak, où:

    • db_id est l'identifiant de base de données interne Amazon RDS.
    • family_guid est l'identifiant unique Amazon RDS attribué à la base de données d'origine lors de sa création.
    • rds_backup_seq_id est l'identifiant utilisé par Amazon RDS en interne afin de maintenir un numéro de séquence pour chaque fichier de sauvegarde du journal des transactions.
    • epoch est un code temporel Unix exprimé en secondes.
    • .bak est l'extension de fichier

    Voici quelques exemples valides :

    • 3.CX11CB3D-G2E4-46D9-B462-CE40CDA97E89.22.1712649600.bak
    • 1.FD21CD3F-B5E4-27Z9-B462-CE40CDA97E89.21.1712649600.bak
  • Si vous divisez votre sauvegarde complète en bandes distinctes, vous pouvez utiliser n'importe quel nom pour chaque bande, mais elles doivent être importées dans un dossier Cloud Storage dont le nom est un code temporel Unix en secondes:

    Cloud Storage bucket root/
    |- my-business-database/
    |  |- full/
    |  |  |- 1712649600/
    |  |  |  |- mystripe-full_backup_file.bak
    |  |  |  |- otherStripefull-bkp.bak
    |  |- diff/
    |  |  |- ...
    |  |- log/
    |  |  |- ...
    |- my-other-database/
    |  |- full/
    |  |  |- 1715250742/
    |  |  |  |- cool-stripe-file.bak
    |  |  |  |- secondStripeFile.bak
    |  |- log/
    |  |  |- ...
    

Noms des fichiers de sauvegarde différentielle

La convention d'attribution de noms des fichiers de sauvegarde différentielle dépend de l'utilisation d'un seul fichier de sauvegarde ou de sa division en plusieurs bandes. Dans les deux scénarios, Database Migration Service exige l'inclusion d'un code temporel d'epoch (exprimé sous forme de code temporel Unix en secondes) qui représente l'heure approximative de réalisation de la sauvegarde différentielle.

  • Si votre sauvegarde différentielle est un seul fichier, le nom du fichier doit suivre le format db_id.family_guid.rds_backup_seq_id.epoch.ext, où:

    • db_id est l'identifiant de base de données interne Amazon RDS.
    • family_guid est l'identifiant unique Amazon RDS attribué à la base de données d'origine lors de sa création.
    • rds_backup_seq_id est l'identifiant utilisé par Amazon RDS en interne afin de maintenir un numéro de séquence pour chaque fichier de sauvegarde du journal des transactions.
    • epoch est un code temporel Unix exprimé en secondes.
    • .bak est l'extension de fichier. Les fichiers de sauvegarde différentielle peuvent utiliser les extensions suivantes: .bak, .dif et .diff.

    Voici quelques exemples valides :

    • 3.CX11CB3D-G2E4-46D9-B462-CE40CDA97E89.22.1731159833.bak
    • 1.FD21CD3F-B5E4-27Z9-B462-CE40CDA97E89.21.1731159833.dif
  • Si vous divisez votre sauvegarde complète en bandes distinctes, vous pouvez utiliser n'importe quel nom pour chaque bande, mais elles doivent être importées dans un dossier Cloud Storage dont le nom est un code temporel Unix en secondes:

    Cloud Storage bucket root/
    |- my-business-database/
    |  |- full/
    |  |  |- ...
    |  |- diff/
    |  |  |- 1731159833/
    |  |  |  |- mydiffstripe-diff_backup_file.dif
    |  |  |  |- mySeconddiffstripe-diff_backup_file.bak
    |  |- log/
    |  |  |- ...
    |- my-other-database/
    |  |- full/
    |  |  |- ...
    |  |- diff/
    |  |  |- 1731159833/
    |  |  |  |- firstDiffStripe.bak
    |  |  |  |- other_diff_stripe.diff
    |  |- log/
    |  |  |- ...
    

Noms des fichiers de journal des transactions

Dans Amazon RDS, les fichiers de sauvegarde du journal des transactions sont générés automatiquement et incluent tous les identifiants de base de données nécessaires. Ces noms par défaut incluent le code temporel d'epoch et sont entièrement compatibles avec Database Migration Service. Vous pouvez importer ces fichiers directement dans votre dossier /log/.

Effectuer une sauvegarde complète de votre instance source

Le fichier de sauvegarde complet de la base de données est requis pour la phase de chargement initiale de votre job de migration. Si vous souhaitez chiffrer vos sauvegardes, assurez-vous de stocker la clé de chiffrement afin de pouvoir l'importer ultérieurement dans Cloud Storage lorsque vous créerez la tâche de migration. Consultez la section Utiliser des sauvegardes chiffrées.

Effectuer une sauvegarde complète des instances SQL Server sur site

Vous pouvez effectuer une sauvegarde complète de votre instance SQL Server sur site à l'aide de T-SQL ou de SQL Server Management Studio (SSMS). Procédez comme suit :

  1. Assurez-vous de remplir les conditions suivantes :
  2. Effectuez une sauvegarde complète de votre instance source. Consultez la section Démarrage rapide: sauvegarder et restaurer une base de données SQL Server avec SSMS dans la documentation Microsoft. Vous pouvez également consulter les exemples de commandes suivants:

    Exemple de commande T-SQL pour un seul fichier de sauvegarde complète

    Cet exemple de commande effectue une sauvegarde complète de la base de données AdventureWorks2022. Le fichier de sauvegarde généré utilise la convention d'attribution de noms requise.

    declare @DATABASE varchar(1000);
    SELECT @DATABASE = 'AdventureWorks2022';
    
    declare @unixTimestamp varchar(1000);
    SELECT @unixTimestamp = CAST(DATEDIFF(s, '1970-01-01', GETUTCDATE()) AS VARCHAR(50));
    
    BACKUP DATABASE @DATABASE
    TO DISK = 'X:\SQLServerBackups\full\' + @DATABASE + '.' + @unixTimestamp + '.bak';
    GO

    Exemple de commande T-SQL pour les fichiers de sauvegarde complète en bande

    Cet exemple de commande effectue une sauvegarde complète de la base de données AdventureWorks2022. Le fichier de sauvegarde généré utilise la convention d'attribution de noms requise.

    declare @DATABASE varchar(1000);
    SELECT @DATABASE = 'AdventureWorks2022';
    
    declare @unixTimestamp varchar(1000);
    SELECT @unixTimestamp = CAST(DATEDIFF(s, '1970-01-01', GETUTCDATE()) AS VARCHAR(50));
    
    BACKUP DATABASE @DATABASE
    TO DISK = 'X:\SQLServerBackups\full\' + @DATABASE + '.' + @unixTimestamp + '\stripe1.bak',
    DISK = 'X:\SQLServerBackups\full\' + @DATABASE + '.' + @unixTimestamp + '\stripe2.bak',
    DISK = 'X:\SQLServerBackups\full\' + @DATABASE + '.' + @unixTimestamp + '\stripe3.bak'
    WITH FORMAT,
      MEDIANAME = 'AdventureWorksStripedSet0',
      MEDIADESCRIPTION = 'Striped media set for ' + @DATABASE + ' database';
    GO
  3. Importez votre fichier de sauvegarde dans un bucket Cloud Storage. Consultez Créer et configurer un bucket Cloud Storage.

Effectuer une sauvegarde complète pour Amazon RDS

Pour effectuer une sauvegarde complète de votre source Amazon RDS, procédez comme suit:

  1. Assurez-vous de remplir les conditions suivantes :
  2. Configurez la fonctionnalité de sauvegarde native. Consultez la section Configurer la sauvegarde et la restauration natives dans la documentation Amazon RDS.
  3. Effectuez une sauvegarde complète de votre instance source. Si la taille de votre base de données dépasse 5 To, assurez-vous de diviser la sauvegarde complète en bandes distinctes à l'aide du paramètre @number_of_files. La taille maximale de chaque bande est de 5 To. Consultez la section Sauvegarder une base de données dans la documentation Amazon RDS.

    Vous pouvez également consulter l'exemple de commande suivant:

    Exemple de requête pour effectuer une sauvegarde complète sur Amazon RDS

    Cet exemple de commande effectue une sauvegarde complète de la base de données AdventureWorks2022. Le fichier de sauvegarde généré utilise la convention d'attribution de noms requise.

    declare @DATABASE varchar(1000);
    declare @S3Bucket varchar(1000);
    declare @unixTimestamp varchar(30);
    declare @fileName varchar(1000);
    
    SELECT @S3Bucket = 'dms-sqlserver-exports';
    SELECT @DATABASE = 'AdventureWorks2022';
    
    SELECT @unixTimestamp=CAST(DATEDIFF(s, '1970-01-01', GETUTCDATE()) AS VARCHAR(50));
    SELECT @fileName = ('arn:aws:s3:::' + @S3Bucket + '/' + @DATABASE + '/full/' + @DATABASE '.' + @unixTimestamp + '/' + CAST(database_id AS VARCHAR(10)) + '.' + CAST(family_guid AS VARCHAR(50)) + '.*.' + @unixTimestamp) FROM master.sys.database_recovery_status WHERE DB_NAME(database_id)=@DATABASE;
    
    exec msdb.dbo.rds_backup_database
      @source_db_name=@DATABASE,
      @s3_arn_to_backup_to=@fileName,
      @overwrite_s3_backup_file=1,
      @type='FULL',
      @number_of_files=1;
  4. Importez votre fichier de sauvegarde dans un bucket Cloud Storage. Consultez Créer et configurer un bucket Cloud Storage.

Effectuer la sauvegarde différentielle de votre instance source

Vous pouvez utiliser un fichier de sauvegarde différentiel de la base de données pendant la phase de chargement incrémentiel de votre tâche de migration. Vous pouvez utiliser des fichiers de sauvegarde différentielle chiffrés si vous chiffrez également le fichier de sauvegarde complet et les fichiers journaux des transactions de la même base de données. Tous les fichiers de sauvegarde et de journal des transactions doivent utiliser la même clé de chiffrement par base de données. Consultez la section Utiliser des sauvegardes chiffrées.

Effectuer une sauvegarde différentielle pour les instances SQL Server sur site

Vous pouvez effectuer la sauvegarde différentielle de votre instance SQL Server sur site à l'aide de T-SQL ou de SQL Server Management Studio (SSMS). Procédez comme suit :

  1. Assurez-vous de remplir les conditions suivantes :
  2. Effectuez la sauvegarde différentielle de votre instance source. Consultez la section Créer une sauvegarde différentielle de la base de données dans la documentation Microsoft. Vous pouvez également consulter les exemples de commandes suivants:

    Exemple de commande T-SQL pour un seul fichier de sauvegarde différentielle

    Cet exemple de commande effectue une sauvegarde différentielle de la base de données AdventureWorks2022. Le fichier de sauvegarde généré utilise la convention d'attribution de noms requise.

    declare @DATABASE varchar(1000);
    SELECT @DATABASE = 'AdventureWorks2022';
    
    declare @unixTimestamp varchar(1000);
    SELECT @unixTimestamp = CAST(DATEDIFF(s, '1970-01-01', GETUTCDATE()) AS VARCHAR(50));
    
    BACKUP DATABASE @DATABASE
    TO DISK = 'X:\SQLServerBackups\diff\' + @DATABASE + '.' + @unixTimestamp + '.bak' WITH DIFFERENTIAL;
    GO

    Exemple de commande T-SQL pour les fichiers de sauvegarde différentielle en bande

    Cet exemple de commande effectue une sauvegarde différentielle de la base de données AdventureWorks2022. Le fichier de sauvegarde généré utilise la convention d'attribution de noms requise.

    declare @DATABASE varchar(1000);
    SELECT @DATABASE = 'AdventureWorks2022';
    
    declare @unixTimestamp varchar(1000);
    SELECT @unixTimestamp = CAST(DATEDIFF(s, '1970-01-01', GETUTCDATE()) AS VARCHAR(50));
    
    BACKUP DATABASE @DATABASE
    TO DISK = 'X:\SQLServerBackups\diff\' + @DATABASE + '.' + @unixTimestamp + '\stripe1.bak',
    DISK = 'X:\SQLServerBackups\diff\' + @DATABASE + '.' + @unixTimestamp + '\stripe2.bak',
    DISK = 'X:\SQLServerBackups\diff\' + @DATABASE + '.' + @unixTimestamp + '\stripe3.bak'
    WITH DIFFERENTIAL;
    WITH FORMAT,
      MEDIANAME = 'AdventureWorksStripedSet0',
      MEDIADESCRIPTION = 'Striped differential media set for ' + @DATABASE + ' database';
    GO
  3. Importez votre fichier de sauvegarde dans un bucket Cloud Storage. Consultez Créer et configurer un bucket Cloud Storage.

Effectuer une sauvegarde différentielle pour Amazon RDS

Pour effectuer une sauvegarde différentielle de votre source Amazon RDS, procédez comme suit:

  1. Assurez-vous de remplir les conditions suivantes :
  2. Configurez la fonctionnalité de sauvegarde native. Consultez la section Configurer la sauvegarde et la restauration natives dans la documentation Amazon RDS.
  3. Effectuez la sauvegarde différentielle de votre instance source. Utilisez la procédure stockée rds_backup_database avec le paramètre type défini sur DIFFERENTIAL.

    Si la taille de votre base de données dépasse 5 To, assurez-vous de diviser la sauvegarde complète en bandes distinctes à l'aide du paramètre @number_of_files. La taille maximale de chaque bande est de 5 To.

    Consultez la section Sauvegarder une base de données dans la documentation Amazon RDS. Vous pouvez également consulter l'exemple de commande suivant:

    Exemple de requête pour effectuer une sauvegarde différentielle sur Amazon RDS

    Cet exemple de commande effectue une sauvegarde différentielle de la base de données AdventureWorks2022. Le fichier de sauvegarde généré utilise la convention d'attribution de noms requise.

    declare @DATABASE varchar(1000);
    declare @S3Bucket varchar(1000);
    declare @unixTimestamp varchar(30);
    declare @fileName varchar(1000);
    
    SELECT @S3Bucket = 'dms-sqlserver-exports';
    SELECT @DATABASE = 'AdventureWorks2022';
    
    SELECT @unixTimestamp=CAST(DATEDIFF(s, '1970-01-01', GETUTCDATE()) AS VARCHAR(50));
    SELECT @fileName = ('arn:aws:s3:::' + @S3Bucket + '/' + @DATABASE + '/full/' + @DATABASE '.' + @unixTimestamp + '/' + CAST(database_id AS VARCHAR(10)) + '.' + CAST(family_guid AS VARCHAR(50)) + '.*.' + @unixTimestamp) FROM master.sys.database_recovery_status WHERE DB_NAME(database_id)=@DATABASE;
    
    exec msdb.dbo.rds_backup_database
      @source_db_name=@DATABASE,
      @s3_arn_to_backup_to=@fileName,
      @overwrite_s3_backup_file=1,
      @type='DIFFERENTIAL',
      @number_of_files=1;
  4. Importez votre fichier de sauvegarde dans un bucket Cloud Storage. Consultez Créer et configurer un bucket Cloud Storage.

Effectuer des sauvegardes du journal des transactions

Les fichiers de sauvegarde du journal des transactions contiennent les modifications qui se produisent dans votre base de données source après la sauvegarde complète. Les sauvegardes du journal des transactions sont requises pour la phase de chargement continu de votre tâche de migration. Vous pouvez planifier des exportations et des importations régulières des journaux de transactions pour vous assurer que les mises à jour des données sont répliquées en continu dans votre instance Cloud SQL pour SQL Server de destination. Consultez la section Planifier des sauvegardes du journal des transactions.

Si vous utilisez des fichiers de sauvegarde chiffrés, vous devez également chiffrer les fichiers journaux de transactions pour la même base de données. Consultez la section Utiliser des sauvegardes chiffrées.

Créer une sauvegarde du journal des transactions pour les instances SQL Server sur site

Pour effectuer une sauvegarde du journal des transactions de vos bases de données SQL Server sur site, procédez comme suit:

  1. Assurez-vous de remplir les conditions suivantes :
  2. Exportez les fichiers de journal des transactions à partir de vos bases de données sources SQL Server. Consultez la section Faire une sauvegarde d'un journal de transactions dans la documentation Microsoft. Vous pouvez également consulter l'exemple de commande suivant:

    Exemple de commande T-SQL pour exporter des fichiers de journal des transactions sur un disque local

    Cet exemple de commande crée une sauvegarde du journal des transactions de la base de données AdventureWorks2022 et enregistre le fichier sur le disque local. Le fichier de sauvegarde généré utilise la convention d'attribution de noms requise.

    declare @DATABASE varchar(1000);
    SELECT @DATABASE = 'AdventureWorks2022';
    declare @unixTimestamp varchar(1000);
    SELECT @unixTimestamp = CAST(DATEDIFF(s, '1970-01-01', GETUTCDATE()) AS VARCHAR(50));
    
    BACKUP LOG @DATABASE
    TO DISK = 'X:\SQLServerBackups\log\' + @DATABASE + '.' + @unixTimestamp + '.trn';
  3. Importez les fichiers de sauvegarde du journal des transactions dans le bucket Cloud Storage que vous avez créé pour votre migration.

Effectuer une sauvegarde du journal des transactions pour Amazon RDS

Les sauvegardes du journal des transactions sont créées automatiquement si les sauvegardes automatiques sont activées sur votre instance Amazon RDS. Consultez la section Activer les sauvegardes automatiques dans la documentation Amazon RDS.

Pour utiliser des fichiers de sauvegarde de journaux de transactions pour votre migration, procédez comme suit:

  1. Activez l'accès aux fichiers de journal des transactions dans votre instance Amazon RDS. Consultez Accès aux sauvegardes du journal des transactions avec RDS pour SQL Server. Vous pouvez également consulter l'exemple de commande suivant:

    Exemple d'appel de procédure stockée pour activer l'accès au journal des transactions dans Amazon RDS

    declare @DATABASE varchar(1000);
    declare @S3Bucket varchar(1000);
    declare @targetS3Arn varchar(1000);

    SELECT @S3Bucket = 'dms-sqlserver-exports'; SELECT @DATABASE = 'AdventureWorks2022'; SELECT @targetS3Arn = ('arn:aws:s3:::' + @S3Bucket + '/' + @DATABASE + '/log/');

    USE @DATABASE; exec msdb.dbo.rds_tlog_copy_setup @target_s3_arn=@targetS3Arn;

  2. Copiez les fichiers de sauvegarde des journaux de transactions de votre bucket S3 dans le bucket Cloud Storage que vous avez créé pour votre migration.