Tüm Ürünler
Search
Belge Merkezi

ApsaraDB RDS:Migrate full backups to the cloud

Son Güncelleme:Oct 14, 2026

ApsaraDB RDS for SQL Server, kendi kendinize yönettiğiniz SQL Server veritabanlarını Alibaba Cloud'a geçirmenizi sağlayan bir çözüm sunar. Kendi kendinize yönettiğiniz SQL Server veritabanınızın tam yedekleme verilerini Alibaba Cloud Object Storage Service (OSS) hizmetine yüklemeniz ve ardından bu verileri ApsaraDB RDS konsolundan belirtilen ApsaraDB RDS for SQL Server veritabanına aktarmanız yeterlidir. Bu çözüm; veri yedekleme, veri geçişi ve olağanüstü durum kurtarma gibi senaryolar için uygundur.

Önkoşullar

  • ApsaraDB RDS for SQL Server örneği aşağıdaki gereksinimleri karşılamalıdır:

    • Örneğin kalan depolama alanı, taşınacak veri dosyalarının boyutundan büyük olmalıdır. Depolama alanı yetersizse önceden örneğin depolama alanını yükseltin.

    • Örnek SQL Server 2012 veya sonraki bir sürümü ya da cloud diskli SQL Server 2008 R2 çalıştırıyorsa, örnekte taşınacak veritabanıyla aynı ada sahip bir veritabanının bulunmadığından emin olun.

    • Örnek yüksek performanslı yerel diskli SQL Server 2008 R2 çalıştırıyorsa, örnekte taşınacak veritabanıyla aynı ada sahip bir veritabanının oluşturulduğundan emin olun.

  • Bir RAM kullanıcısı olarak oturum açıyorsanız aşağıdaki gereksinimlerin karşılanması gerekir:

    • RAM kullanıcısına AliyunOSSFullAccess ve AliyunRDSFullAccess izinleri verilmiş olmalıdır. Bir RAM kullanıcısına izin verme hakkında daha fazla bilgi için bkz. RAM kullanarak OSS izinlerini yönetme ve RAM kullanarak ApsaraDB RDS izinlerini yönetme.

    • Alibaba Cloud hesabınız (ana hesap), ApsaraDB RDS resmi hizmet hesabının OSS kaynaklarınıza erişmesine yetki vermiştir.

      Yetkilendirme yöntemini görüntülemek için tıklayın

      1. ApsaraDB RDS örneğinin Restoration sayfasına gidin ve Restore Backup Data from OSS seçeneğine tıklayın.

      2. Import Guide sayfasında, Next düğmesine iki kez tıklayarak 3. Import Data adımına gidin.

        Sayfanın sol alt köşesinde You have authorized the ApsaraDB RDS official service account to access your OSS resources mesajı görünüyorsa yetkilendirme tamamlanmıştır. Aksi takdirde yetkilendirme tamamlanmamıştır. Bu durumda sayfada Authorization URL seçeneğine tıklayarak yetkiyi verin.

        3. Data Import sayfasında aşağıdaki parametreleri yapılandırın:

        • Database Name: Hedef veritabanının adını girin.

        • OSS Bucket: Açılan listeden yüklenen yedekleme dosyasının depolandığı paketi seçin.

        • OSS File List: Yedekleme dosyasını aramak için bir dosya adı öneki girin ve ardından dosyayı seçin.

        • Migration Method: Open Database (Only One Full Backup File) veya Do Not Open Database (Differential Backup or Log Files Available) seçeneklerinden birini seçin.

        • Consistency Check Method: Synchronous DBCC veya Asynchronous DBCC seçeneklerinden birini seçin.

    • Alibaba Cloud hesabınızda (ana hesap) manuel olarak bir izin ilkesi oluşturun ve bu ilkeyi RAM kullanıcısına atayın.

      İlke içeriğini görüntülemek için tıklayın

      {
          "Version": "1",
          "Statement": [
              {
                  "Action": [
                      "ram:GetRole"
                  ],
                  "Resource": "acs:ram:*:*:role/AliyunRDSImportRole",
                  "Effect": "Allow"
              }
          ]
      }

Notlar

  • Geçiş kapsamı: Bu çözüm yalnızca tek bir veritabanının (veritabanı düzeyinde) geçişini destekler. Birden çok veritabanını veya tüm veritabanlarını geçirmek için örnek düzeyindeki geçiş çözümünü kullanın.

  • Sürüm uyumluluğu: Kendi kendinize yönetilen bir SQL Server ortamında oluşturulan bir yedekleme dosyası, daha düşük bir sürüm çalışan bir ApsaraDB RDS for SQL Server örneğine geçirilemez.

  • İzin yönetimi: ApsaraDB RDS hizmet hesabına OSS erişim izinlerini verdikten sonra sistem RAM içinde AliyunRDSImportRole adlı bir rol oluşturur. Bu rolü değiştirmeyin veya silmeyin. Aksi takdirde geçiş görevleri başarısız olur. Rolü yanlışlıkla değiştirir veya silerseniz veri geçişi sihirbazında izinleri yeniden verin.

  • Hesap yönetimi: Geçiş tamamlandıktan sonra orijinal veritabanının hesapları kullanılamaz hale gelir. ApsaraDB RDS konsolunda hesapları yeniden oluşturun.

  • OSS dosya saklama: Geçiş görevi tamamlanmadan önce yedekleme dosyasını OSS'ten silmeyin. Aksi takdirde görev başarısız olur.

  • Yedekleme dosyası gereksinimleri:

    • Dosya adı: Dosya adı !@#$%^&*()_+-= gibi özel karakterler içeremez. Aksi takdirde geçiş başarısız olur.

    • Dosya uzantısı: ApsaraDB RDS tarafından desteklenen yedekleme dosyaları .bak (tam yedekleme), .diff (artımlı yedekleme) ve .trn veya .log (günlük yedekleme) dosyalarıdır. Diğer türdeki dosyalar tanınmaz.

    • Dosya türü: Yalnızca tam yedekleme dosyaları yüklenebilir. Artımlı yedekleme dosyaları ve günlük yedekleme dosyaları desteklenmez.

    • Dosya kaynağı: Kaynak veriler, daha önce indirilmiş olan ApsaraDB RDS for SQL Server tam yedekleme dosyasıysa (varsayılan olarak .zip formatındadır), buluta geçirmeden önce bunu .bak dosyasına ayıklayın.

Faturalandırma

Bu çözümde yalnızca OSS ile ilgili ücretler tahakkuk eder. Daha fazla bilgi için aşağıya bakın:

image

Senaryo

Faturalandırma

Kendi kendinize yönetilen veritabanının yedekleme dosyasını OSS'e yükleme

Ücretsizdir.

Yedekleme dosyasını OSS'te depolama

OSS depolama ücretleri tahakkuk eder. Faturalandırma hakkında daha fazla bilgi için bkz. OSS fiyatlandırması.

Yedekleme dosyasını OSS'ten ApsaraDB RDS'e geçirme

  • Yedekleme dosyasını ApsaraDB RDS'e dahili ağ üzerinden geçirirseniz ücret alınmaz.

  • Yedekleme dosyasını İnternet üzerinden geçirirseniz OSS giden trafik ücretleri tahakkuk eder. Faturalandırma hakkında daha fazla bilgi için bkz. OSS fiyatlandırması.

Hazırlık

