Bagaimana cara memulai replikasi mysql?

Berikut cara mengatur replikasi antara dua MySQL 5. 7 server berjalan di Ubuntu 16. 04 LTS. Replikasi biasanya digunakan untuk meningkatkan ketersediaan atau memiliki node tambahan untuk menjalankan kueri dan laporan analitik. Kami juga menunjukkan bagaimana Anda dapat dengan mudah menggunakan OpsDash untuk memantau status replikasi

Ubuntu 16. Repositori 04 LTS hadir dengan versi 5. 7 dari MySQL, jadi menginstalnya hanya masalah

$ sudo apt-get install mysql-server

Posting selanjutnya menganggap Anda telah menyiapkan dua node identik yang menjalankan MySQL, yang dapat berbicara satu sama lain melalui jaringan pribadi, dan bahwa node tersebut memiliki IP.

master IP: 10.0.0.156 slave IP: 10.0.0.157_

Penyiapan utama

Pertama mari kita atur masternya. Proses ini perlu mengambil snapshot database yang konsisten, yang melibatkan penempatan kunci baca global. Ini berarti database akan bersifat hanya-baca dan semua penulisan akan diblokir selama penguncian berlangsung. Anda harus merencanakan waktu henti ini

1) Perbarui konfigurasi

Di dalam file /etc/mysql/mysql. conf. d/mysqld. cnf batalkan komentar atau atur yang berikut ini

bind-address = 10.0.0.156 server-id = 1 log_bin = /var/log/mysql/mysql-bin.log

Ini membuat master mendengarkan IP pribadi, menyetelnya master IP: 10.0.0.156 slave IP: 10.0.0.1579 (yang harus unik untuk setiap node di antara kumpulan node master dan slave yang terhubung) ke 1, dan mengaktifkan logging biner

2) Mulai ulang layanan MySQL agar perubahan diterapkan

sudo systemctl restart mysql_

3) Buat pengguna untuk replikasi

Kami akan menyiapkan budak untuk terhubung ke master melalui akun khusus. Akun membutuhkan bind-address = 10.0.0.156 server-id = 1 log_bin = /var/log/mysql/mysql-bin.log0 hak istimewa. Di sini kami menggunakan nama pengguna bind-address = 10.0.0.156 server-id = 1 log_bin = /var/log/mysql/mysql-bin.log1

$ mysql -u root -p Password: mysql> CREATE USER 'repl'@'10.0.0.157' IDENTIFIED BY 'slavepass'; Query OK, 0 rows affected (0.00 sec) mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'10.0.0.157'; Query OK, 0 rows affected (0.00 sec)

4) Kunci masternya

Selanjutnya kita perlu mengunci master untuk mendapatkan snapshot yang konsisten untuk mem-bootstrap budak

mysql> FLUSH TABLES WITH READ LOCK; Query OK, 0 rows affected (0.00 sec)_

Perhatikan bahwa kunci ini dilepaskan saat Anda keluar dari klien mysql CLI, atau saat Anda mengeluarkan bind-address = 10.0.0.156 server-id = 1 log_bin = /var/log/mysql/mysql-bin.log2. Kunci harus tetap di tempatnya sampai bind-address = 10.0.0.156 server-id = 1 log_bin = /var/log/mysql/mysql-bin.log3 pada langkah 6 di bawah selesai

5) Catat posisi log replikasi master

mysql> SHOW MASTER STATUS; +------------------+----------+--------------+------------------+-------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set | +------------------+----------+--------------+------------------+-------------------+ | mysql-bin.000001 | 613 | | | | +------------------+----------+--------------+------------------+-------------------+ 1 row in set (0.00 sec)

Informasi ini akan diperlukan untuk menginisialisasi budak di langkah berikutnya

6) Buang master db

$ mysqldump -u root -p --all-databases --master-data > dbdump.sql

Catatan. Anda juga dapat menghentikan mysqld dan mentransfer file db. Halaman ini memiliki detail lebih lanjut

7) Buka kunci database master

Anda dapat melakukannya dengan keluar dari shell mysql CLI Anda, atau dengan menjalankan

mysql> UNLOCK TABLES;

8) Salin file ke budak

