Fitur GTID
Fitur GTID diperkenalkan di ApsaraDB RDS for MySQL 5.6 untuk menambahkan opsi set-gtid-purged ke utilitas mysqldump yang disertakan dengan MySQL 5.6.
| Opsi | Nilai default dari bidang ini. | Nilai opsional | Tujuan |
| set-gtid-purged | AUTO | ON|OFF|AUTO | Menentukan apakah akan menyertakan pernyataan SET @@GLOBAL.GTID_PURGED dalam output mysqldump. |
Catatan
- ON: Pernyataan SET @@GLOBAL.GTID_PURGED disertakan dalam output mysqldump.
- OFF: Pernyataan SET @@GLOBAL.GTID_PURGED tidak disertakan dalam output mysqldump.
- AUTO: Nilai default. Untuk instance dengan GTID diaktifkan, pernyataan SET @@GLOBAL.GTID_PURGED disertakan dalam output mysqldump. Untuk instance yang tidak dimulai atau tidak mendukung GTID, informasi GTID tidak dibuat.
Jika Anda menggunakan mysqldump MySQL 5.6 atau versi lebih baru untuk mengekspor data ke instance RDS MySQL versi 5.5, Anda harus mengatur set-gtid-purged ke OFF. Jika tidak, kesalahan berikut terjadi:
Error: Server has GTIDs disabled.
atau
mysqldump: Couldn't execute 'SELECT @@GTID_MODE': Unknown system variable 'GTID_MODE' <1193>Hindari penantian kunci tingkat tabel
Dalam mysqldump, opsi lock-tables diaktifkan secara default untuk mengunci semua tabel sebelum membuangnya dan mencegah operasi DML pada tabel-tabel tersebut.
Mesin InnoDB dan TokuDB yang didukung oleh instance ApsaraDB RDS for MySQL mendukung transaksi. Kami merekomendasikan agar Anda menggunakan opsi single-transaction untuk membuang tabel, bukan mengatur opsi lock-all-tables atau lock-tables.
| Opsi | Nilai default dari bidang ini. | Nilai opsional | Tujuan |
| lock-all-tables | FALSE | TRUE|FALSE | Menentukan apakah akan mengunci semua tabel di seluruh database. Ini dicapai dengan mendapatkan kunci baca global selama durasi seluruh dump. Semua tabel di semua database bersifat hanya-baca selama dump. Opsi ini secara otomatis menonaktifkan opsi lock-tables dan single-transaction. ApsaraDB for RDS tidak mendukung opsi ini. |
| lock-tables | TRUE | TRUE|FALSE | Menentukan apakah akan mengunci tabel sebelum membuangnya. Secara default, opsi ini diaktifkan. Anda dapat menentukan opsi skip-lock-tables untuk menonaktifkan opsi ini. |
| single-transaction | FALSE | TRUE|FALSE | Menentukan apakah akan memulai transaksi sebelum membuang data. Opsi ini secara otomatis menonaktifkan opsi lock-tables. |
Setel set karakter untuk data yang akan dibuang
Jika tidak ada set karakter yang ditentukan, mysqldump menggunakan set karakter UTF-8 untuk membuang data.
| Opsi | Nilai default dari bidang ini. | Nilai opsional | Tujuan |
| default-character-set | UTF8 | Set karakter yang didukung oleh instance ApsaraDB RDS for MySQL | Mengatur set karakter untuk ekspor. |
Opsi tambahan yang perlu diperhatikan saat data dibuang
| Opsi | Nilai default dari bidang ini. | Nilai opsional | Tujuan |
| no-defaults | N/A | NA | Membaca file opsi .mylogin.cnf saja. |
| defaults-file=file_name | N/A | NA | Membaca file opsi tertentu. |
| add-drop-database | FALSE | TRUE|FALSE | Menentukan apakah akan menambahkan pernyataan DROP DATABASE sebelum setiap pernyataan CREATE DATABASE. |
| add-drop-table | TRUE | TRUE|FALSE | Menentukan apakah akan menambahkan pernyataan DROP TABLE sebelum setiap pernyataan CREATE TABLE. Secara default, opsi ini diaktifkan. Anda dapat menggunakan opsi skip-add-drop-table untuk menonaktifkan opsi ini. |
| add-locks | TRUE | TRUE|FALSE | Menentukan apakah akan mengelilingi setiap pernyataan terkait tabel dengan pernyataan LOCK TABLES tab_name WRITE dan UNLOCK TABLES untuk mempercepat penyisipan saat file dump dimuat ulang. |
| compatible=name | NA | ansi|postgresql|oracle|mssql | Meningkatkan kompatibilitas dengan tipe database tertentu. |
| compact | FALSE | TRUE|FALSE | Menentukan apakah akan mengaktifkan opsi skip-add-drop-table, skip-add-locks, skip-comments, skip-disable-keys, dan skip-set-charset. |
| databases | TRUE | TRUE|FALSE | Menentukan apakah akan membuang beberapa database. Secara default, mysqldump memperlakukan argumen nama pertama di baris perintah sebagai nama database dan nama-nama berikutnya sebagai nama tabel. Saat opsi ini ditentukan, mysqldump menafsirkan semua argumen nama sebagai nama database dan menyertakan pernyataan CREATE DATABASE dan USE DATABASE dalam output sebelum setiap database baru. |
| disable-keys | TRUE | TRUE|FALSE | Menentukan apakah akan mengelilingi pernyataan INSERT dengan /! 40000 ALTER TABLE tab_name DISABLE KEYS / dan /! 40000 ALTER TABLE tab_name ENABLE KEYS / untuk mempercepat pemuatan file dump. Opsi ini hanya efektif untuk indeks non-unik tabel MyISAM. |
| events | FALSE | TRUE|FALSE | Menentukan apakah akan membuang acara terjadwal dari database yang dibuang. |
| extended-insert | TRUE | TRUE|FALSE | Menentukan apakah akan menggabungkan pernyataan INSERT satu baris menjadi satu pernyataan yang menyisipkan beberapa baris tabel. |
| hex-blob | FALSE | TRUE|FALSE | Menentukan apakah akan mengekspor tipe data BINARY, VARBINARY, dan BLOB dalam notasi heksadesimal. Kami merekomendasikan Anda menambahkan opsi ini saat memigrasikan data antar versi database yang berbeda. |
| ignore-table=db.tab | TRUE | TRUE|FALSE | Menentukan apakah akan mengabaikan tabel atau tampilan. Format: nama database.nama tabel (db.tab). Anda dapat menggunakan opsi ini beberapa kali untuk mengabaikan beberapa tabel. |
| max-allowed-packet | 24MB | 24MB-1GB | Menentukan ukuran maksimum buffer untuk komunikasi antara mysqldump dan instance ApsaraDB RDS for MySQL. Nilai default adalah 24MB. Nilai maksimum adalah 1GB. |
| no-create-db | FALSE | TRUE|FALSE | Menentukan apakah akan mengecualikan pernyataan CREATE DATABASE dari output. |
| no-create-info | FALSE | TRUE|FALSE | Menentukan apakah akan mengecualikan pernyataan CREATE TABLE dari output. |
| no-data | FALSE | TRUE|FALSE | Menentukan apakah akan mengekspor database ApsaraDB RDS for MySQL ke file dump tanpa data. |
| opt | TRUE | TRUE|FALSE | Menentukan apakah akan mengaktifkan opsi add-drop-table, add-locks, create-options, disable-keys, extended-insert, lock-tables, quick, dan set-charset. Anda dapat menentukan opsi skip-opt untuk menonaktifkan opsi opt yang diaktifkan secara default. |
| dump-date | TRUE | TRUE|FALSE | Menentukan apakah akan menambahkan tanggal dump ke akhir output jika opsi comments ditentukan. Secara default, opsi comments diaktifkan. |
| routines | FALSE | TRUE|FALSE | Menentukan apakah akan membuang prosedur tersimpan dan fungsi dari database yang dibuang. Secara default, prosedur tersimpan dan fungsi tidak dibuang. |
| result-file | TRUE | TRUE|FALSE | Menentukan apakah akan mengarahkan output ke file tertentu. |
| set-charset | TRUE | TRUE|FALSE | Menentukan apakah akan menambahkan SET NAMES default_character_set ke output. |
| triggers | TRUE | TRUE|FALSE | Menentukan apakah akan menyertakan pemicu untuk setiap tabel yang dibuang dalam output. |
Opsi yang tidak didukung untuk apsaradb RDS for MySQL
| Opsi | Nilai default dari bidang ini. | Nilai opsional | Tujuan |
| all-databases | FALSE | Set karakter yang didukung oleh instance ApsaraDB RDS for MySQL | Menentukan apakah akan membuang semua database, termasuk database mysql. |
| flush-logs | FALSE | TRUE|FALSE | Menentukan apakah akan mengeksekusi pernyataan flush logs; di instance ApsaraDB RDS for MySQL sebelum memulai dump. |
| flush-privileges | FALSE | TRUE|FALSE | Menentukan apakah akan menambahkan pernyataan flush privileges; ke output dump setelah membuang database mysql. |
| lock-all-tables | FALSE | TRUE|FALSE | Menentukan apakah akan mengunci semua tabel di seluruh database. Ini dicapai dengan mendapatkan kunci baca global selama durasi seluruh dump. Semua tabel di semua database bersifat hanya-baca selama dump. Opsi ini secara otomatis menonaktifkan opsi lock-tables dan single-transaction. |
| tab=dir_name | N/A | NA | File tbl_name.sql (termasuk pernyataan pembuatan tabel) dan file data format teks tbl_name.txt dipisahkan dengan tab dihasilkan di direktori tertentu. |
Opsi yang Tidak Didukung dan Alasannya
- all-databases: Pengguna umum RDS MySQL tidak dapat mengekspor semua tabel database karena mereka tidak memiliki izin pada beberapa tabel di database mysql.
Pesan Kesalahan
mysqldump: Couldn't execute 'show create table slow_log': SHOW command denied to user 'xxx'@'xx.xx.xx.xx' for table 'slow_log' (1142) - flush-logs: Pengguna umum RDS MySQL tidak memiliki izin reload dan oleh karena itu tidak dapat dieksekusi.
flush logs;perintah.Pesan Kesalahan
mysqldump: Couldn't execute 'FLUSH TABLES': Access denied; you need (at least one of) the RELOAD privilege(s) for this operation (1227) - flush-privileges: Opsi ini tidak diperlukan karena ApsaraDB RDS for MySQL tidak mengizinkan Anda mengekspor database mysql.
- lock-all-tables: Pengguna umum RDS MySQL tidak memiliki izin reload dan oleh karena itu tidak dapat digunakan.
Pesan Kesalahan
mysqldump: Couldn't execute 'FLUSH TABLES': Access denied; you need (at least one of) the RELOAD privilege(s) for this operation (1227) - tab=dir_name: Opsi ini tidak didukung karena mysqldump dan instance ApsaraDB RDS for MySQL berada di mesin fisik yang sama. Namun, opsi ini dapat digunakan bersama dengan opsi no-data untuk mendapatkan pernyataan CREATE TABLE yang membuat tabel.
# Opsi ini dapat digunakan dengan opsi no-data untuk mendapatkan file tab_name.sql yang berisi pernyataan CREATE TABLE untuk setiap tabel di database test. mysqldump -no-defaults -uuser_name -ppass_word -hxxx.mysql.rds.aliyuncs.com -P3306 -set-gtid-purged=off -single-transaction -tab=/tmp -no-data test # Pesan kesalahan berikut muncul jika Anda menggunakan opsi no-data untuk membuang data: mysqldump -no-defaults -uuser_name -ppass_word -hxxx.mysql.rds.aliyuncs.com -P3306 -set-gtid-purged=off -single-transaction -tab=/tmp test mysqldump: Got error: 1045: Access denied for user ‘xxx’@’%’ (using password: YES) when executing ‘SELECT INTO OUTFILE’