Haruskah saya mem-bootstrap router mysql?

Saat ini saya menginstal openstack menggunakan openstack-charms deployment tools berdasarkan url ini Open Source Cloud Computing Platform Software - OpenStack. lalu saya menjalankan perintah berikut untuk menggunakan vault. penyebaran juju --ke lxd. 3 vault juju menerapkan mysql-router vault-mysql-router juju add-relation vault-mysql-router. db-router mysql-innodb-cluster. db-router juju add-relation vault-mysql-router. brankas db bersama. shared-db

hasilnya “MySQL Router not yet bootstrapped” seperti pada gambar dibawah ini

Haruskah saya mem-bootstrap router mysql?

ketika saya masuk ke lxd, lalu saya memeriksa unit-vault-mysql-router-2. file log saya mendapatkan pesan error. satuan KESALAHAN. vault-mysql-router/2. server juju-log. Pergilah. 327 Gagal mem-bootstrap mysqlrouter. Kesalahan. Bootstrap Router dengan beberapa bagian metadata_cache tidak didukung

Bahkan sebagai konsultan berpengalaman, Anda tidak memikirkan banyak hal sampai Anda dihadapkan pada mereka. Saya telah mengoperasikan beberapa cluster InnoDB termasuk router MySQL selama beberapa tahun terakhir. Sampai sekarang, ini selalu merupakan proses interaktif di mana tidak ada masalah untuk memasukkan kata sandi pengguna istimewa (di konsol). Jelas, setidaknya dalam teori, bahwa ini juga harus dimungkinkan dengan cara lain, karena operator MySQL untuk Kubernetes, misalnya, juga dapat "menyebarkan" router secara otomatis. Saatnya melihat dokumentasi.  

Kami telah melaporkan tentang MySQL InnoDB Cluster dan MySQL Router beberapa kali. Tugas Router adalah mengetahui keadaan cluster dan peran node dalam sistem, dan membuat informasi ini transparan ke klien yang terhubung. Dalam praktiknya, ini berarti klien dan/atau server aplikasi ingin memulai koneksinya ke router, tetapi kemudian diteruskan ke sistem di cluster. Dengan cara ini, klien tidak perlu mengetahui node mana di cluster yang saat ini dapat memproses peran utama (dan dengan demikian juga menerima akses tulis, misalnya).  

Haruskah saya mem-bootstrap router mysql?