Transfer file dump dengan aman ke slave, misalnya. g. , menggunakan bind-address = 10.0.0.156 server-id = 1 log_bin = /var/log/mysql/mysql-bin.log_4

$ scp dbdump.sql 10.0.0.157:/tmp

Pengaturan budak

1) Perbarui konfigurasi

Dalam file /etc/mysql/mysql. conf. d/mysqld. cnf, batalkan komentar atau atur yang berikut ini

master IP: 10.0.0.156 slave IP: 10.0.0.157_0

Seperti untuk master di atas, ini membuat budak mendengarkan IP pribadi, menyetelnya master IP: 10.0.0.156 slave IP: 10.0.0.1579 (kali ini ke 2), dan mengaktifkan logging biner. Meskipun logging biner tidak sepenuhnya diperlukan, masuk akal untuk menjaga konfigurasi budak sedekat mungkin dengan master, jika budak dipromosikan menjadi master. Itu juga memungkinkan budak ini bertindak sebagai master untuk budak lain

2) Mulai ulang layanan MySQL agar perubahan diterapkan

master IP: 10.0.0.156 slave IP: 10.0.0.157_1

3) Impor dump db

Impor file dump yang Anda buat di master dan salin ke budak ini

master IP: 10.0.0.156 slave IP: 10.0.0.157_2

4) Siapkan budak untuk berbicara dengan master

master IP: 10.0.0.156 slave IP: 10.0.0.157_3

Pada titik ini, budak sinkron dengan master dan siap menerima dan memutar ulang perubahan yang dilakukan pada master. Nilai bind-address = 10.0.0.156 server-id = 1 log_bin = /var/log/mysql/mysql-bin.log_6 dan bind-address = 10.0.0.156 server-id = 1 log_bin = /var/log/mysql/mysql-bin.log7 berasal dari output bind-address = 10.0.0.156 server-id = 1 log_bin = /var/log/mysql/mysql-bin.log8 yang Anda jalankan sebelumnya

Uji apakah replikasi berfungsi

Dan Anda selesai. Jika Anda sampai sejauh ini tanpa kesalahan, buat tabel/baris baru di master. Perubahan harus disebarkan kurang lebih secara instan ke budak. Periksa apakah perubahan muncul pada budak

Pengaturan Pemantauan

OpsDash adalah server yang dihosting sendiri dan solusi pemantauan layanan, yang dapat memantau instance MySQL. Ini gratis untuk digunakan hingga 5 server dan layanan. Mari kita lihat cara menyiapkannya untuk kasus ini

1) Instal server OpsDash

Unduh dan instal server OpsDash di mesin apa pun yang dapat terhubung ke server MySQL

master IP: 10.0.0.156 slave IP: 10.0.0.157_4

OpsDash harus aktif dan berjalan setelah perintah ini. Anda dapat menelusuri bind-address = 10.0.0.156 server-id = 1 log_bin = /var/log/mysql/mysql-bin.log9 untuk melihat UI OpsDash, di mana sudo systemctl restart mysql0 adalah IP server tempat Anda menginstal OpsDash. Ingatlah untuk membuka port di firewall Anda jika perlu

2) Buat pengguna MySQL

OpsDash perlu terhubung ke server MySQL dan mengumpulkan metrik. Mari buat pengguna baru untuk ini

master IP: 10.0.0.156 slave IP: 10.0.0.157_5

Hak istimewa sudo systemctl restart mysql1 dan sudo systemctl restart mysql2 memungkinkan OpsDash untuk menanyakan status replikasi. Anda juga dapat mengganti sudo systemctl restart mysql3 dengan IP server OpsDash yang sebenarnya

3) Beri tahu OpsDash tentang server MySQL

Dari UI OpsDash, mari tambahkan entri untuk setiap instance MySQL. Dari halaman Pengaturan Sistem -> Layanan, tambahkan layanan MySQL, berikan IP, nama pengguna ("opsdash") dan kata sandi ("opsdashpass")

4) Lihat dasbor

Dasbor untuk master (Sumber -> "master") menunjukkan berbagai metrik kesehatan dan kinerja, termasuk jumlah budak aktif (yang seharusnya 1). Anda dapat mengeklik grafik dan menyetel peringatan saat turun di bawah 1. OpsDash dapat memberi tahu Anda melalui email, Slack, HipChat, PagerDuty, atau Pushbullet saat peringatan terjadi

