Konsep
Seperti MyISAM dan InnoDB, BlackHole ialah satu lagi enjin MySQL Dari sudut pandangan literal,
ia berkelakuan seperti lubang hitam , anda hanya boleh masuk tetapi tidak keluar Setelah anda masuk, anda hilang. Dalam erti kata lain, sebarang data yang ditulis kepadanya akan hilang, sedikit seperti Linux /dev/null
Contohnya, enjin ujian jadual ialah BlackHole, sebarang sisipan pada jadual ini akan hilang,
padanya pilih sentiasa mengembalikan set kosong Hanya terdapat satu fail test.frm dalam direktori data yang sepadan dan tiada fail lain dikaitkan dengannya.
Senario Penggunaan
Apakah gunanya enjin yang tidak menyimpan sebarang data?
Kuncinya ialah walaupun ia tidak menyimpan data, operasi pada pangkalan data masih direkodkan dalam log binlog.
Ini membawa faedah, ia boleh digunakan sebagai perantara untuk replikasi tuan-hamba, menukar operasi penyegerakan asal daripada pangkalan data utama kepada penyegerakan daripada pangkalan data enjin BlackHole sebagai perantara.
1. Berkongsi beban perpustakaan utama sebagai perpustakaan induk pseudo
Seperti yang kita sedia maklum, apabila terdapat banyak perpustakaan hamba, semua perpustakaan hamba memuatkan data dari perpustakaan utama, yang mana akan menambah beban perpustakaan utama. Tetapi jika anda menyegerakkan daripada perpustakaan pseudo-utama BlackHole, anda boleh mengurangkan beban pada perpustakaan utama. Seni bina tuan-hamba asal lebih kurang seperti berikut:
现在,BlackHole伪主库作为中介,变成这样:
Khususnya, replika boleh dikonfigurasikan dalam pseudo- perpustakaan induk- lakukan dan replikasi-abaikan peraturan menapis jadual yang tidak perlu disegerakkan.
2. Sebagai pengumpul log binlog
ia tidak menyimpan data sebenar, tetapi hanya merekodkan ciri-ciri binlog, supaya enjin boleh digunakan untuk pengumpulan log binlog untuk memudahkan analisis pangkalan data.
Pengetahuan berkaitan: Terdapat tiga format untuk log binlog: baris, pernyataan dan campuran.
baris merekodkan rekod yang diubah bagi setiap baris dengan kata lain, kemas kini akan merekodkan semua baris yang diubah suai yang memenuhi syarat Alter table adalah lebih teruk lagi, yang bersamaan dengan membina semula keseluruhan jadual dan merekodkan semua baris. Oleh itu, log dalam format ini mudah menjadi terlalu besar; kaedah
penyataan hanya merekodkan SQL yang mengubah data Tiada masalah dengan kaedah baris, tetapi ia akan merekodkan konteks maklumat pelaksanaan SQL, yang merupakan kelemahan Masalahnya ialah apabila maklumat konteks diterbitkan semula di hujung yang lain, ia adalah mudah untuk membuat kesilapan kerana maklumat yang lebih kompleks.
bercampur menggabungkan baris dan pernyataan.
Konfigurasi
Dalam pustaka pseudo, konfigurasi berikut diperlukan:
Konfigurasikan jenis lalai sebagai BlackHole, anda boleh menggunakan
default_table_type = BLACKHOLE
atau
default-storage -engine = BLACKHOLE
Buka binlog: log-bin = ms-mysql-bin
Specially configure: log-slave-update = 1. Hanya dengan cara ini, operasi dalam perpustakaan utama akan disegerakkan ke binlog BlackHole , jika tidak, hanya operasi yang menyasarkan secara langsung BlackHole akan direkodkan ke binlog.
Abaikan InnoDB: langkau-innodb Apabila pernyataan penciptaan jadual mengandungi engine=innodb, enjin BlackHole lalai akan digunakan.
Perlu diingatkan bahawa apabila seni bina ini diterima pakai, terdapat lapisan tengah tambahan untuk penyegerakan data, dan isu kelewatan perlu dipertimbangkan dengan lebih lanjut.