Fitur GTID
MySQL 5.6 memperkenalkan fitur Global Transaction Identifier (GTID). Akibatnya, utilitas mysqldump pada MySQL 5.6 dan versi yang lebih baru menyertakan opsi set-gtid-purged.
Parameter | Default | Nilai | Deskripsi |
set-gtid-purged | AUTO | ON|OFF|AUTO | Mengontrol apakah pernyataan |
ON: Menyertakan pernyataanSET @@GLOBAL.GTID_PURGEDdalam outputmysqldump.OFF: Tidak menyertakan pernyataanSET @@GLOBAL.GTID_PURGEDdalam outputmysqldump.AUTO: Nilai default. Menyertakan pernyataanSET @@GLOBAL.GTID_PURGEDjika GTID diaktifkan pada instans sumber; jika tidak, informasi GTID tidak disertakan.
Oleh karena itu, saat menggunakan mysqldump dari MySQL 5.6 atau versi yang lebih baru untuk mengekspor data dari instans ApsaraDB RDS for MySQL 5.5, Anda harus mengatur set-gtid-purged ke OFF. Jika tidak, salah satu error berikut akan terjadi:
Error: Server has GTIDs disabled.
or
mysqldump: Couldn’t execute ‘SELECT @@GTID_MODE’: Unknown system variable ‘GTID_MODE’ <1193>Menghindari penundaan lock tingkat tabel
Secara default, mysqldump mengaktifkan opsi lock-tables, yang menerapkan lock tingkat tabel pada tabel yang diekspor dan memblokir operasi Data Manipulation Language (DML) pada tabel tersebut.
Mesin penyimpanan InnoDB dan TokuDB, yang didukung secara default pada instans ApsaraDB RDS for MySQL, keduanya mendukung transaksi. Kami merekomendasikan penggunaan opsi single-transaction untuk mengekspor data, bukan opsi lock-all-tables atau lock-tables.
Parameter | Default | Nilai | Deskripsi |
lock-all-tables | FALSE | TRUE|FALSE | Memperoleh global read lock selama proses ekspor. Hal ini membuat semua tabel di semua database menjadi read-only. Opsi ini secara otomatis menonaktifkan opsi |
lock-tables | TRUE | TRUE|FALSE | Mengunci tabel yang diekspor selama proses ekspor. Opsi ini diaktifkan secara default. Untuk menonaktifkannya, gunakan opsi |
single-transaction | FALSE | TRUE|FALSE | Menjalankan ekspor dalam satu transaksi. Opsi ini secara otomatis menonaktifkan opsi |
Mengatur set karakter ekspor
Jika tidak ditentukan, mysqldump secara default menggunakan UTF8.
Parameter | Default | Nilai | Deskripsi |
default-character-set | UTF8 | Set karakter yang didukung oleh instans | Mengatur set karakter untuk ekspor. |
Opsi ekspor lainnya
Parameter | Default | Nilai | Deskripsi |
no-defaults | NA | NA | Tidak membaca file opsi apa pun, kecuali |
defaults-file=file_name | NA | NA | Hanya membaca file opsi yang ditentukan. |
add-drop-database | FALSE | TRUE|FALSE | Menambahkan pernyataan |
add-drop-table | TRUE | TRUE|FALSE | Menambahkan pernyataan |
add-locks | TRUE | TRUE|FALSE | Menyisipkan setiap dump tabel di antara pernyataan |
compatible=name | NA | ansi|postgresql|oracle|mssql | Menghasilkan output yang lebih kompatibel dengan tipe database yang ditentukan. |
compact | FALSE | TRUE|FALSE | Mengaktifkan opsi |
databases | FALSE | TRUE|FALSE | Mengekspor beberapa database. Secara default, |
disable-keys | TRUE | TRUE|FALSE | Menyisipkan pernyataan |
events | FALSE | TRUE|FALSE | Mengekspor event terjadwal dari database yang di-dump. |
extended-insert | TRUE | TRUE|FALSE | Menggunakan sintaks |
hex-blob | FALSE | TRUE|FALSE | Mengekspor kolom |
ignore-table=db.tab | NA | NA | Mengecualikan tabel atau view yang ditentukan. Formatnya adalah |
max-allowed-packet | 24 MB | 24 MB hingga 1 GB | Mengatur ukuran buffer maksimum untuk komunikasi client-server. Nilai default-nya adalah 24 MB. Nilai maksimumnya adalah 1 GB. |
no-create-db | FALSE | TRUE|FALSE | Menekan pernyataan |
no-create-info | FALSE | TRUE|FALSE | Menekan pernyataan |
no-data | FALSE | TRUE|FALSE | Tidak menulis data baris apa pun. |
opt | TRUE | TRUE|FALSE | Mengaktifkan opsi |
dump-date | TRUE | TRUE|FALSE | Menambahkan stempel waktu dump sebagai komentar di akhir output. Ini memerlukan opsi |
routines | FALSE | TRUE|FALSE | Mengekspor prosedur tersimpan dan fungsi. Opsi ini dinonaktifkan secara default. |
result-file | NA | NA | Mengarahkan output ke file yang ditentukan. |
set-charset | TRUE | TRUE|FALSE | Menambahkan |
triggers | TRUE | TRUE|FALSE | Mengekspor pemicu untuk setiap tabel yang di-dump. |
Opsi yang tidak didukung
Parameter | Default | Nilai | Deskripsi |
all-databases | FALSE | TRUE|FALSE | Mengekspor semua database, termasuk database |
flush-logs | FALSE | TRUE|FALSE | Menjalankan perintah |
flush-privileges | FALSE | TRUE|FALSE | Menambahkan perintah |
lock-all-tables | FALSE | TRUE|FALSE | Memperoleh global read lock selama proses ekspor, yang membuat semua tabel di semua database menjadi read-only. Opsi ini secara otomatis menonaktifkan opsi |
tab=dir_name | NA | NA | Menghasilkan file |
Opsi yang tidak didukung dan alasannya
all-databases: Opsi ini tidak didukung. Akun pengguna standar di ApsaraDB RDS for MySQL tidak memiliki izin untuk beberapa tabel di databasemysql, sehingga penggunaannya menyebabkan error.Pesan error
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: Opsi ini tidak didukung. Akun pengguna standar di ApsaraDB RDS for MySQL tidak memiliki hak istimewaRELOADdan karenanya tidak dapat menjalankan perintahflush logs;.Pesan error
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 mendukung ekspor databasemysql.lock-all-tables: Opsi ini tidak didukung. Akun pengguna standar di ApsaraDB RDS for MySQL tidak memiliki hak istimewaRELOAD.Pesan error
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 memerlukanmysqldumpdijalankan pada mesin fisik yang sama dengan instans ApsaraDB RDS for MySQL. Namun, Anda dapat menggunakan opsi ini bersama opsino-datauntuk menghasilkan file yang berisi pernyataanCREATE TABLE.# Gunakan opsi ini bersama 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 error yang dikembalikan saat Anda mengekspor data tanpa menggunakan opsi --no-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’