Anda dapat menjalankan utilitas mysqldump langsung ke database MySQL, menggunakan opsi apa pun yang Anda perlukan. Namun, jika Anda mengekspor untuk mengimpor data ke database Cloud SQL, gunakan utilitas mysqldump dengan flag berikut:
--databases
Menentukan daftar eksplisit database yang akan diekspor. Daftar ini tidak boleh berisi database sistem (sys
,mysql
,performance_schema
, daninformation_schema
).--hex-blob
Jika database Anda berisi kolom biner, Anda harus menggunakan flag ini untuk memastikan kolom biner Anda diimpor dengan benar.--single-transaction
Memulai transaksi sebelum berjalan. Daripada mengunci seluruh database, tindakan ini memungkinkan mysqldump membaca database dalam kondisi saat ini, sehingga menghasilkan dump data yang konsisten.--routines
Untuk menyertakan prosedur dan fungsi tersimpan.Saat menggunakan
mysqldump
versi 8 atau yang lebih baru untuk mengekspor database MySQL versi yang lebih lama dari 8:--column-statistics=0
Flag ini menghapus tabel COLUMN_STATISTICS dari ekspor database untuk menghindari error
Unknown table 'COLUMN_STATISTICS' in information_schema (1109)
. Untuk mengetahui informasi selengkapnya, lihat Mendiagnosis masalah.
Sebaiknya gunakan juga flag berikut:
--no-autocommit
--default-character-set=utf8mb4
--master-data
Dari mesin yang terhubung ke server MySQL Anda, jalankan perintah berikut:
mysqldump \
-h [SOURCE_ADDR] -P [SOURCE_PORT] -u [USERNAME] -p \
--databases [DBS] \
--hex-blob \
--no-autocommit \
--default-character-set=utf8mb4 \
--master-data=1 \
--single-transaction \
--routines \
| gzip \
| gcloud storage cp - gs://[BUCKET_NAME]/[DUMP_FILENAME].gz
Jika sumber migrasi adalah Relational Database Service (RDS) untuk MySQL:
- Properti
master-data
tidak didukung. - Jika server database sumber Anda mendukung GTID, gunakan properti
--set-gtid-purged=on
; jika tidak, jangan gunakan properti ini. - Jika Anda menggunakan dump manual untuk memigrasikan data, lakukan migrasi dengan mengaktifkan GTID.
Perintah ini mungkin terlihat seperti contoh berikut:
mysqldump \
-h [SOURCE_ADDR] -P [SOURCE_PORT] -u [USERNAME] -p \
--databases [DBS] \
--hex-blob \
--no-autocommit \
--default-character-set=utf8mb4 \
--set-gtid-purged=on \
--single-transaction \
--routines \
| gzip \
| gcloud storage cp - gs://[BUCKET_NAME]/[DUMP_FILENAME].gz
Selain itu, Anda harus mengonfigurasi instance RDS untuk mempertahankan binlog lebih lama. Perintah ini mungkin terlihat seperti contoh berikut:
# Sets the retention period to one week.
call mysql.rds_set_configuration('binlog retention hours', 168);
Ganti [PROPERTIES_IN_BRACKETS] dengan nilai berikut:
Properti | Nilai |
[SOURCE_ADDR] | Alamat IPv4 atau nama host untuk server database sumber. |
[SOURCE_PORT] | Port untuk server database sumber. |
[USERNAME] | Akun pengguna MySQL. |
[DBS] | Daftar database yang dipisahkan spasi di server database sumber
yang akan disertakan dalam dump. Gunakan perintah MySQL SHOW DATABASES untuk
mencantumkan database Anda. |
[BUCKET_NAME] | Bucket di Cloud Storage yang dibuat oleh pengguna dan digunakan untuk menyimpan file dump (misalnya, replica-bucket ). |
[DUMP_FILENAME] | Nama file dump, yang diakhiri dengan ekstensi file .gz (misalnya, source-database.sql.gz ). |