Dasbor budak menyertakan kelambatan replikasi (dalam detik), serta jumlah utas budak (harus ada 1 utas I/O budak dan 1 utas SQL budak yang berjalan dalam jalur normal)

Kegagalan Manual

Terakhir, mari kita lihat bagaimana slave MySQL dapat dipromosikan menjadi master secara manual. Perhatikan bahwa ini tidak mencakup failover yang tidak direncanakan/otomatis, hanya kasus ketika failover telah direncanakan dan dijalankan secara manual – seperti untuk peningkatan versi atau peningkatan perangkat keras

1) Hentikan modifikasi pada master

Koneksi ke master harus dihentikan terlebih dahulu, agar tidak ada lagi perubahan yang terjadi pada master

2) Tunggu hingga replikasi selesai

Semua perubahan harus direplikasi ke budak, dan budak harus menyelesaikan penerapannya. Anda dapat memeriksanya dengan menjalankan "SHOW PROCESSLIST" pada master

master IP: 10.0.0.156 slave IP: 10.0.0.157_6

Negara harus membaca “Tuan telah mengirim semua binlog ke budak; . Ini berarti master telah menyelesaikan bagian dari replikasi

Pada budak, menjalankan "SHOW SLAVE STATUS\G" memberikan status budak

master IP: 10.0.0.156 slave IP: 10.0.0.157_7

Kolom Slave_SQL_Running_State harus bertuliskan “Slave telah membaca semua log relai;

3) Promosikan budak

Sekarang Anda dapat mempromosikan budak dengan perintah

master IP: 10.0.0.156 slave IP: 10.0.0.157_8

Setelah perintah ini, node slave tidak lagi berbicara dengan master

4) Konfigurasi ulang aplikasi

Semua aplikasi dan pekerjaan harus dikonfigurasi untuk berbicara dengan master baru. Ini melengkapi failover

Bacaan lebih lanjut

Manual Referensi MySQL memiliki bab tentang replikasi, yang mendokumentasikan semua ini dan lebih banyak lagi. Anda juga dapat membaca tentang pengaturan lain seperti replikasi multi-master dan replikasi semisinkron, dan teknik seperti replikasi tertunda dan mengambil cadangan dari budak

Utilitas MySQL berisi alat yang dapat digunakan untuk mengotomatiskan langkah-langkah penyiapan replikasi dan kegagalan

Anda dapat mengetahui lebih lanjut tentang OpsDash di sini. OpsDash adalah server yang dihosting sendiri dan solusi pemantauan layanan dengan dukungan terintegrasi untuk pemantauan replikasi MySQL

Bagaimana cara memulai dan menghentikan replikasi di MySQL?

Untuk menghentikan pemrosesan log biner dari sumber, gunakan STOP REPLICA. .
mysql> BERHENTI BUDAK; . 0. .
mysql> BERHENTI BUDAK IO_THREAD; . 0. .
mysql> MULAI BUDAK; . 0. .
mysql> MULAI BUDAK IO_THREAD; . 0

Bagaimana cara memulai replikasi?

Sambungkan ke Publisher di Management Studio, lalu perluas node server dan folder Replikasi. Luaskan folder Publikasi Lokal, lalu klik kanan sebuah publikasi. Klik Lihat Status Agen Snapshot atau Lihat Status Agen Pembaca Log. Klik Mulai atau Berhenti

Bagaimana cara kerja replikasi MySQL?

Replikasi memungkinkan data dari satu server database MySQL (dikenal sebagai sumber) untuk disalin ke satu atau lebih server database MySQL (dikenal sebagai replika). Replication is asynchronous by default; replicas do not need to be connected permanently to receive updates from a source.

Bagaimana cara mengkonfigurasi replikasi di server MySQL?

Langkah 1. Instal MySQL di Server Master dan Slave. Kami akan memulai dengan menginstal database MySQL di server master dan slave. .
Langkah 2. Amankan MySQL di Server Master dan Slave. .
Langkah 3. Konfigurasi Node Master (Server).
Langkah 4. Konfigurasikan Node Budak (Server).
Langkah 4. Menguji Replikasi Master-Slave MySQL

Postingan terbaru

LIHAT SEMUA