Veritabanında allocation errors veya consistency errors olmadığından emin olmak için kendi kendinize yönetilen veritabanı ortamında DBCC CHECKDB ifadesini çalıştırın. Veritabanı normal durumdaysa aşağıdaki sonuç döndürülür:

...
CHECKDB found 0 allocation errors and 0 consistency errors in database 'xxx'.
DBCC execution completed. If DBCC printed error messages, contact your system administrator.

1. Kendi kendinize yönetilen veritabanını yedekleyin

ApsaraDB RDS for SQL Server örneğinizin sürümüne göre bir çözüm seçin.

SQL Server 2012 veya sonrası ya da cloud diskli SQL Server 2008 R2

Not

Kendi kendinize yönetilen veritabanı için tam yedekleme oluşturmadan önce veri yazma işlemlerinin durdurulduğundan emin olun. Yedekleme işlemi sırasında yazılan veriler yedekleme dosyasına dahil edilmez.

  1. Kaynak veritabanının mevcut kurtarma modelini kontrol etmek için aşağıdaki komutu çalıştırın:

    SELECT
        name AS DatabaseName,
        recovery_model_desc AS RecoveryModel,
        state_desc AS State
    FROM sys.databases
    ORDER BY name;

    ApsaraDB RDS'e geçiş için üretim yedeklemesi oluşturmadan önce veritabanının kurtarma modelini FULL olarak değiştirin:

    ALTER DATABASE [db_simple] SET RECOVERY FULL WITH NO_WAIT;
  2. yedekleme betiğini indirin ve ardından yedekleme betiğini SQL Server Management Studio (SSMS) içinde açın.

  3. Betiğin SELECT ifadesindeki aşağıdaki parametreleri değiştirin. Parametreler, betikte YOU HAVE TO INIT PUBLIC VARIABLES HERE satırının altında yer alır.

    Parametre

    Açıklama

    @backup_databases_list

    Yedeklemek istediğiniz veritabanları. Birden çok veritabanını noktalı virgül (;) veya virgül (,) ile ayırın.

    @backup_type

    Yedekleme türü. Geçerli değerler:

    • FULL: tam yedekleme.

    • DIFF: artımlı yedekleme.

    • LOG: günlük yedekleme.

    @backup_folder

    Yedekleme dosyalarının depolandığı yerel dizin. Dizin yoksa otomatik olarak oluşturulur.

    @is_run

    Yedeklemenin yapılıp yapılmayacağını belirtir. Geçerli değerler:

    • 1: yedeklemeyi gerçekleştirir.

    • 0: yalnızca kontrol gerçekleştirir ve yedekleme yapmaz.

  4. Yedekleme betiğini çalıştırın.

Yüksek performanslı yerel diskli SQL Server 2008 R2

  1. Microsoft SQL Server Management Studio (SSMS) uygulamasını açın.

  2. Geçirmek istediğiniz veritabanında oturum açın.

  3. Kaynak veritabanının mevcut kurtarma modelini kontrol etmek için aşağıdaki komutu çalıştırın:

    USE master;
    GO
    SELECT name, CASE recovery_model
    WHEN 1 THEN 'FULL'
    WHEN 2 THEN 'BULK_LOGGED'
    WHEN 3 THEN 'SIMPLE' END model FROM sys.databases
    WHERE name NOT IN ('master','tempdb','model','msdb');
    GO
    • Sorgu sonucundaki model değeri FULL değilse 4. Adımı uygulayın.

    • Sorgu sonucundaki model değeri FULL ise 5. Adımı uygulayın.

  4. Kaynak veritabanının kurtarma modelini FULL olarak ayarlamak için aşağıdaki komutu çalıştırın:

    ALTER DATABASE [dbname] SET RECOVERY FULL;
    GO
    ALTER DATABASE [dbname] SET AUTO_CLOSE OFF;
    GO
    Önemli

    Kurtarma modeli FULL olarak ayarlandıktan sonra daha fazla SQL Server günlüğü oluşturulur. Yeterli disk alanı bulunduğundan emin olun.

  5. Kaynak veritabanını yedeklemek için aşağıdaki komutu çalıştırın.

    Bu örnekte dbtest veritabanı backup.bak dosyasına yedeklenmektedir.

    USE master;
    GO
    BACKUP DATABASE [dbtest] to disk ='d:\backup\backup.bak' WITH COMPRESSION,INIT;
    GO
  6. Yedekleme dosyasının bütünlüğünü doğrulamak için aşağıdaki komutu çalıştırın:

    USE master
     GO
     RESTORE FILELISTONLY 
       FROM DISK = N'D:\backup\backup.bak';
    Önemli
    • Bir sonuç kümesi döndürülürse yedekleme dosyası geçerlidir.

    • Bir hata bildirilirse yedeklemeyi tekrar gerçekleştirin.

  7. İsteğe bağlı: Veritabanının kurtarma modelini geri yüklemek için aşağıdaki komutu çalıştırın:

    Önemli

    Veritabanının kurtarma modeli zaten FULL ise bu adımı atlayın.

    ALTER DATABASE [dbname] SET RECOVERY SIMPLE;
    GO

2. Yedekleme dosyasını OSS'e yükleyin

ApsaraDB RDS for SQL Server örneğinizin sürümüne göre bir çözüm seçin.