(Sumber. https. //dev. mysql. com/doc/refman/8. 0/en/images/innodb_cluster_overview. png)

Untuk mengoperasikan router, yang disebut proses bootstrap dimulai. Router terhubung ke node di cluster InnoDB yang sesuai dan membuat akun pengguna khusus di semua node yang dapat digunakan untuk memeriksa status cluster. Pengguna ini sebenarnya tidak membutuhkan hak yang berlebihan.  

GRANT USAGE ON *.* TO `router`@`%` 
GRANT SELECT, EXECUTE ON `mysql_innodb_cluster_metadata`.* TO `router`@`%` 
GRANT INSERT, UPDATE, DELETE ON `mysql_innodb_cluster_metadata`.`routers` TO `router`@`%` 
GRANT INSERT, UPDATE, DELETE ON `mysql_innodb_cluster_metadata`.`v2_routers` TO `router`@`%` 
GRANT SELECT ON `performance_schema`.`global_variables` TO `router`@`%` 
GRANT SELECT ON `performance_schema`.`replication_group_member_stats` TO `router`@`%` 
GRANT SELECT ON `performance_schema`.`replication_group_members` TO `router`@`%`  

Menurut contoh dalam dokumentasi, pengguna "root" harus digunakan untuk bootstrap ini, karena pengguna ini memiliki hak untuk membuat pengguna baru di node yang terlibat

$> mysqlrouter --bootstrap root@localhost:3310 --directory /tmp/myrouter --conf-use-sockets --account routerfriend --account-create always_

Sumber. https. //dev. mysql. com/doc/mysql-router/8. 0/en/mysql-router-deploying-bootstrap. html

Jika tidak ada nama pengguna (--account) yang ditentukan, MySQL "membuat" namanya sendiri (di sini "mysql_router12_u36vawan0901").  

bash> root@2210103d6224:/# mysqlrouter --bootstrap=root:root@node1 -d my_router --user=mysql 
# Bootstrapping MySQL Router instance at '/my_router'.. 
.. 
bash cat my_router/mysqlrouter.conf | grep user | grep router 
user=mysql_router12_u36vawan0901  
_

Sekarang, dalam skenario tertentu (kontainer, solusi otomasi, skrip), seseorang tidak ingin mengungkapkan "root" akun DBA termasuk. kata sandi. Jadi bisakah Anda mendesain proses bootstrap secara berbeda? . Alih-alih membiarkan membuat pengguna selama bootstrap, kami menyiapkan akun terlebih dahulu. Tentu saja, kita cukup membuat pengguna secara manual menggunakan SQL sederhana (lihat di atas). Tapi lebih mudah dengan cangkangnya. Untuk melakukan ini, kami mengambil langkah-langkah berikut.  

# Connect to the cluster 
MySQL JS >\c root:root@node1 

# Instantiate cluster object 
MySQL node1:33060+ ssl JS > var clu = dba.getCluster('ordix'); 
 
# create router account 
MySQL node1:33060+ ssl JS > clu.setupRouterAccount('my_router') 

Missing the password for new account my_router@%. Please provide one. 
Password for new account: ****** 
Confirm password: ****** 

Creating user my_router@%. 
Account my_router@% was successfully created.  

Pada langkah terakhir, kami menggunakan akun pengguna baru yang tidak terlalu istimewa untuk menginisialisasi (bootstrap) router.  

bash> mysqlrouter --bootstrap=my_router:secret@node1 --account=my_router --directory=safe_router --user=mysql --account-create=never --force 
# Bootstrapping MySQL Router instance at '/safe_router'.. 

bash> cat safe_router/mysqlrouter.conf | grep user 
user=my_router  

Seperti yang dapat dilihat, penginstalan otomatis router yang "aman" dapat dilakukan dengan cukup mudah. Tentu saja, ini bukan pengetahuan rahasia dan juga bisa dipahami (dengan ketekunan tertentu) melalui dokumentasi. Tapi mungkin artikel ini masih merupakan "jalan pintas" kecil bagi sebagian dari Anda

Apakah Anda memiliki pertanyaan tentang pengoperasian MySQL and Co. maka silahkan hubungi kami. Kami senang membantu.  

Apakah router MySQL diperlukan?

MySQL Router adalah bagian dari InnoDB Cluster dan merupakan middleware ringan yang menyediakan perutean transparan antara aplikasi Anda dan Server MySQL back-end. Ini digunakan untuk berbagai macam kasus penggunaan, seperti menyediakan ketersediaan tinggi dan skalabilitas dengan merutekan lalu lintas database ke server MySQL back-end yang sesuai .

Bagaimana cara mengkonfigurasi router MySQL?

Mengekstrak Arsip Instal
Membuat File Opsi
Memilih Jenis Server MySQL
Inisialisasi Direktori Data
Memulai Server untuk Pertama Kalinya
Memulai MySQL dari Baris Perintah Windows
Menyesuaikan PATH untuk Alat MySQL
Memulai MySQL sebagai Layanan Windows

Apa tujuan utama cluster MySQL InnoDB?

InnoDB Cluster menyediakan alternatif, cara terprogram yang mudah digunakan untuk bekerja dengan Replikasi Grup . MySQL Router, middleware ringan yang menyediakan perutean transparan antara aplikasi Anda dan InnoDB Cluster.

Apa kata sandi untuk konfigurasi router MySQL?

Nama pengguna default untuk router MySQL Anda adalah root. Kata sandi default adalah (kosong) . Masukkan nama pengguna & kata sandi, tekan "Enter" dan sekarang Anda akan melihat panel kontrol router Anda.