Tüm Ürünler
Search
Belge Merkezi

ApsaraDB RDS:Migrate MySQL data using mysqldump

Son Güncelleme:Oct 03, 2026

mysqldump, bir veritabanının şemasını ve verilerini CREATE TABLE ve INSERT deyimlerini içeren bir SQL dosyası olarak dışa aktarır ve bu dosyayı hedef örnekte yeniden oynatır. Veri hacminiz küçükse veya geçiş sırasında uzun süreli kesintileri kabul edebiliyorsanız bu yöntemi kullanın.

Hizmet kesintisi olmadan geçiş yapmak için bunun yerine Data Transmission Service (DTS) hizmetini kullanın. DTS, sürekli çoğaltmayı ve minimum kesinti süresiyle yük devretmeyi destekler.

Önkoşullar

Başlamadan önce aşağıdaki işlemleri tamamladığınızdan emin olun:

  • RDS örneği için bir IP adresi izin listesini yapılandırdınız

  • RDS örneğinin genel uç noktasını elde ettiniz

  • RDS örneğinde hedef veritabanlarını ve hesapları oluşturdunuz

Kurulum talimatları için bkz. ApsaraDB RDS for MySQL kullanma genel iş akışı.

Kullanım durumları

Aşağıdaki durumlarda mysqldump doğru bir seçimdir:

  • Veri hacmi küçüktür — dışa ve içe aktarma işlemleri bakım pencereniz içinde tamamlanır

  • Kesinti süresi kabul edilebilir — tutarlılığı garanti etmek için dışa aktarma sırasında kaynak veritabanına yazma işlemleri durdurulmalıdır

  • Sürekli çoğaltmaya gerek yoktur — tek seferlik mantıksal bir kopya yeterlidir

Sıfır kesinti süresiyle yük devretmeye veya devam eden çoğaltmaya ihtiyacınız varsa bunun yerine DTS hizmetini kullanın.

Kullanım notları

Geçişten sonra, kendi kendine yönetilen MySQL örneğindeki tüm tablo adları RDS örneğinde küçük harfle saklanır. Büyük/küçük harfe duyarlı tablo adlarını korumak için aşağıdaki yöntemlerden birini kullanın:

Uyarı

lower_case_table_names parametresini 0 değerine ayarladıktan sonra bunu tekrar 1 değerine döndürmeyin. Bu işlem ERROR 1146 (42S02): Table doesn't exist hatasına neden olabilir ve iş yüklerinizi ciddi şekilde etkileyebilir. RDS örneğiniz MySQL 8,0 çalıştırıyorsa, örnek oluşturulduktan sonra lower_case_table_names parametresi yeniden yapılandırılamaz.

mysqldump ile verileri geçirin

Aşağıdaki adımlar bir Linux ortamını kullanır. Aynı komutlar macOS Terminal veya Windows Komut İstemi'nde de çalışır.

Adım 1: Kendi kendine yönetilen MySQL örneğinden verileri dışa aktarın

Önemli

Dışa aktarmayı çalıştırmadan önce kaynak veritabanındaki tüm yazma işlemlerini durdurun. Dışa aktarma sırasında verilerin güncellenmesi döküm dosyasını bozabilir.

Dışa aktarma için kullanılan hesabın gerekli izinlere sahip olması gerekir. Daha fazla bilgi için bkz. resmi MySQL belgeleri.

Şemayı ve verileri dışa aktarın (saklı yordamlar, tetikleyiciler ve işlevler hariç):

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

Örnek:

mysqldump -h 127.0.0.1 -u user -p --opt --default-character-set=utf8 --hex-blob testdb --skip-triggers --skip-lock-tables > /tmp/testdb.sql
Bunun yerine bir RDS for MySQL örneğinden verileri dışa aktarmak için ana bilgisayar adı, kullanıcı adı ve veritabanı adını ilgili RDS değerleriyle değiştirin.
--default-character-set=utf8 bayrağı, döküm dosyası için karakter setini belirler. Kaynak veritabanı farklı bir karakter seti kullanıyorsa bu bayrağı buna uygun şekilde ayarlayın. Döküm dosyasının karakter seti ile hedef örneğin karakter seti arasındaki uyumsuzluk, içe aktarmadan sonra bozuk metne neden olur.

Saklı yordamları, tetikleyicileri ve işlevleri dışa aktarın:

mysqldump -h 127.0.0.1 -u user -p --opt --default-character-set=utf8 --hex-blob <db_name> -R | sed -e 's/DEFINER[ ]*=[ ]*[^*]*\*/*/' > /tmp/<db_name>Trigger.sql

Örnek:

mysqldump -h 127.0.0.1 -u user -p --opt --default-character-set=utf8 --hex-blob testdb -R | sed -e 's/DEFINER[ ]*=[ ]*[^*]*\*/\*/' > /tmp/testdbTrigger.sql
Kaynak veritabanında saklı yordam, tetikleyici veya işlev yoksa bu komutu atlayın.

Adım 2: Dışa aktarılan dosyaları bir ECS örneğine yükleyin

1. Adımdaki .sql dosyalarını, RDS örneğine erişebilen bir Elastic Compute Service (ECS) örneğindeki /tmp dizinine yükleyin.

result

Kendi kendine yönetilen MySQL örneği zaten bir ECS örneğinde çalışıyorsa bu adımı atlayın.

Adım 3: Dosyaları RDS örneğine içe aktarın

Aşağıdaki komutları ECS örneğinde çalıştırın. Yer tutucuları RDS bağlantı bilgilerinizle değiştirin.

mysql -h <RDS endpoint> -P <port> -u <account> -p <database> < /tmp/<db_name>.sql
mysql -h <RDS endpoint> -P <port> -u <account> -p <database> < /tmp/<db_name>Trigger.sql

Örnek:

mysql -h rm-bpxxxxx.mysql.rds.aliyuncs.com -P 3306 -u testuser -p testdb < /tmp/testdb.sql
mysql -h rm-bpxxxxx.mysql.rds.aliyuncs.com -P 3306 -u testuser -p testdb < /tmp/testdbTrigger.sql
Yer Tutucu Açıklama Örnek
<RDS endpoint> RDS örneğinin genel uç noktası rm-bpxxxxx.mysql.rds.aliyuncs.com
<port> RDS örneğinin bağlantı noktası 3306
<account> RDS hesabı (yetkili hesap veya okuma ve yazma izinlerine sahip standart hesap) testuser
<database> Hedef veritabanı adı — RDS örneğinde zaten mevcut olmalıdır testdb

Hedef veritabanı henüz mevcut değilse oluşturmak için bkz. Veritabanlarını yönetin.

Adım 4: Geçişi doğrulayın

RDS örneğinde oturum açmak için DMS kullanın ve tabloların, satır sayılarının ve verilerin doğru göründüğünü onaylayın.

Sonraki adımlar