SQL Server 2012 veya sonrası ya da cloud diskli SQL Server 2008 R2

  1. Yedekleme dosyalarını OSS'e yüklemeden önce OSS'te bir paket oluşturmanız gerekir.

    • OSS'te zaten bir paket varsa paketin aşağıdaki gereksinimleri karşıladığından emin olun:

    • OSS'te paket yoksa önce bir paket oluşturun. (OSS'in etkinleştirildiğinden emin olun.)

      1. OSS konsolunda oturum açın, Buckets seçeneğine tıklayın ve ardından Create bucket seçeneğine tıklayın.

      2. Aşağıdaki anahtar parametreleri yapılandırın ve diğer parametreler için varsayılan değerleri koruyun.

        Önemli
        • Bu paket yalnızca bu veri geçişi , bu nedenle yalnızca anahtar parametreleri yapılandırmanız gerekir. Geçiş tamamlandıktan sonra veri sızıntılarını ve ek ücretleri önlemek için paketi zamanında silin.

        • Paketi oluştururken sunucu tarafı şifrelemeyi etkinleştirmeyin.

        Parametre

        Açıklama

        Örnek

        Bucket Name

        Paketin adı. Ad globally benzersiz olmalı ve paket oluşturulduktan sonra değiştirilememelidir.

        Adlandırma kuralları:

        • Ad yalnızca küçük harfler, rakamlar ve tire (-) içerebilir.

        • Ad küçük harf veya rakamla başlamalı ve bitmelidir.

        • Ad 3 ila 63 karakter uzunluğunda olmalıdır.

        migratetest

        Region

        Paketin bulunduğu bölge. Verileri bir ECS örneğinden dahili ağ üzerinden pakete yükler ve verileri ApsaraDB RDS örneğine dahili ağ üzerinden geri yüklerseniz ECS örneğinin, paketin ve ApsaraDB RDS örneğinin aynı bölgede bulunduğundan emin olun.

        China (Hangzhou)

        Storage Type

        Standard seçeneğini seçin. Bu konuda açıklanan geçiş işlemi diğer depolama sınıflarındaki paketleri desteklemez.

        Standard

  2. Yedekleme dosyasını OSS'e yükleyin.

    Kendi kendinize yönetilen veritabanının yedeklemesi tamamlandıktan sonra yedekleme dosyasını ApsaraDB RDS örneğinizle aynı bölgede bulunan bir OSS paketine yükleyin. Paket ve ApsaraDB RDS örneği aynı bölgedeyse paket ile örnek arasında dahili ağ üzerinden iletişim kurulabilir. Bu durumda İnternet trafiği ücreti alınmaz ve veriler daha hızlı bir hızda yüklenir. Aşağıdaki yöntemlerden birini kullanabilirsiniz:

    ossbrowser kullanarak dosya yükleme (önerilir)

    1. ossbrowser uygulamasını indirin.

    2. Bu örnekte Windows x64 kullanılmaktadır. İndirilen oss-browser-win32-x64.zip paketini ayıklayın ve ardından oss-browser.exe uygulamasına çift tıklayın.

    3. Oturum açma yöntemi olarak AK seçeneğini seçin, Access Key ID ve Access Key Secret parametrelerini yapılandırın, diğer parametreler için varsayılan değerleri koruyun ve ardından Log On seçeneğine tıklayın.

      Not

      Veri güvenliğini sağlamak amacıyla kimlik doğrulama için bir AccessKey kullanılır. AccessKey bilgilerinizi gizli tutun.

    4. Hedef pakete gitmek için ilgili pakete tıklayın.

    5. Upload icon simgesine tıklayın, yüklemek istediğiniz yedekleme dosyasını seçin ve ardından Aç'a tıklayın. Yerel dosya OSS'e yüklenir.

    OSS konsolunu kullanarak dosya yükleme

    Not

    Yedekleme dosyasının boyutu 5 GB'den küçükse dosyayı doğrudan OSS konsolundan yükleyin.

    1. OSS konsolunda oturum açın.

    2. Buckets seçeneğine tıklayın ve ardından hedef paketin adına tıklayın.

    3. Files bölümünde Upload File seçeneğine tıklayın.

    4. Yedekleme dosyasını Files to Upload bölümüne sürükleyin veya Select Files seçeneğine tıklayıp yüklemek istediğiniz yedekleme dosyasını seçin.

    5. Sayfanın alt kısmındaki Upload File seçeneğine tıklayın. Yerel yedekleme dosyası OSS'e yüklenir.

    OSS API'sini kullanarak dosya yükleme (Python 3 projesi örneği)

    Not

    Yedekleme dosyasının boyutu 5 GB'den büyükse OSS API çağrıları yaparak yedekleme dosyasını çok parçalı yükleme yöntemiyle OSS paketine yükleyin.

    # -*- coding: utf-8 -*-
    """
    Alibaba Cloud OSS Python SDK v2
    Dependency: pip install alibabacloud-oss-v2
    """
    
    import os
    import sys
    from pathlib import Path
    import alibabacloud_oss_v2 as oss
    from alibabacloud_oss_v2 import exceptions as oss_ex
    
    def get_client_from_env(region: str, endpoint: str | None = None) -> oss.Client:
        """
        Create a v2 client from environment variables.
        - Prioritize using Region (recommended), but also support custom Endpoints (optional).
        - Compatible with both AK and STS:
            * AK: Requires OSS_ACCESS_KEY_ID / OSS_ACCESS_KEY_SECRET
            * STS: Also requires OSS_SESSION_TOKEN (compatible with the old variable OSS_SECURITY_TOKEN)
        """
        # Compatibility: If the user uses the old variable OSS_SECURITY_TOKEN, map it to the v2 expected OSS_SESSION_TOKEN
        sec_token_legacy = os.getenv("OSS_SECURITY_TOKEN")
        if sec_token_legacy and not os.getenv("OSS_SESSION_TOKEN"):
            os.environ["OSS_SESSION_TOKEN"] = sec_token_legacy
    
        ak = os.getenv("OSS_ACCESS_KEY_ID")
        sk = os.getenv("OSS_ACCESS_KEY_SECRET")
        st = os.getenv("OSS_SESSION_TOKEN")  # STS Token (optional)
    
        if not (ak and sk):
            raise ValueError("No valid AK found. Set the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables. "
                             "If using STS, also set OSS_SESSION_TOKEN (or the old name OSS_SECURITY_TOKEN).")
    
        # Indicate the type of credential used
        if st:
            print("STS Token (OSS_SESSION_TOKEN) detected. Using STS credentials.")
        else:
            print("No STS Token detected. Using AccessKey (AK) credentials.")
    
        credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()
        cfg = oss.config.load_default()
        cfg.credentials_provider = credentials_provider
    
        # Basic network configuration
        cfg.region = region  # Example: 'cn-hangzhou'
        if endpoint:
            # Optional: Custom Endpoint (e.g., internal network, accelerated, dedicated domain)
            cfg.endpoint = endpoint
    
        # You can also add other configurations here, such as: cfg.use_accelerate_endpoint = True
        return oss.Client(cfg)
    
    def resumable_upload_file_v2(
        client: oss.Client,
        bucket_name: str,
        object_key: str,
        file_path: str,
        part_size: int = 1 * 1024 * 1024,
        parallel_num: int = 4,
        checkpoint_dir: str | None = None,
    ):
        """
        Implement concurrent multipart upload with resumable upload.
    
        :param client: Initialized oss.Client
        :param bucket_name: Destination bucket name
        :param object_key: Destination object key (without bucket name)
        :param file_path: Full path of the local file
        :param part_size: Part size in bytes, default is 1 MB
        :param parallel_num: Number of concurrent upload threads, default is 4
        :param checkpoint_dir: Directory to store breakpoint information; if None, resumable upload is disabled
        """
        file_path = str(file_path)
        if not Path(file_path).exists():
            raise FileNotFoundError(f"Error: Local file not found. Check the file_path configuration: {file_path}")
    
        # Construct the Uploader; enable resumable upload based on whether checkpoint_dir is provided
        if checkpoint_dir:
            uploader = client.uploader(
                enable_checkpoint=True,
                checkpoint_dir=checkpoint_dir,
                part_size=part_size,
                parallel_num=parallel_num,
            )
        else:
            uploader = client.uploader(
                part_size=part_size,
                parallel_num=parallel_num,
            )
    
        print(f"Starting to upload file: {file_path}")
        print(f"Destination Bucket: {bucket_name}")
        print(f"Destination Object: {object_key}")
        print(f"Part size: {part_size} bytes, Concurrency: {parallel_num}")
        if checkpoint_dir:
            print(f"Resumable upload: Enabled (checkpoint_dir={checkpoint_dir})")
        else:
            print("Resumable upload: Disabled (set checkpoint_dir to enable)")
    
        # Execute the upload (Uploader automatically chooses between multi/single part concurrent upload based on size)
        result = uploader.upload_file(
            oss.PutObjectRequest(bucket=bucket_name, key=object_key),
            filepath=file_path,
        )
    
        print("-" * 30)
        print("File uploaded successfully!")
        print(f"HTTP Status: {result.status_code}")
        print(f"ETag: {result.etag}")
        print(f"Request ID: {result.request_id}")
        # CRC-64 checksum; v2 enables data validation by default
        print(f"CRC64: {result.hash_crc64}")
        print("-" * 30)
    
    def main():
        # Before running the code example, make sure you have set the corresponding environment variables.
        # macOS/Linux:
        #   AK method:
        #     export OSS_ACCESS_KEY_ID=YOUR_AK_ID
        #     export OSS_ACCESS_KEY_SECRET=YOUR_AK_SECRET
        #   STS method:
        #     export OSS_ACCESS_KEY_ID=YOUR_STS_ID
        #     export OSS_ACCESS_KEY_SECRET=YOUR_STS_SECRET
        #     export OSS_SECURITY_TOKEN=YOUR_STS_TOKEN
        #
        # Windows:
        #   Powershell: $env:OSS_ACCESS_KEY_ID="YOUR_AK_ID"
        #   cmd: set OSS_ACCESS_KEY_ID=YOUR_AK_ID
    
        # ===================== Parameters (modify as needed) =====================
        # Region example: 'cn-hangzhou'; we recommend using Region first
        region = "cn-hangzhou"
    
        # Optional: Custom Endpoint (for internal network, dedicated domain, accelerated domain name, etc.)
        # Example: 'https://oss-cn-hangzhou.aliyuncs.com'
        endpoint = 'https://oss-cn-hangzhou.aliyuncs.com'
    
        # Bucket and Object
        bucket_name = "examplebucket"
        object_key = "test.bak"
    
        # Full path of the local file to upload.
        # Windows example: r'D:\localpath\examplefile.txt'  (note the r at the beginning)
        # macOS/Linux example: '/Users/test/examplefile.txt'
        file_path = r"D:\oss\test.bak"
    
        # Sharding and concurrency
        part_size = 1 * 1024 * 1024  # Default is 1 MB; OSS requires a minimum part size of 100 KB
        parallel_num = 4
    
        # Resumable upload directory (pass None to disable; we recommend specifying a writable directory)
        checkpoint_dir = str(Path.cwd() / ".oss_checkpoints")
        # =================== End of parameters ===================
    
        print("Script execution starts...")
        try:
            client = get_client_from_env(region=region, endpoint=endpoint)
            # If resumable upload is enabled, make sure the directory exists
            if checkpoint_dir:
                Path(checkpoint_dir).mkdir(parents=True, exist_ok=True)
    
            resumable_upload_file_v2(
                client=client,
                bucket_name=bucket_name,
                object_key=object_key,
                file_path=file_path,
                part_size=part_size,
                parallel_num=parallel_num,
                checkpoint_dir=checkpoint_dir,
            )
        except FileNotFoundError as e:
            print(e)
        except oss_ex.ServiceError as e:
            # Error returned by the OSS server
            print("\nAn OSS server-side error occurred.")
            print(f"HTTP Status: {getattr(e, 'status_code', 'N/A')}")
            print(f"Error Code: {getattr(e, 'code', 'N/A')}")
            print(f"Message: {getattr(e, 'message', 'N/A')}")
            print(f"Request ID: {getattr(e, 'request_id', 'N/A')}")
            print(f"Endpoint: {getattr(e, 'request_target', 'N/A')}")
        except oss_ex.BaseError as e:
            # SDK local/serialization/deserialization/credential errors
            print("\nAn OSS SDK client-side error occurred.")
            print(str(e))
        except Exception as e:
            print(f"\nAn unknown error occurred: {e}")
    
    if __name__ == "__main__":
        main()

