Memigrasikan database MySQL Anda ke Azure Database for MySQL - Server Fleksibel menggunakan cadangan dan pemulihan
Artikel ini menjelaskan dua cara umum untuk mencadangkan dan memulihkan database di Azure Database for MySQL Flexible Server.
- Cadangkan dan pulihkan dari baris perintah (menggunakan mysqldump).
- Cadangkan dan pulihkan menggunakan PHPMyAdmin.
Anda juga dapat merujuk ke Panduan Migrasi Database untuk informasi terperinci dan kasus penggunaan tentang memigrasikan database ke Azure Database for MySQL Flexible Server. Panduan ini menyediakan panduan yang mengarahkan perencanaan dan eksekusi migrasi MySQL yang berhasil ke Azure.
Sebelum Anda mulai
Untuk menelusuri panduan ini, Anda perlu:
- Instans Server Fleksibel Azure Database for MySQL - portal Azure
- Utilitas baris perintah mysqldump yang terinstal di komputer.
- MySQL Workbench atau alat MySQL pihak ketiga lainnya untuk melakukan perintah pencadangan dan pemulihan.
Tip
Jika Anda ingin memigrasikan database besar dengan ukuran database lebih dari 1 TB, Anda mungkin ingin mempertimbangkan untuk menggunakan alat komunitas seperti mydumper/myloader yang mendukung ekspor dan impor paralel. Pelajari cara memigrasikan database MySQL besar.
Penggunaan umum untuk pencadangan dan pemulihan
Kasus penggunaan umum yaitu:
Berpindah dari penyedia layanan terkelola lainnya - Sebagian besar penyedia layanan terkelola mungkin tidak menyediakan akses ke file penyimpanan fisik karena alasan keamanan sehingga pencadangan dan pemulihan logis adalah satu-satunya opsi untuk bermigrasi.
Migrasi dari lingkungan lokal atau Komputer virtual - Azure Database for MySQL Flexible Server tidak mendukung pemulihan cadangan fisik, yang membuat pencadangan dan pemulihan logis sebagai pendekatan HANYA.
Memindahkan penyimpanan cadangan Anda dari penyimpanan redundan secara lokal ke penyimpanan geo-redundan - Azure Database for MySQL Flexible Server memungkinkan konfigurasi penyimpanan redundan lokal atau geo-redundan untuk pencadangan hanya diizinkan selama pembuatan server. Setelah server diprovisikan, Anda tidak dapat mengubah opsi redundansi penyimpanan cadangan. Untuk memindahkan penyimpanan cadangan Anda dari penyimpanan redundan lokal ke geo-redundan, pencadangan dan pemulihan adalah SATU-SATUNYA opsi.
Migrasi dari mesin penyimpanan alternatif ke InnoDB - Azure Database for MySQL Flexible Server hanya mendukung mesin Penyimpanan InnoDB, dan karenanya tidak mendukung mesin penyimpanan alternatif. Jika tabel Anda dikonfigurasi dengan mesin penyimpanan lain, konversikan ke format mesin InnoDB sebelum migrasi ke Server Fleksibel Azure Database for MySQL.
Misalnya, jika Anda memiliki WordPress atau WebApp menggunakan tabel MyISAM, pertama-tama konversi tabel tersebut dengan bermigrasi ke format InnoDB sebelum memulihkan ke Server Fleksibel Azure Database for MySQL. Gunakan klausa
ENGINE=InnoDB
untuk mengatur mesin yang akan digunakan saat membuat tabel baru, lalu transfer data ke tabel yang kompatibel sebelum Anda memulihkannya.INSERT INTO innodb_table SELECT * FROM myisam_table ORDER BY primary_key_columns
Penting
- Untuk menghindari masalah kompatibilitas, pastikan bahwa versi MySQL yang sama digunakan pada sistem sumber dan tujuan saat mencadangkan database. Misalnya, jika server MySQL Anda yang ada adalah versi 5.7, maka Anda harus bermigrasi ke instans Server Fleksibel Azure Database for MySQL yang dikonfigurasi untuk menjalankan versi 5.7. Perintah
mysql_upgrade
tidak berfungsi dalam instans Server Fleksibel Azure Database for MySQL, dan tidak didukung. - Jika Anda perlu melakukan peningkatan di seluruh versi MySQL, pertama-tama cadangkan atau ekspor database versi lama Anda ke versi MySQL yang lebih baru di lingkungan Anda sendiri. Kemudian jalankan
mysql_upgrade
sebelum mencoba migrasi ke instans Azure Database for MySQL Flexible Server.
Pertimbangan performa
Untuk mengoptimalkan performa, perhatikan pertimbangan ini saat mencadangkan database besar:
- Gunakan opsi
exclude-triggers
di mysqldump saat membuang database. Kecualikan pemicu dari file cadangan untuk menghindari eksekusi perintah pemicu selama pemulihan data. - Gunakan opsi
single-transaction
untuk mengatur mode isolasi transaksi ke REPEATABLE READ dan mengirim pernyataan START TRANSACTION SQL ke server sebelum mencadangkan data. Mencadangkan banyak tabel dalam satu transaksi menyebabkan penggunaan penyimpanan tambahan selama pemulihan Opsisingle-transaction
dan opsilock-tables
saling eksklusif karena LOCK TABLES menyebabkan transaksi yang tertunda diterapkan secara implisit. Untuk mencadangkan tabel besar, gabungkan opsisingle-transaction
dengan opsiquick
. - Gunakan sintaks beberapa baris
extended-insert
yang menyertakan beberapa daftar VALUE. Hal ini akan menghasilkan file cadangan yang lebih kecil dan mempercepat sisipan saat file dimuat ulang. - Gunakan opsi
order-by-primary
di mysqldump saat Anda mencadangkan database, sehingga data ditulis dalam urutan kunci utama. - Gunakan opsi
disable-keys
di mysqldump saat Anda mencadangkan data, untuk menonaktifkan batasan kunci asing sebelum dimuat. Menonaktifkan pemeriksaan kunci asing akan memberikan keuntungan kinerja yang signifikan. Aktifkan batasan dan periksa data setelah pemuatan untuk memastikan integritas referensial. - Gunakan tabel partisi bila sesuai.
- Muat data secara paralel. Hindari terlalu banyak paralelisme yang akan menyebabkan Anda mencapai batas sumber daya, dan pantau sumber daya dengan menggunakan metrik yang tersedia di portal Microsoft Azure.
- Gunakan opsi
defer-table-indexes
di mysqldump saat mencadangkan database, sehingga pembuatan indeks terjadi setelah data tabel dimuat. - Salin file cadangan ke blob/penyimpanan Azure dan lakukan pemulihan dari sana, yang seharusnya jauh lebih cepat daripada melakukan pemulihan di Internet.
Membuat database pada instans Server Fleksibel Azure Database for MySQL target
Buat database kosong pada instans Azure Database for MySQL Flexible Server target tempat Anda ingin memigrasikan data. Gunakan alat seperti MySQL Workbench atau mysql.exe untuk membuat database. Database bisa memiliki nama yang sama dengan database yang berisi data yang dicadangkan, atau Anda bisa membuat database dengan nama yang berbeda.
Untuk tersambung, temukan informasi koneksi di Gambaran Umum instans Server Fleksibel Azure Database for MySQL Anda.
Tambahkan informasi koneksi ke MySQL Workbench.
Siapkan instans Server Fleksibel Azure Database for MySQL target untuk pemuatan data cepat
Untuk menyiapkan instans Server Fleksibel Azure Database for MySQL target untuk pemuatan data yang lebih cepat, parameter dan konfigurasi server berikut perlu diubah.
- max_allowed_packet – diatur ke 1073741824 (yaitu 1GB) untuk mencegah masalah luapan karena baris panjang.
- slow_query_log – atur ke OFF untuk menonaktifkan log kueri lambat. Ini menghilangkan overhead yang disebabkan oleh pengelogan kueri yang lambat selama pemuatan data.
- query_store_capture_mode - atur ke NONE untuk menonaktifkan Query Store. Ini menghilangkan overhead yang disebabkan oleh aktivitas pengambilan sampel oleh Penyimpanan Kueri.
- innodb_buffer_pool_size – – Tingkatkan server ke 32 vCore Memory Optimized SKU dari tingkat Harga portal selama migrasi untuk meningkatkan ukuran innodb_buffer_pool_size. Innodb_buffer_pool_size hanya dapat ditingkatkan dengan meningkatkan komputasi untuk instans Server Fleksibel Azure Database for MySQL.
- innodb_io_capacity & innodb_io_capacity_max - Ubah ke 9000 dari parameter Server di portal Microsoft Azure untuk meningkatkan pemanfaatan IO untuk mengoptimalkan kecepatan migrasi.
- innodb_write_io_threads & innodb_write_io_threads - Ubah ke 4 dari parameter Server di portal Microsoft Azure untuk meningkatkan kecepatan migrasi.
- Tingkat penyimpanan peningkatan - IOP untuk Server Fleksibel Azure Database for MySQL meningkat secara progresif dengan peningkatan tingkat penyimpanan. Untuk beban yang lebih cepat, Anda mungkin ingin meningkatkan tingkat penyimpanan untuk meningkatkan IOP yang disediakan. Ingat bahwa skala penyimpanan hanya dapat ditingkatkan, tidak diturunkan.
Setelah migrasi selesai, Anda dapat mengembalikan parameter server dan konfigurasi tingkat komputasi ke nilai sebelumnya.
Melakukan pencadangan dan pemulihan menggunakan utilitas mysqldump
Membuat cadangan dari baris perintah dengan menggunakan mysqldump
Untuk mencadangkan database MySQL yang ada di server lokal atau di komputer virtual, jalankan perintah berikut dengan menggunakan mysqldump:
mysqldump --opt -u [uname] -p[pass] [dbname] > [backupfile.sql]
Parameter yang akan digunakan adalah:
- [uname] Nama pengguna database Anda
- [pass] Kata sandi untuk database Anda (perhatikan bahwa tidak ada spasi antara -p dan kata sandi)
- [dbname] Nama database Anda
- [backupfile.sql] Nama file untuk cadangan database Anda
- [--opt] Opsi mysqldump
Misalnya, untuk mencadangkan database bernama 'testdb' di server MySQL Anda dengan nama pengguna 'testuser' dan tanpa kata sandi ke file testdb_backup.sql, gunakan perintah berikut. Perintah akan mencadangkan database testdb
ke dalam file yang disebut testdb_backup.sql
, yang berisi semua pernyataan SQL yang diperlukan untuk membuat ulang database. Pastikan bahwa nama pengguna 'testuser' memiliki setidaknya hak istimewa SELECT untuk tabel yang dicadangkan, SHOW VIEW untuk tampilan yang dicadangkan, TRIGGER untuk pemicu yang dicadangkan, dan LOCK TABLES jika --single-transaction
opsi tidak digunakan.
GRANT SELECT, LOCK TABLES, SHOW VIEW ON *.* TO 'testuser'@'hostname' IDENTIFIED BY 'password';
Sekarang jalankan mysqldump untuk membuat cadangan database testdb
mysqldump -u root -p testdb > testdb_backup.sql
Guna memilih tabel tertentu untuk dicadangkan di database Anda, cantumkan nama tabel, dipisahkan oleh spasi. Misalnya, untuk mencadangkan table1 dan table2 saja dari 'testdb', ikuti contoh ini:
mysqldump -u root -p testdb table1 table2 > testdb_tables_backup.sql
Untuk mencadangkan lebih dari satu database sekaligus, gunakan pengalih --database
dan cantumkan nama database, dipisahkan oleh spasi.
mysqldump -u root -p --databases testdb1 testdb3 testdb5 > testdb135_backup.sql
Memulihkan database MySQL Anda menggunakan command-line
Setelah Anda membuat database target, Anda bisa menggunakan perintah mysql untuk memulihkan data ke database yang baru dibuat dari file cadangan.
mysql -h [hostname] -u [uname] -p[pass] [db_to_restore] < [backupfile.sql]
Dalam contoh ini, pulihkan data ke database yang baru dibuat pada instans Server Fleksibel Azure Database for MySQL target.
Berikut adalah contoh cara menggunakan mysql ini untuk Server Tunggal:
mysql -h mydemoserver.mysql.database.azure.com -u myadmin@mydemoserver -p testdb < testdb_backup.sql
Berikut adalah contoh cara menggunakan mysql ini untuk Server Fleksibel:
mysql -h mydemoserver.mysql.database.azure.com -u myadmin -p testdb < testdb_backup.sql
Catatan
Anda juga dapat menggunakan utilitas klien MySQL Workbench untuk memulihkan database MySQL.
Melakukan pencadangan dan pemulihan menggunakan PHPMyAdmin
Ikuti langkah-langkah berikut untuk mencadangkan dan memulihkan database menggunakan PHPMyadmin.
Catatan
Untuk server tunggal, nama pengguna harus dalam format ini , 'username@servername' tetapi untuk server fleksibel Anda cukup menggunakan 'nama pengguna'. Jika Anda menggunakan 'username@servername' untuk server fleksibel, koneksi akan gagal.
Mengekspor dengan PHPMyadmin
Untuk mengekspor, Anda dapat menggunakan alat umum phpMyAdmin, yang mungkin sudah Anda instal secara lokal di lingkungan Anda. Untuk mengekspor database MySQL Anda menggunakan PHPMyAdmin:
- Buka phpMyAdmin.
- Pilih database Anda. Klik nama database dalam daftar di sebelah kiri.
- Pilih ink Ekspor. Halaman baru tampaknya menampilkan cadangan database.
- Di area Ekspor, pilih tautan Pilih Semua untuk memilih tabel di database Anda.
- Di area opsi SQL, pilih opsi yang sesuai.
- Pilih opsi Simpan sebagai file dan opsi pemadatan terkait, lalu pilih tombol Buka. Kotak dialog akan muncul yang meminta Anda untuk menyimpan file secara lokal.
Mengimpor menggunakan PHPMyAdmin
Mengimpor database mirip dengan proses mengekspor. Anda dapat melakukan tindakan berikut:
- Buka phpMyAdmin.
- Di halaman penyiapan phpMyAdmin, pilih Tambahkan untuk menambahkan instans Server Fleksibel Azure Database for MySQL Anda. Berikan detail koneksi dan info masuk.
- Buat database dengan nama yang tepat, lalu pilih di panel kiri. Untuk menulis ulang database yang sudah ada, pilih nama database, pilih semua kotak centang di samping nama tabel, dan pilih Hilangkan untuk menghapus tabel yang sudah ada.
- Klik link SQL untuk menampilkan halaman tempat Anda dapat memasukkan perintah SQL atau mengunggah file SQL Anda.
- Pilih tombol telusur untuk menemukan file database.
- Pilih tombol Buka untuk mengekspor cadangan, menjalankan perintah SQL, dan membuat ulang database Anda.
Masalah Umum
Untuk mengetahui masalah yang diketahui, tips dan trik, sebaiknya lihat blog komunitas teknologi kami.