Tüm Ürünler
Search
Belge Merkezi

ApsaraDB RDS:Restore an ApsaraDB RDS for MySQL snapshot backup file to a self-managed database

Son Güncelleme:Oct 09, 2026

Yedek İndir özelliğini kullanarak ApsaraDB RDS for MySQL disk tabanlı bir örneğinden alınan anlık görüntü yedeğini CSV veya SQL dosyasına dönüştürün. Ardından bu dosyayı yerel makinenizdeki veya bir ECS örneğinde barındırılan kendi yönettiğiniz MySQL veritabanına geri yükleyebilirsiniz.

Önkoşullar

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

    • Veritabanı sürümü: 8.0 veya 5.7 (Serverless örnekler desteklenir)

    • Depolama türü: ESSD veya yüksek performanslı disk

    • Durum: çalışıyor

    Not
    • Bu bilgileri örneğin Basic Information sayfasında görüntüleyebilirsiniz.

    • Yüksek performanslı disk kullanan ve veri arşivleme özelliği etkinleştirilmiş örnekler için gelişmiş indirme özelliği desteklenmez. Bu örneklerdeki indirme görevleri başarısız olur.

  • ApsaraDB RDS for MySQL örneğinde TDE devre dışı bırakılmalıdır. Örnek şifrelenmiş tablolar içeriyorsa geri yükleme işlemi başarısız olur. Önce bu tabloların şifresini çözmeniz gerekir.

  • Kendi yönettiğiniz MySQL veritabanında local_infile parametresi etkinleştirilmelidir.

    Not
    • local_infile parametresinin durumunu kontrol etmek için (ON değeri etkin olduğunu gösterir) aşağıdaki komutu çalıştırın: SHOW GLOBAL VARIABLES LIKE 'local_infile';

    • local_infile parametresini etkinleştirmek için aşağıdaki komutu çalıştırın: SET GLOBAL local_infile=1;

Sınırlamalar

İndirilen bir yedekleme kümesini kendi yönettiğiniz MySQL veritabanına geri yüklerken veri türleri için aşağıdaki sınırlamalar geçerlidir.

  • Desteklenmeyen ikili alan türleri: BIT, BINARY, VARBINARY, TINYBLOB, BLOB, MEDIUMBLOB ve LONGBLOB.

    Not
    • Bir yedekleme kümesi bu veri türlerini içeriyorsa onaltılık biçimde depolanır. İçeri aktarma sırasında MySQL bunları dize olarak işler. İkili biçime geri dönüştürmek için load data local infile komutunda UNHEX() işlevini manuel olarak kullanmanız gerekir.

    • Alternatif olarak, BLOB verileri için mysqldump kullanarak verileri yerel MySQL veritabanınıza yedekleyebilir ve geri yükleyebilirsiniz.

      Verileri yedekleme: mysqldump -h 127.0.0.1 -u user -p --opt --default-character-set=utf8 --hex-blob <self-managed_database_name> --skip-triggers --skip-lock-tables > /tmp/<self-managed_database_name>.sql

      Verileri geri yükleme: mysql -h 127.0.0.1 -u username -p database_name < backup_file.sql

  • Desteklenmeyen mekansal veri türleri: GEOMETRY, POINT, LINESTRING, POLYGON, MULTIPOINT, MULTILINESTRING, MULTIPOLYGON ve GEOMETRYCOLLECTION.

Başlamadan önce

  • Komut dosyası bakımı: Bu konuda sağlanan restore_from_downloads.py komut dosyası yalnızca referans amaçlıdır ve artık bakım yapılmamaktadır. Dikkatli kullanın ve ortamınızla uyumluluğunu doğrulayın.

  • Veritabanı sürümü tutarlılığı: Kendi yönettiğiniz MySQL veritabanının ana sürümünün ApsaraDB RDS for MySQL örneğiyle eşleştiğinden emin olun. Sürüm uyumsuzlukları, özellik uyumsuzlukları nedeniyle geri yükleme hatalarına neden olabilir.

  • Adlandırma çakışmaları: Hedef kendi yönettiğiniz veritabanında yedekleme kümesindeki veritabanları veya tablolarla ad çakışması olmadığından emin olun. Ad çakışmaları geri yüklemenin başarısız olmasına neden olur.

  • Görev kesintisi: Geri yükleme görevini kesmek eksik verilere veya başarısız bir geri yüklemeye neden olabilir. Başladıktan sonra işlemi kesmeyin.

  • Özel karakterleri işleme: Dosya yolu, veritabanı hesabı veya parola &, # gibi özel karakterler veya bir space (boşluk) içeriyorsa değeri çift tırnak içine ("") almanız gerekir. Aksi takdirde komut başarısız olur. Örneğin:

    # If a file path contains special characters, such as &, enclose the path in double quotation marks.
    python ./restore_from_downloads.py "/path/to/data&test" 127.0.0.1 3306 root zhtpasswordtest
    
    # If a password contains special characters, such as # or @, enclose the password in double quotation marks.
    python ./restore_from_downloads.py /data 127.0.0.1 3306 root "#Test@20250821"