Yüksek performanslı yerel diskli SQL Server 2008 R2

  1. Yedekleme dosyalarını OSS'e yüklemeden önce OSS'te bir paket oluşturmanız gerekir.

    • OSS'te zaten bir paket varsa paketin aşağıdaki gereksinimleri karşıladığından emin olun:

    • OSS'te paket yoksa önce bir paket oluşturun. (OSS'in etkinleştirildiğinden emin olun.)

      1. OSS konsolunda oturum açın, Buckets seçeneğine tıklayın ve ardından Create bucket seçeneğine tıklayın.

      2. Aşağıdaki anahtar parametreleri yapılandırın ve diğer parametreler için varsayılan değerleri koruyun.

        Önemli
        • Bu paket yalnızca bu veri geçişi , bu nedenle yalnızca anahtar parametreleri yapılandırmanız gerekir. Geçiş tamamlandıktan sonra veri sızıntılarını ve ek ücretleri önlemek için paketi zamanında silin.

        • Paketi oluştururken sunucu tarafı şifrelemeyi etkinleştirmeyin.

        Parametre

        Açıklama

        Örnek

        Bucket Name

        Paketin adı. Ad globally benzersiz olmalı ve paket oluşturulduktan sonra değiştirilememelidir.

        Adlandırma kuralları:

        • Ad yalnızca küçük harfler, rakamlar ve tire (-) içerebilir.

        • Ad küçük harf veya rakamla başlamalı ve bitmelidir.

        • Ad 3 ila 63 karakter uzunluğunda olmalıdır.

        migratetest

        Region

        Paketin bulunduğu bölge. Verileri bir ECS örneğinden dahili ağ üzerinden pakete yükler ve verileri ApsaraDB RDS örneğine dahili ağ üzerinden geri yüklerseniz ECS örneğinin, paketin ve ApsaraDB RDS örneğinin aynı bölgede bulunduğundan emin olun.

        China (Hangzhou)

        Storage Type

        Standard seçeneğini seçin. Bu konuda açıklanan geçiş işlemi diğer depolama sınıflarındaki paketleri desteklemez.

        Standard

  2. Yedekleme dosyasını OSS'e yükleyin.

    Kendi kendinize yönetilen veritabanının yedeklemesi tamamlandıktan sonra yedekleme dosyasını ApsaraDB RDS örneğinizle aynı bölgede bulunan bir OSS paketine yükleyin. Paket ve ApsaraDB RDS örneği aynı bölgedeyse paket ile örnek arasında dahili ağ üzerinden iletişim kurulabilir. Bu durumda İnternet trafiği ücreti alınmaz ve veriler daha hızlı bir hızda yüklenir. Aşağıdaki yöntemlerden birini kullanabilirsiniz:

    ossbrowser kullanarak dosya yükleme (önerilir)

    1. ossbrowser uygulamasını indirin.

    2. Bu örnekte Windows x64 kullanılmaktadır. İndirilen oss-browser-win32-x64.zip paketini ayıklayın ve ardından oss-browser.exe uygulamasına çift tıklayın.

    3. Oturum açma yöntemi olarak AK seçeneğini seçin, Access Key ID ve Access Key Secret parametrelerini yapılandırın, diğer parametreler için varsayılan değerleri koruyun ve ardından Log On seçeneğine tıklayın.

      Not

      Veri güvenliğini sağlamak amacıyla kimlik doğrulama için bir AccessKey kullanılır. AccessKey bilgilerinizi gizli tutun.

    4. Hedef pakete gitmek için ilgili pakete tıklayın.

    5. Upload icon simgesine tıklayın, yüklemek istediğiniz yedekleme dosyasını seçin ve ardından Aç'a tıklayın. Yerel dosya OSS'e yüklenir.

    OSS konsolunu kullanarak dosya yükleme

    Not

    Yedekleme dosyasının boyutu 5 GB'den küçükse dosyayı doğrudan OSS konsolundan yükleyin.

    1. OSS konsolunda oturum açın.

    2. Buckets seçeneğine tıklayın ve ardından hedef paketin adına tıklayın.

    3. Files bölümünde Upload File seçeneğine tıklayın.

    4. Yedekleme dosyasını Files to Upload bölümüne sürükleyin veya Select Files seçeneğine tıklayıp yüklemek istediğiniz yedekleme dosyasını seçin.

    5. Sayfanın alt kısmındaki Upload File seçeneğine tıklayın. Yerel yedekleme dosyası OSS'e yüklenir.

    OSS API'sini kullanarak dosya yükleme (Python 3 projesi örneği)

    Not

    Yedekleme dosyasının boyutu 5 GB'den büyükse OSS API çağrıları yaparak yedekleme dosyasını çok parçalı yükleme yöntemiyle OSS paketine yükleyin.

    # -*- coding: utf-8 -*-
    """
    Alibaba Cloud OSS Python SDK v2
    Dependency: pip install alibabacloud-oss-v2
    """
    
    import os
    import sys
    from pathlib import Path
    import alibabacloud_oss_v2 as oss
    from alibabacloud_oss_v2 import exceptions as oss_ex
    
    def get_client_from_env(region: str, endpoint: str | None = None) -> oss.Client:
        """
        Create a v2 client from environment variables.
        - Prioritize using Region (recommended), but also support custom Endpoints (optional).
        - Compatible with both AK and STS:
            * AK: Requires OSS_ACCESS_KEY_ID / OSS_ACCESS_KEY_SECRET
            * STS: Also requires OSS_SESSION_TOKEN (compatible with the old variable OSS_SECURITY_TOKEN)
        """
        # Compatibility: If the user uses the old variable OSS_SECURITY_TOKEN, map it to the v2 expected OSS_SESSION_TOKEN
        sec_token_legacy = os.getenv("OSS_SECURITY_TOKEN")
        if sec_token_legacy and not os.getenv("OSS_SESSION_TOKEN"):
            os.environ["OSS_SESSION_TOKEN"] = sec_token_legacy
    
        ak = os.getenv("OSS_ACCESS_KEY_ID")
        sk = os.getenv("OSS_ACCESS_KEY_SECRET")
        st = os.getenv("OSS_SESSION_TOKEN")  # STS Token (optional)
    
        if not (ak and sk):
            raise ValueError("No valid AK found. Set the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables. "
                             "If using STS, also set OSS_SESSION_TOKEN (or the old name OSS_SECURITY_TOKEN).")
    
        # Indicate the type of credential used
        if st:
            print("STS Token (OSS_SESSION_TOKEN) detected. Using STS credentials.")
        else:
            print("No STS Token detected. Using AccessKey (AK) credentials.")
    
        credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()
        cfg = oss.config.load_default()
        cfg.credentials_provider = credentials_provider
    
        # Basic network configuration
        cfg.region = region  # Example: 'cn-hangzhou'
        if endpoint:
            # Optional: Custom Endpoint (e.g., internal network, accelerated, dedicated domain)
            cfg.endpoint = endpoint
    
        # You can also add other configurations here, such as: cfg.use_accelerate_endpoint = True
        return oss.Client(cfg)
    
    def resumable_upload_file_v2(
        client: oss.Client,
        bucket_name: str,
        object_key: str,
        file_path: str,
        part_size: int = 1 * 1024 * 1024,
        parallel_num: int = 4,
        checkpoint_dir: str | None = None,
    ):
        """
        Implement concurrent multipart upload with resumable upload.
    
        :param client: Initialized oss.Client
        :param bucket_name: Destination bucket name
        :param object_key: Destination object key (without bucket name)
        :param file_path: Full path of the local file
        :param part_size: Part size in bytes, default is 1 MB
        :param parallel_num: Number of concurrent upload threads, default is 4
        :param checkpoint_dir: Directory to store breakpoint information; if None, resumable upload is disabled
        """
        file_path = str(file_path)
        if not Path(file_path).exists():
            raise FileNotFoundError(f"Error: Local file not found. Check the file_path configuration: {file_path}")
    
        # Construct the Uploader; enable resumable upload based on whether checkpoint_dir is provided
        if checkpoint_dir:
            uploader = client.uploader(
                enable_checkpoint=True,
                checkpoint_dir=checkpoint_dir,
                part_size=part_size,
                parallel_num=parallel_num,
            )
        else:
            uploader = client.uploader(
                part_size=part_size,
                parallel_num=parallel_num,
            )
    
        print(f"Starting to upload file: {file_path}")
        print(f"Destination Bucket: {bucket_name}")
        print(f"Destination Object: {object_key}")
        print(f"Part size: {part_size} bytes, Concurrency: {parallel_num}")
        if checkpoint_dir:
            print(f"Resumable upload: Enabled (checkpoint_dir={checkpoint_dir})")
        else:
            print("Resumable upload: Disabled (set checkpoint_dir to enable)")
    
        # Execute the upload (Uploader automatically chooses between multi/single part concurrent upload based on size)
        result = uploader.upload_file(
            oss.PutObjectRequest(bucket=bucket_name, key=object_key),
            filepath=file_path,
        )
    
        print("-" * 30)
        print("File uploaded successfully!")
        print(f"HTTP Status: {result.status_code}")
        print(f"ETag: {result.etag}")
        print(f"Request ID: {result.request_id}")
        # CRC-64 checksum; v2 enables data validation by default
        print(f"CRC64: {result.hash_crc64}")
        print("-" * 30)
    
    def main():
        # Before running the code example, make sure you have set the corresponding environment variables.
        # macOS/Linux:
        #   AK method:
        #     export OSS_ACCESS_KEY_ID=YOUR_AK_ID
        #     export OSS_ACCESS_KEY_SECRET=YOUR_AK_SECRET
        #   STS method:
        #     export OSS_ACCESS_KEY_ID=YOUR_STS_ID
        #     export OSS_ACCESS_KEY_SECRET=YOUR_STS_SECRET
        #     export OSS_SECURITY_TOKEN=YOUR_STS_TOKEN
        #
        # Windows:
        #   Powershell: $env:OSS_ACCESS_KEY_ID="YOUR_AK_ID"
        #   cmd: set OSS_ACCESS_KEY_ID=YOUR_AK_ID
    
        # ===================== Parameters (modify as needed) =====================
        # Region example: 'cn-hangzhou'; we recommend using Region first
        region = "cn-hangzhou"
    
        # Optional: Custom Endpoint (for internal network, dedicated domain, accelerated domain name, etc.)
        # Example: 'https://oss-cn-hangzhou.aliyuncs.com'
        endpoint = 'https://oss-cn-hangzhou.aliyuncs.com'
    
        # Bucket and Object
        bucket_name = "examplebucket"
        object_key = "test.bak"
    
        # Full path of the local file to upload.
        # Windows example: r'D:\localpath\examplefile.txt'  (note the r at the beginning)
        # macOS/Linux example: '/Users/test/examplefile.txt'
        file_path = r"D:\oss\test.bak"
    
        # Sharding and concurrency
        part_size = 1 * 1024 * 1024  # Default is 1 MB; OSS requires a minimum part size of 100 KB
        parallel_num = 4
    
        # Resumable upload directory (pass None to disable; we recommend specifying a writable directory)
        checkpoint_dir = str(Path.cwd() / ".oss_checkpoints")
        # =================== End of parameters ===================
    
        print("Script execution starts...")
        try:
            client = get_client_from_env(region=region, endpoint=endpoint)
            # If resumable upload is enabled, make sure the directory exists
            if checkpoint_dir:
                Path(checkpoint_dir).mkdir(parents=True, exist_ok=True)
    
            resumable_upload_file_v2(
                client=client,
                bucket_name=bucket_name,
                object_key=object_key,
                file_path=file_path,
                part_size=part_size,
                parallel_num=parallel_num,
                checkpoint_dir=checkpoint_dir,
            )
        except FileNotFoundError as e:
            print(e)
        except oss_ex.ServiceError as e:
            # Error returned by the OSS server
            print("\nAn OSS server-side error occurred.")
            print(f"HTTP Status: {getattr(e, 'status_code', 'N/A')}")
            print(f"Error Code: {getattr(e, 'code', 'N/A')}")
            print(f"Message: {getattr(e, 'message', 'N/A')}")
            print(f"Request ID: {getattr(e, 'request_id', 'N/A')}")
            print(f"Endpoint: {getattr(e, 'request_target', 'N/A')}")
        except oss_ex.BaseError as e:
            # SDK local/serialization/deserialization/credential errors
            print("\nAn OSS SDK client-side error occurred.")
            print(str(e))
        except Exception as e:
            print(f"\nAn unknown error occurred: {e}")
    
    if __name__ == "__main__":
        main()
  3. Yedekleme dosyası URL'sinin geçerlilik süresini ayarlayın ve yedekleme dosyasının URL'sini edinin.

    1. OSS konsolunda oturum açın.

    2. Buckets seçeneğine tıklayın ve ardından hedef paketin adına tıklayın.

    3. Sol gezinme bölmesinde File Management > Files seçeneklerini seçin.

    4. Hedef veritabanı yedekleme dosyasının İşlemler sütununda Details seçeneğine tıklayın ve ardından açılan panelde Expiration (Seconds) değerini 28800 saniye (8 saat) olarak değiştirin.

      Önemli

      Yedekleme dosyasını OSS'ten ApsaraDB RDS'e geçirirken yedekleme dosyasının URL'si gerekir. Geçiş tamamlanmadan önce URL'nin süresi dolarsa veri geçişi başarısız olur.

    5. Yedekleme dosyasının URL'sini edinmek için Copy Object URL seçeneğine tıklayın.

    6. Yedekleme dosyasının URL'sini değiştirin.

      Edindiğiniz URL, varsayılan olarak dosyanın genel URL'sidir. Verileri dahili ağ üzerinden geçirmek için dosya URL'sindeki uç noktayı dahili uç nokta ile değiştirin.

      Örneğin, yedekleme dosyasının URL'si http://rdstest.oss-cn-shanghai.aliyuncs.com/testmigraterds_20170906143807_FULL.bak?Expires=15141****&OSSAccessKeyId=TMP**** ise URL'deki oss-cn-shanghai.aliyuncs.com ifadesini oss-cn-shanghai-internal.aliyuncs.com ile değiştirin.

      Önemli

      Dahili uç noktalar ağ türüne ve bölgeye göre değişir. Daha fazla bilgi için bkz. Bölgeler ve uç noktalarBölgeler ve uç noktalar.

