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
NotBu 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_infileparametresi etkinleştirilmelidir.Notlocal_infileparametresinin 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_infileparametresini 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.
NotBir 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 infilekomutundaUNHEX()işlevini manuel olarak kullanmanız gerekir.-
Alternatif olarak, BLOB verileri için
mysqldumpkullanarak 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>.sqlVerileri 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.pykomut 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 birspace(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.
-
Yedekleme dosyasını indirin ve sıkıştırmasını açın
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.
-
İndirilen yedekleme dosyasının sıkıştırmasını yerel makinenizde veya ECS örneğinizde açın.
-
Yedekleme dosyası
.tar.gzbiç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.zstbiç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
-
-
(İ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
-
Geri yükleme komut dosyasını hazırlayın
-
Bir geri yükleme komut dosyası hazırlayın.
MySQL Python komut dosyası dosyasını yerel makinenize veya bir ECS örneğine indirin.
ÖnemliBu 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.
-
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
-
-
Geri yükleme komutunu çalıştırın
ÖnemliCommand 'python' not foundgibi bir hata iletisi görünüyorsa Python yüklü değildir veyapythonkomutu 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üysepython3 ./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
Bu çözüm yalnızca disk tabanlı bir örnekten alınan anlık görüntü yedeğinin geri yüklenmesi için geçerlidir. Yüksek performanslı yerel disklere sahip bir örnekten yedekleme geri yüklemeniz gerekiyorsanız ApsaraDB RDS for MySQL'den fiziksel yedekleme dosyasını kendi yönettiğiniz bir veritabanına geri yükleme veya ApsaraDB RDS for MySQL'den mantıksal yedekleme dosyasını kendi yönettiğiniz bir veritabanına geri yükleme konularına bakın.
Alibaba Cloud ayrıca ApsaraDB RDS for MySQL örneğinden kendi yönettiğiniz bir MySQL veritabanına veri geçişi yapmanıza yardımcı olmak için Data Transmission Service (DTS) sunar.
Diğer veri geri yükleme çözümleri hakkında daha fazla bilgi için Veri geri yükleme çözümlerine genel bakış konusuna bakın.