Yordam

Bu örnekte, disk tabanlı bir ApsaraDB RDS for MySQL örneğinden alınan bir SQL dosyasının kendi yönettiğiniz bir MySQL veritabanına nasıl geri yükleneceği gösterilmektedir. Bu örnekteki kendi yönettiğiniz veritabanı Alibaba Cloud Linux 3.2104 LTS 64-bit çalıştıran bir ECS örneğinde bulunur. Komutları kendi ortamınıza göre uyarlayın.

  1. Yedekleme dosyasını indirin ve sıkıştırmasını açın

    1. RDS konsoluna oturum açın ve ApsaraDB RDS for MySQL disk tabanlı örneğinizdeki yedekleme dosyasını CSV veya SQL dosyasına dönüştürmek için Yedek İndir özelliğini kullanın. Ardından dosyayı yerel makinenize veya ECS örneğinize indirin.

    2. İndirilen yedekleme dosyasının sıkıştırmasını yerel makinenizde veya ECS örneğinizde açın.

      • Yedekleme dosyası .tar.gz biçimindeyse aşağıdaki komutu çalıştırın:

        tar -izxvf <compressed_file_name>.tar.gz -C <destination_directory>
        # Example: Decompress the backup.tar.gz file to the /home/mysql/data directory. The file name and directory in the command are for reference only.
        tar -izxvf backup.tar.gz -C /home/mysql/data
      • Yedekleme dosyası .tar.zst biçimindeyse aşağıdaki komutu çalıştırın:

        zstd -d -c <compressed_file_name>.tar.zst | tar -xvf - -C <destination_directory>
        # Example: Decompress the backup.zst file to the /home/mysql/data directory. The file name and directory in the command are for reference only.
        zstd -d -c backup.tar.zst | tar -xvf - -C /home/mysql/data
    3. (İsteğe bağlı) Yedekleme dosyasının belirtilen konuma (/home/mysql/data) açıldığını doğrulamak için aşağıdaki komutu çalıştırın:

      ls -al /home/mysql/data
  2. Geri yükleme komut dosyasını hazırlayın

    1. Bir geri yükleme komut dosyası hazırlayın.

      MySQL Python komut dosyası dosyasını yerel makinenize veya bir ECS örneğine indirin.

      Önemli

      Bu komut dosyası yalnızca referans amaçlıdır. Komut dosyasını ortamınıza uyacak şekilde değiştirin. Komut dosyasını dikkatli kullanın.

    2. Komut dosyasına yürütme izni vermek için aşağıdaki komutu çalıştırın:

      chmod +x ./<script_name>.py
      # Example:
      chmod +x ./restore_from_downloads.py
  3. Geri yükleme komutunu çalıştırın

    Önemli

    Command 'python' not found gibi bir hata iletisi görünüyorsa Python yüklü değildir veya python komutu sistemin PATH değişkeninde bulunmamaktadır. Bu durumda yüklü Python sürümünüzü kontrol edin ve komut dosyasını çalıştırmak için doğru komutu kullanın. Örneğin, Python 3 yüklüyse python3 ./restore_from_downloads.py /home/mysql/data/test1.sql 127.0.0.1 3306 zhtxxxxx "#txxxxx" komutunu çalıştırın.

    python ./<script_name>.py <path_to_CSV_or_SQL_directory> <database_host> <database_port> <database_account> <database_password>
    # Example:
    python ./restore_from_downloads.py /home/mysql/data 127.0.0.1 3306 root "#Tes********"
    [root@ixxx ~]# python ./restore_from_downloads.py /home/mysql/data 127.0.0.1 3306 root "#Tesxxx"
    [INFO]: restore data from /home/mysql/data to 127.xxx:3306
    mysql: [Warning] Using a password on the command line interface can be insecure.
    [INFO]: restore structure database: zhxxx ends
    mysql: [Warning] Using a password on the command line interface can be insecure.
    [INFO]: restore structure table: zhxxx ends
    [INFO]: trying to exec: mysql -h127.xxx -P3306 -uroot -p#Tesxxx </home/mysql/data/zxxx
    mysql: [Warning] Using a password on the command line interface can be insecure.
    [INFO]: restore data [1/1] of table zhxxx.zhxxx

İlgili Konular