3. OSS yedekleme verilerini ApsaraDB RDS'e aktarın

ApsaraDB RDS for SQL Server örneğinizin sürümüne göre bir çözüm seçin.

SQL Server 2012 veya sonrası ya da cloud diskli SQL Server 2008 R2

  1. Instances sayfasına gidin. Üst gezinme çubuğunda RDS örneğinin bulunduğu bölgeyi seçin. Ardından RDS örneğini bulun ve örneğin Kimliğine tıklayın.

  2. Sol gezinme bölmesinde Restoration seçeneğini belirleyin.

  3. Sayfanın üst kısmındaki Restore Backup Data from OSS seçeneğine tıklayın.

  4. Import Guide sayfasında, veri aktarma adımına gitmek için Next düğmesine iki kez tıklayın.

    Not
    • OSS yedekleme verisi geçiş özelliğini ilk kez kullanırken ApsaraDB RDS hizmet hesabının OSS'e erişmesine yetki vermeniz gerekir. Authorization URL seçeneğine tıklayarak yetkilendirmeyi onaylayın. Aksi takdirde izin sorunu nedeniyle OSS Bucket açılır listesi boş görünür.

    • Hedef dosya sayfada görüntülenmiyorsa OSS'teki yedekleme dosyasının dosya uzantısının gereksinimleri karşılayıp karşılamadığını kontrol edin (uzantı gereksinimlerini bu konudaki Notlar bölümünde görebilirsiniz) ve ApsaraDB RDS örneği ile OSS paketinin aynı bölgede bulunduğundan emin olun.

  5. Aşağıdaki parametreleri yapılandırın.

    Parametre

    Açıklama

    Database Name

    Yedekleme verilerinin hedef ApsaraDB RDS örneğinde aktarılacağı veritabanının adı. Ad, resmi SQL Server adlandırma kurallarına uygun olmalıdır.

    Önemli
    • Verileri buluta geçirmeden önce hedef örnekte yedekleme dosyasından geri yüklenecek veritabanıyla aynı ada sahip bir veritabanının ve aynı ada sahip eklenmemiş bir veritabanı dosyasının bulunmadığından emin olun. Her ikisi de yoksa yedekleme kümesindeki hedef veritabanı adıyla aynı ada sahip veritabanı dosyasını kullanarak veritabanını geri yükleyebilirsiniz.

    • Hedef örnekte yedekleme dosyasından geri yüklenecek veritabanıyla aynı ada sahip bir veritabanı veya aynı ada sahip eklenmemiş bir veritabanı dosyası varsa geçiş başarısız olur.

    OSS Bucket

    Yedekleme dosyasının depolandığı OSS paketini seçin.

    OSS File

    Yedekleme dosyalarını dosya adı önekiyle aramak için sağ taraftaki Search icon simgesine tıklayın. Her dosyanın dosya adı, dosya boyutu ve güncelleme zamanı görüntülenir. Geçirmek istediğiniz yedekleme dosyasını seçin.

    Cloud Migration Method

    • Immediate Access (Only One Full Backup): tam geçiş. Bu seçenek yalnızca bir tam yedekleme dosyasının geçiş için kullanıldığı senaryolar için uygundur. Bu örnekte Immediate Access (Only One Full Backup) seçeneği seçilmiştir. Bu durumda CreateMigrateTask işlemi için BackupMode = FULL ve IsOnlineDB = True parametreleri kullanılır.

    • Access Pending (Incremental Backup or Log Files): artımlı geçiş. Bu seçenek, bir tam yedekleme dosyasının günlük yedekleme dosyaları veya artımlı yedekleme dosyalarıyla birlikte geçiş için kullanıldığı senaryolar için uygundur. Bu durumda CreateMigrateTask işlemi için BackupMode = UPDF ve IsOnlineDB = False parametreleri kullanılır.

    Consistency Check Mode

    • Asynchronous DBCC: Sistem, veritabanı açıldığında DBCC CHECKDB çalıştırmaz. Bunun yerine sistem, veritabanı açma görevi tamamlandıktan sonra DBCC CHECKDB işlemini eşzamansız olarak çalıştırır. Bu sayede veritabanı açmanın zaman maliyeti azaltılır (büyük veritabanlarında DBCC CHECKDB zaman alıcıdır) ve hizmet kesinti süresi kısaltılır. Kesinti süresine karşı hassasiyetiniz yüksekse ve DBCC CHECKDB sonuçlarıyla ilgilenmiyorsanız eşzamansız DBCC kullanın. Bu durumda CreateMigrateTask işlemi için CheckDBMode = AsyncExecuteDBCheck parametresi kullanılır.

    • Synchronous DBCC: Eşzamansız DBCC'ye kıyasla eşzamanlı DBCC, DBCC CHECKDB sonuçlarıyla ilgilenen ve kendi kendinize yönetilen veritabanlarında veri tutarlılığı hatalarını tespit etmek isteyen kullanıcılar için daha uygundur. Bu durumda veritabanının açılması için gereken süre artar. Bu durumda CreateMigrateTask işlemi için CheckDBMode = SyncExecuteDBCheck parametresi kullanılır.

  6. OK seçeneğine tıklayın.

    Geçiş görevinin tamamlanmasını bekleyin. Görevin en son durumunu görüntülemek için Refresh seçeneğine tıklayabilirsiniz. Geçiş görevi başarısız olursa görev açıklamasındaki mesaja göre sorunu giderin. Daha fazla bilgi için bu konudaki Yaygın hatalar bölümüne bakın.

    Not

    Veri geçişi tamamlandıktan sonra sistem, ApsaraDB RDS örneğinin otomatik yedekleme ilkesine göre belirtilen yedekleme saatinde bir yedekleme başlatır. Yedekleme saatini manuel olarak değiştirebilirsiniz. Oluşturulan yedekleme kümesi geçirilen verileri içerir. Yedekleme kümesini ApsaraDB RDS örneğinin Restoration sayfasında görüntüleyebilirsiniz.

    Yedekleme saati gelmediyse ancak bulutta mümkün olan en kısa sürede bir yedekleme oluşturmak istiyorsanız manuel yedekleme gerçekleştirebilirsiniz.

