Penulis: shuixian
Apakah prosedur dan fungsi tersimpan MySQL 5.1 berfungsi pada replikasi?
Ya, perilaku standar dilakukan dalam prosedur dan fungsi tersimpan yang direplikasi dari server master MySQL ke server budak.
Bisakah prosedur dan fungsi tersimpan yang dibuat di server master disalin ke server budak?
Ya, prosedur dan fungsi tersimpan dijalankan melalui pernyataan DDL umum, yang pembuatannya di server master disalin ke server budak, sehingga targetnya akan ada di kedua server. Pernyataan ALTER dan DROP untuk prosedur dan fungsi tersimpan juga direplikasi.
Bagaimana perilaku terjadi dalam prosedur dan fungsi tersimpan yang direplikasi?
MySQL mencatat setiap peristiwa DML yang terjadi dalam prosedur dan fungsi tersimpan, dan mereplikasi tindakan individual ini ke server budak. Panggilan sebenarnya ke prosedur dan fungsi tersimpan tidak disalin.
Apakah ada persyaratan keamanan khusus untuk menggunakan prosedur tersimpan, fungsi, dan replikasi secara bersamaan?
Ya, karena budak memiliki izin untuk mengeksekusi pernyataan apa pun yang membaca log biner master, batasan keamanan yang ditentukan ada untuk prosedur dan fungsi tersimpan yang digunakan dengan replikasi. Jika replikasi atau logging biner diaktifkan secara umum (untuk tujuan pemulihan point-in-time), maka DBA MySQL memiliki dua opsi keamanan yang tersedia:
Setiap pengguna yang ingin membuat prosedur tersimpan harus diberikan hak istimewa SUPER.
Sebagai alternatif, DBA dapat mengatur variabel sistem log_bin_trust_routine_creators ke 1, yang akan memungkinkan siapa pun dengan izin CREATE ROUTINE standar untuk membuat prosedur dan fungsi tersimpan.
Apa saja batasan perilaku menyalin prosedur dan fungsi tersimpan?
Garis tak tentu (acak) atau berbasis waktu yang tertanam dalam prosedur tersimpan tidak disalin dengan benar. Hasil yang dihasilkan secara acak, pada dasarnya, dapat diprediksi dan tidak dapat dikloning dengan andal. Oleh karena itu, perilaku acak yang direplikasi ke budak tidak akan mencerminkan perilaku yang terjadi pada master. Perhatikan bahwa mendeklarasikan prosedur atau fungsi tersimpan DETERMINISTIS atau mengatur variabel sistem ke 0 di log_bin_trust_routine_creators akan memungkinkan pemanggilan operasi nilai acak.
Selain itu, perilaku berbasis waktu tidak dapat direproduksi di server budak karena perilaku berbasis waktu tersebut tidak dapat direproduksi dalam prosedur tersimpan melalui log biner yang digunakan untuk replikasi, karena log biner hanya mencatat peristiwa DML dan tidak menyertakan batasan waktu.
Terakhir, jika kesalahan terjadi pada tabel non-interaktif selama tindakan DML besar (seperti penyisipan massal), tabel non-interaktif mungkin mengalami replikasi, dan server master mungkin diperbarui sebagian dari tindakan DML dalam versi yang direplikasi. dari tabel non-interaktif. Namun karena error yang terjadi, tidak ada update pada server slave. Untuk perilaku fungsi DML, ruang kerja akan dieksekusi dengan kata kunci IGNORE sehingga pembaruan yang menyebabkan kesalahan pada server master diabaikan, dan pembaruan yang tidak menyebabkan kesalahan disalin ke server budak.