Bagaimana opsi mydumper's '' --use-savepoints "mengurangi penguncian metadata

8

MyDumper 0.6.1 menambahkan opsi baru --use-savepoints. Dari manual, itu berarti:

Gunakan savepoint untuk mengurangi masalah penguncian metadata, membutuhkan hak istimewa SUPER

Saya tidak mengerti. Bagaimana cara "mengurangi masalah penguncian metadata" dan mengapa perlu "hak istimewa SUPER"? Seperti yang saya pikirkan, metadata sangat penting untuk mencegah struktur tabel modifikasi DDL lainnya.

kata daun
sumber

Jawaban:

3

Saya harus melakukan sedikit penggalian dalam kode sumber mydumper untuk menemukan jawaban untuk pertanyaan ini. Jika Anda melihat kode sumber mydumper yang sebenarnya:

Anda akan menemukan mulai berikut ini pada baris 415 sebagai bagian dari antrian proses:

if(use_savepoints && mysql_query(thrconn, "SET SQL_LOG_BIN = 0")){
    g_critical("Failed to disable binlog for the thread: %s",mysql_error(thrconn));
    exit(EXIT_FAILURE);
}

Ini menunjukkan menggunakan --use-savepoints di mydumper membutuhkan kemampuan untuk mematikan log bin MySQL. Saya mencoba ini di server MariaDB saya sendiri yang masih menggunakan MySQL sebagai basis DBMS dan mendapatkan kesalahan berikut ketika menggunakan akun non administrator:

MariaDB [(tidak ada)]> SET SQL_LOG_BIN = 0; GALAT 1227 (42000): Akses ditolak; Anda memerlukan (setidaknya satu dari) hak istimewa SUPER untuk operasi ini

Dari apa yang saya baca dari kode aktual dan menguji kondisi ini di server MySQL saya sendiri, pemahaman saya adalah Anda perlu "hak istimewa SUPER" karena mydumper akan menonaktifkan logging ke binlog saat sedang berjalan. Ini adalah bagian dari kekuatan "penebangan yang mengaktifkan atau menonaktifkan" SUPER yang disebutkan dalam DOCS .

Info lebih spesifik tentang binlog ada di sini:

http://dev.mysql.com/doc/refman/5.6/id/set-sql-log-bin.html

Sejauh savepoints:

http://dev.mysql.com/doc/refman/5.6/en/savepoint.html

Setelah membaca manual dan laporan bug ini sepertinya jika savepoints dirilis mereka akan merilis kunci di atas meja yang sedang dikerjakan yang dapat mencegah masalah penguncian yang telah terlihat di mysqldump baru-baru ini seperti MySQL 5.5.

Saya harap ini memberi sedikit lebih banyak wawasan ke dalam alat mydumper.

JPeck89
sumber