Yüksek performanslı yerel diskli SQL Server 2008 R2

  1. ApsaraDB RDS konsolunda oturum açın ve Instances sayfasına gidin. Üst gezinme çubuğunda RDS örneğinin bulunduğu bölgeyi seçin. Ardından RDS örneğini bulun ve örneğin Kimliğine tıklayın.

  2. Sol gezinme bölmesinde Databases seçeneğine tıklayın.

  3. Hedef veritabanını bulun ve Actions sütununda Migrate Backup Files from OSS seçeneğine tıklayın.

  4. Import Guide iletişim kutusunda mesajı okuyun ve ardından Next seçeneğine tıklayın.

  5. OSS yükleme hakkındaki mesajı okuyun ve ardından Next seçeneğine tıklayın.

  6. OSS URL of the Backup File alanına yedekleme dosyasının OSS URL'sini girin ve ardından OK seçeneğine tıklayın.

    Not

    Yüksek performanslı yerel diskli SQL Server 2008 R2 çalışan ApsaraDB RDS for SQL Server örnekleri yalnızca tam yedekleme dosyalarını tek seferde buluta geçiren çözümü destekler.

4. Yedekleme geçiş ilerlemesini görüntüleyin

ApsaraDB RDS for SQL Server örneğinizin sürümüne göre bir çözüm seçin.

SQL Server 2012 veya sonrası ya da cloud diskli SQL Server 2008 R2

ApsaraDB RDS örneğinin sol gezinme bölmesindeki Restoration sayfasına gidin ve ardından Cloud Migration Records of Backup Data sekmesindeki yedekleme geçiş kayıtlarını görüntüleyin. Kayıtlar görev durumu, görev başlangıç saati ve görev bitiş saati bilgilerini içerir. Varsayılan olarak son haftanın kayıtları görüntülenir. Zaman aralığını gerektiği şekilde değiştirebilirsiniz.

Not

Task Status değeri Failed ise Task Description bilgisini kontrol edin veya hedef geçiş görevinin yanındaki View File Details seçeneğine tıklayarak hatanın nedenini belirleyip düzeltin ve ardından veri geçişini tekrar gerçekleştirin.

Yüksek performanslı yerel diskli SQL Server 2008 R2

ApsaraDB RDS örneğinin sol gezinme bölmesindeki veri geçiş sayfasına gidin ve ardından veri geçişinin ilerlemesini görüntülemek için hedef geçiş görevini bulun.

Not

Task Status değeri Failed ise Task Description bilgisini kontrol edin veya hedef geçiş görevinin yanındaki View File Details seçeneğine tıklayarak hatanın nedenini belirleyip düzeltin ve ardından veri geçişini tekrar gerçekleştirin.

Yaygın hatalar

Her yedekleme geçiş kaydı bir görev açıklaması içerir. Görev açıklamalarından görev hatalarının ve hataların nedenlerini belirleyebilirsiniz. Aşağıdaki hata mesajları yaygındır:

  • Aynı ada sahip bir veritabanı zaten var

    • Hata mesajı 1: The database (xxx) is already exist on RDS, please backup and drop it, then try again.

    • Hata mesajı 2: Database 'xxx' already exists. Choose a different database name.

    • Neden: ApsaraDB RDS for SQL Server üzerinde veri güvenliğini sağlamak amacıyla ApsaraDB RDS for SQL Server, mevcut bir veritabanıyla aynı ada sahip bir veritabanına veri geçişini desteklemez.

    • Çözüm: Mevcut veritabanının verilerinin üzerine yazmak istiyorsanız mevcut verileri yedekleyin, veritabanını silin ve ardından veri geçiş görevini tekrar gerçekleştirin.

  • Artımlı yedekleme dosyası kullanılıyor

    • Hata mesajı: Backup set (xxx.bak) is a Database Differential backup, we only accept a FULL Backup.

    • Neden: Sağladığınız yedekleme dosyası tam yedekleme dosyası yerine artımlı yedekleme dosyasıdır. Tek seferlik tam yedekleme dosyası geçişi yalnızca tam yedekleme dosyalarını destekler ve artımlı yedekleme dosyalarını desteklemez.

  • Günlük yedekleme dosyası kullanılıyor

    • Hata mesajı: Backup set (xxx.trn) is a Transaction Log backup, we only accept a FULL Backup.

    • Neden: Sağladığınız yedekleme dosyası tam yedekleme dosyası yerine günlük yedekleme dosyasıdır. Tek seferlik tam yedekleme dosyası geçişi yalnızca tam yedekleme dosyalarını destekler ve günlük yedekleme dosyalarını desteklemez.

  • Yedekleme dosyası doğrulama hatası

    • Hata mesajı: Failed to verify xxx.bak, backup file was corrupted or newer edition than RDS.

    • Neden: Yedekleme dosyası bozuk veya kendi kendinize yönetilen ortamdaki SQL Server örneğinin sürümü, ApsaraDB RDS for SQL Server örneğinin sürümünden daha yeni. Bu nedenle doğrulama başarısız oluyor. Örneğin, SQL Server 2016 yedekleme dosyasını SQL Server 2012 çalışan bir ApsaraDB RDS for SQL Server örneğine geri yüklediğinizde bu hata bildirilir.

    • Çözüm: Yedekleme dosyası bozuksa kendi kendinize yönetilen ortamda başka bir tam yedekleme oluşturun ve yeni bir geçiş görevi oluşturun. Kendi kendinize yönetilen ortamdaki SQL Server örneğinin sürümü ApsaraDB RDS for SQL Server örneğinin sürümünden daha yeniyse aynı sürümü veya daha yeni bir sürümü çalışan bir ApsaraDB RDS for SQL Server örneği kullanın.

      Not

      Mevcut bir ApsaraDB RDS for SQL Server örneğini daha yeni bir sürüme yükseltmek için bkz. Veritabanı sürümünü yükseltme.

  • DBCC CHECKDB hatası

    • Hata mesajı: DBCC checkdb failed.

    • Neden: DBCC CHECKDB işlemi başarısız oldu. Bu durum, kendi kendinize yönetilen ortamdaki veritabanında hata oluştuğunu gösterir.

    • Çözüm: Aşağıdaki komutu kullanarak kendi kendinize yönetilen ortamdaki veritabanı hatalarını düzeltin ve ardından verileri tekrar geçirin.

      Önemli

      Bu komutu kullanarak hataları düzeltme süreci veri kaybına neden olabilir.

      DBCC CHECKDB (DBName, REPAIR_ALLOW_DATA_LOSS) WITH NO_INFOMSGS, ALL_ERRORMSGS
  • Yetersiz depolama alanı 1

    • Hata mesajı: Not Enough Disk Space for restoring, space left (xxx MB) < needed (xxx MB).

    • Neden: ApsaraDB RDS örneğinin kalan depolama alanı, yedekleme dosyasını geçirmek için gereken minimum depolama alanını karşılamıyor.

    • Çözüm: Örneğin depolama alanını yükseltin.

  • Yetersiz depolama alanı 2

    • Hata mesajı: Not Enough Disk Space, space left xxx MB < bak file xxx MB.

    • Neden: ApsaraDB RDS örneğinin kalan depolama alanı yedekleme dosyasının boyutundan küçüktür ve minimum depolama alanı gereksinimini karşılamaz.

    • Çözüm: Örneğin depolama alanını yükseltin.

  • Oturum açma hesabının yetersiz izinleri

  • Yetkili hesap yok

    • Hata mesajı: Your RDS doesn’t have any init account yet, please create one and grant permissions on RDS console to this migrated database (xxx).

    • Neden: ApsaraDB RDS örneğinde yetkili hesap yok. Geçiş görevi, geçirilen veritabanı üzerindeki izinlerin hangi hesaba verilmesi gerektiğini belirleyemiyor. Ancak yedekleme dosyası hedef örneğe geri yüklenir. Bu nedenle görev durumu Başarılı olarak işaretlenir.

    • Çözüm: Yetkili bir hesap oluşturun.

  • RAM kullanıcısının yetersiz işlem izinleri

    • S1: veri geçiş görevi oluşturma prosedürünün 5. Adımını uygularken tüm parametreler yapılandırılmış olsa da OK düğmesi gri renkte görünür ve tıklanamaz. Ne yapmalıyım?

    • C1: Düğmenin tıklanamamasının nedeni bir RAM kullanıcısı olarak oturum açmış olmanız ve hesabınızın yetersiz izinlere sahip olması olabilir. Gerekli izinlerin verildiğinden emin olmak için bu konudaki Önkoşullar bölümünü kontrol edin.

    • S2: Bir RAM kullanıcısı kullanarak AliyunRDSImportRole üzerinde izin verirken permission denied mesajı görünürse ne yapmalıyım?

    • C2: Alibaba Cloud ana hesabınızı kullanarak RAM kullanıcısına geçici olarak AliyunRAMFullAccess izni verin.

  • Veritabanı adı bir SQL Server sistem veritabanının adıyla aynı

    • Hata mesajı: The database (xxx) is mssql system db, change your database name and try again.

    • Neden: Belirtilen veritabanı adı master, msdb, tempdb veya model gibi bir SQL Server sistem veritabanının adıyla aynı.

    • Çözüm: Farklı bir veritabanı adı belirtin.

  • Veritabanı adı RDS örneğinin bir sistem veritabanının adıyla aynı

    • Hata mesajı: The database (xxx) is RDS system db, change your database name and try again.

    • Neden: Belirtilen veritabanı adı rdscore gibi ApsaraDB RDS for SQL Server örneğinin bir yönetim veritabanının adıyla aynı.

    • Çözüm: Farklı bir veritabanı adı belirtin.

  • Veritabanı sayısı üst sınırı aşıyor

    • Hata mesajı: The database (xxx) migration failed due to databases count limitation: xxx.

    • Neden: Veritabanı sayısı üst sınırı aşıyor.

    • Çözüm: Örnekteki veritabanı sayısını azaltın ve tekrar deneyin.

  • OSS indirme URL sorunları

    • Hata mesajı 1: Failed to download backup (xxx) since OSS URL was expired.

    • Hata mesajı 2: Failed to download since could not find backup file (xxx) on OSS.

    • Neden: OSS indirme URL'sinin süresi doldu, ApsaraDB RDS hizmet hesabına yetki verilmedi, RAM kullanıcısının izinleri yetersiz veya dosya mevcut değil.

    • Çözüm: Dosyanın OSS'te mevcut olup olmadığını, izinlerin doğru verilip verilmediğini ve yetkilendirmenin geçerli olup olmadığını kontrol edin. Ardından tekrar deneyin.

  • Şeritli yedekleme sorunları

    • Hata mesajı: Failed to verify (xxx.bak), error message:The media set has xxx media families but only 1 are provided. All members must be provided. VERIFY DATABASE is terminating abnormally.

    • Neden: Kaynak veritabanı yedeklenirken şeritli yedekleme özelliği kullanıldı. Bu durumda tam yedekleme birden çok .bak dosyasına bölünür ancak veriler OSS'ten ApsaraDB RDS'e geçirilirken yalnızca bir dosya sağlanır. ApsaraDB RDS, tek seferde birden çok dosyaya dayalı geçişi desteklemez.

    • Çözüm: Kaynak veritabanını tek bir .bak dosyasına yedekleyin ve tekrar deneyin.

Yaygın dönüş mesajları

Görev türü

Görev durumu

Görev açıklaması

Açıklama

Tek seferlik tam yedekleme dosyası geçişi

Başarılı

success

Geçiş başarılı.

Başarısız

Failed to download backup file since OSS URL was expired.

OSS indirme URL'sinin geçerlilik süresi dolduğu için geçiş başarısız oldu.

Your backup is corrupted or newer than RDS, failed to verify.

Yedekleme dosyası bozuk veya RDS sürümünden daha yeni bir sürümde oluşturulduğu için geçiş başarısız oldu.

DBCC checkdb failed

DBCC checkdb işlemi başarısız olduğu için geçiş başarısız oldu.

autotest_2008r2_std_testmigrate_log.trn is a Transaction Log backup, we only accept a FULL Backup.

Günlük yedekleme dosyası kullanıldığı için geçiş başarısız oldu.

autotest_2008r2_std_testmigrate_diff.bak is a Database Differential backup, we only accept a FULL Backup.

Artımlı yedekleme dosyası kullanıldığı için geçiş başarısız oldu.

İlgili API işlemleri


API


Açıklama


CreateMigrateTask


Yedekleme dosyalarını OSS'ten bir ApsaraDB RDS for SQL Server örneğine geri yükler ve bir veri geçiş görevi oluşturur.


CreateOnlineDatabaseTask


Bir ApsaraDB RDS for SQL Server örneğindeki bir yedekleme verisi geçiş görevinin veritabanını açar.


DescribeMigrateTasks


Bir ApsaraDB RDS for SQL Server örneğindeki yedekleme verisi geçiş görevlerinin listesini sorgular.


DescribeOssDownloads


Bir ApsaraDB RDS for SQL Server örneğindeki bir yedekleme verisi geçiş görevinin yedekleme dosyalarının ayrıntılarını sorgular.