Cara Menyiapkan Replikasi Master-Hamba MySQL

Cara Menyiapkan Replikasi Master-Hamba MySQL

Replikasi mysql adalah proses di mana pelayan induk mereplikasi datanya ke satu atau lebih pelayan hamba. Ini dapat memberikan beberapa faedah seperti peningkatan ketersediaan data, prestasi yang lebih baik, dan sandaran yang lebih mudah. Satu aspek penting replikasi adalah keselamatan, dan dalam artikel ini, kami akan meneroka cara mengkonfigurasi replikasi master-hamba MySQL dengan pengesahan menggunakan sijil SSL.

Dengan menggunakan sijil SSL, kami dapat memastikan bahawa data yang direplikasi adalah selamat dan hanya boleh diakses oleh pihak yang diberi kuasa. Di samping itu, sijil SSL juga boleh digunakan untuk mengesahkan pelayan tuan dan hamba, menyediakan lapisan keselamatan tambahan.

Dalam artikel ini, kami akan melalui proses menubuhkan konfigurasi replikasi master-hamba dengan sijil SSL, termasuk membuat dan memasang sijil, mengkonfigurasi pelayan tuan dan hamba, dan menyelesaikan masalah umum.

Faedah replikasi mysql

Faedah utama replikasi master-hamba MySQL adalah:

  • Prestasi: Salah satu faedah utama ialah ia membolehkan pemunggahan pertanyaan baca sahaja dari pangkalan data induk kepada hamba, meningkatkan prestasi dan skalabilitas sistem pangkalan data. Ini kerana pangkalan data induk hanya bertanggungjawab untuk mengendalikan urus niaga bertulis, sementara hamba dapat mengendalikan urus niaga membaca.
  • Redundansi dan toleransi kesalahan: Manfaat lain dari replikasi master-hamba MySQL adalah bahawa ia memberikan tahap kelebihan dan toleransi kesalahan. Sekiranya pangkalan data induk turun, hamba dapat terus melayani permintaan baca, meminimumkan downtime. Di samping.
  • Sandaran dan pemulihan: Replikasi Master-Hamba MySQL juga boleh digunakan untuk sandaran dan pemulihan data. Dengan kerap mengambil sandaran hamba, anda boleh mempunyai salinan data yang boleh digunakan sekiranya berlaku bencana di pangkalan data induk.

Artikel ini akan membantu anda menubuhkan replikasi master-hamba antara dua pelayan MySQL. Tutorial ini diuji di Ubuntu 22.04 Contoh Linux dengan MySQL 8.0 pelayan pangkalan data.

Butiran Persediaan:

Untuk tujuan ujian, saya telah mencipta dua sistem di rangkaian tempatan saya. Kedua -dua sistem mempunyai IP yang berbeza dari rangkaian yang sama. Dengan mengandaikan bahawa pelayan pangkalan data tuan dan hamba mempunyai IPS di bawah seperti di bawah:

Pelayan induk: 11.11.11.11 pelayan hamba: 22.22.22.22 

Sekiranya anda menggunakan berbeza - versi MySQL yang berbeza pada Master dan Hamba Gunakan pautan ini untuk memeriksa keserasian.

Langkah 1: Buat Sijil SSL [Master]

Pertama, anda perlu menjana sijil CA. Pihak Berkuasa Sijil (CA) adalah organisasi pihak ketiga yang dipercayai yang mengeluarkan sijil digital yang digunakan untuk mengesahkan identiti dan keaslian entiti. Kemudian kami dapat menjana sijil digital untuk sistem tuan dan klien yang ditandatangani oleh sijil CA.

  1. Buat direktori untuk menyimpan sijil SSL baru.
    mkdir/etc/mysql/certs  CD/ETC/MYSQL/CERTS  
  2. Sekarang, menjana sijil untuk digunakan sebagai pihak berkuasa sijil.
    OpenRSA OpenRSA 4096> Ca-Key.PEM  OpenSSL Req -New -X509 -Nodes -Days 9999 -Key CA -KEY.PEM> CA-CERT.PEM  
  3. Menjana sijil untuk pelayan induk MySQL:
    OPENSSL REQ -NEWKEY RSA: 4096 -Day 9999 -Nodes -Keyout Server -Key.PEM> Server-Req.PEM  OpenSSL X509 -Req -in Server -Req.PEM -Day 9999 -CA CA -CERT.PEM -Cakey Ca -Key.PEM -Set_Serial 01> server server.PEM  
  4. Kemudian menghasilkan sistem sijil untuk pelanggan (hamba).
    OPENSSL REQ -NEWKEY RSA: 4096 -Day 9999 -Nodes -Keyout Client -Key.PEM> pelanggan-req.PEM  OpenSSL X509 -Req -in Client -Req.PEM -Day 9999 -CA CA -CERT.PEM -Cakey Ca -Key.PEM -Set_Serial 01> Klien -Cert.PEM  

Nota PENTING: Pastikan menggunakan yang berbeza "Nama Biasa (FQDN)" untuk fail CA daripada fail sijil tuan dan pelanggan.

Langkah 2: Kemas kini fail konfigurasi MySQL [Master]

Seterusnya fail konfigurasi MySQL (contohnya:/etc/mysql/mysql.Conf.D/mysqld.CNF) dan tambah/kemas kini penyertaan berikut:

[mysqld] server-id = 1 binlog-format = Log-bin bercampur = mysql-bin innodb_flush_log_at_trx_commit = 1 sync_binlog = 1 ssl ssl-ca =/etc/mysql/certs/CA-CERT.PEM SSL-CERT =/etc/mysql/certs/server-cert.PEM SSL-KEY =/ETC/MYSQL/CERTS/SERVER-KEY.PEM
1234567891011[mysqld] server-id = 1binlog-format = mixedlog-bin = mysql-bininnodb_flush_log_at_trx_commit = 1sync_binlog = 1 sslssl-ca =/etc/mysql/certs/ca-cert.pemssl-sert =/etc/mysql/certs/server-cert.pEMSSL-KEY =/etc/mysql/certs/pelayan-kunci.PEM

Langkah 3: Buat Pengguna Replikasi [Master]

Dalam langkah ini, kami akan membuat pengguna baru dalam pelayan MySQL yang akan digunakan untuk mengesahkan pelanggan dengan perkhidmatan induk. Oleh itu, log masuk ke pelayan MySQL pada pelayan pangkalan data induk dengan pengguna istimewa root. Kemudian buat pengguna baru, yang akan digunakan untuk proses replikasi.

Sambungkan ke Server MySQL kemudian laksanakan dan laksanakan pertanyaan berikut untuk membuat pengguna baru dan berikannya kepada akses hamba.

mysql> buat pengguna 'replikasi'@'22.22.22.22 'dikenal pasti oleh' asecurepa $$ w0rd 'memerlukan SSL; mysql> hamba replikasi geran di *.* Ke 'replikasi'@'22.22.22.22 '; mysql> keistimewaan flush;
123mysql> buat pengguna 'replikasi'@'22.22.22.22 'dikenal pasti oleh' asecurepa $$ w0rd 'memerlukan ssl; mysql> hamba replikasi geran di *.* Ke 'replikasi'@'22.22.22.22 '; mysql> keistimewaan flush;

Pastikan untuk menggantikan '22.22.22.22 'dengan alamat IP contoh hamba.

Pastikan menggunakan kata laluan yang kuat untuk akaun pengguna.

Langkah 4: Dump pangkalan data [Master]

Sekarang, eksport semua pangkalan data pada contoh induk menggunakan 'mysqldump' utiliti.

mysqldump -uroot -p --kip-lock-tables--single-transaction \ --flush-logs--hex-blob--master-data = 2 -a | gzip -c> membuang.SQL.Gz  

Salin fail dump ke pelayan hamba.

Dump SCP.SQL.GZ [dilindungi e -mel]:  

Perintah akan meminta kata laluan pengguna jauh. Sebaik sahaja pengguna pengesahan, fail akan disalin ke pelayan jauh di bawah direktori rumah akaun 'root'.

Langkah 5: Salin fail sijil SSL [Master]

Salin fail klien dan sijil dan sijil CA ke contoh hamba. Pastikan bahawa "/etc/mysql/certs" Direktori wujud sistem jauh.

SCP/ETC/MYSQL/CERTS/CA-CERT.PEM [dilindungi e -mel]:/etc/mysql/certs/  SCP/ETC/MYSQL/CERTS/CLIENT-CERT.PEM [dilindungi e -mel]:/etc/mysql/certs/  SCP/ETC/MYSQL/CERTS/KEY-CLIENT.PEM [dilindungi e -mel]:/etc/mysql/certs/  

Nota: Konfigurasikan kekunci SSH untuk log masuk automatik atau gunakan kata laluan untuk disambungkan ke jauh.

Langkah 6: Pulihkan sandaran pangkalan data [hamba]

Log masuk ke Pelayan Pelanggan Replikasi MySQL. Ekstrak fail dump menggunakan utiliti gunzip. Selepas itu, pulihkan pangkalan data.

Gunzip Dump.SQL.Gz  mysql -uroot -p -f < dump.sql  

Kemudian periksa kedudukan fail log dalam fail sandaran.

Dump kepala.SQL -N80 | grep "master_log_pos"  

Output akan kelihatan seperti ini:

Output-Tukar Master ke Master_Log_File = "MySQL-Bin.000007 ", master_log_pos = 154; 

Perhatikan Master_log_file dan Master_log_pos nilai, yang akan digunakan kemudian dalam artikel ini.

Langkah 7: Kemas kini Konfigurasi MySQL Hamba [Hamba]:

Seterusnya fail konfigurasi MySQL (contohnya:/etc/mysql/mysql.Conf.D/mysqld.CNF) dan tambah/kemas kini penyertaan folloiwng:

[MySQLD] Server-ID = 2 binlog-format = Log-bin bercampur = MySQL-Bin Relay-Log = MySQL-Relay-Bin-Slave-Updates = 1 Read-Only = 1
1234567[MySQLD] Server-ID = 2BinLog-format = MixedLog-Bin = MySQL-BinRelay-Log = MySQL-Relay-Binlog-Slave-Updates = 1Read-only = 1

Langkah 8: Mulailah replikasi hamba [hamba]

Konfigurasikan contoh hamba dengan alamat IP contoh induk bersama dengan pengguna replikasi, kata laluan mereka dan sijil yang disalin dari contoh induk. Pastikan untuk mengemas kini 'Mysql-bin.###### ' dan 'Master_log_pos = ###' Sama seperti yang kita dapat dalam langkah 6. Sertakan semua sifar.

mysql> Tukar tuan ke master_host = "11.11.11.11 ", master_user = 'replikasi', master_password =" asecurepa $$ w0rd ", master_ssl_ca ="/etc/mysql/certs/ca-cert.PEM ", Master_SSL_CERT ="/etc/mysql/certs/Client-cert.PEM ", Master_SSL_KEY ="/etc/mysql/certs/client-KEY.mem ", master_ssl = 1, master_log_file =" mysql-bin.###### ", master_log_pos = ###;
12345678mysql> Tukar tuan ke master_host = '11.11.11.11 ', master_user =' replikasi ', master_password =' ​​asecurepa $$ w0rd ', master_ssl_ca ='/etc/mysql/certs/ca-cert.PEM ', Master_SSL_CERT ='/etc/mysql/certs/Client-cert.pem ', master_ssl_key ='/etc/mysql/certs/klien-kunci.pem ', master_ssl = 1, master_log_file =' mysql-bin.###### ', master_log_pos = ###;

Akhirnya memulakan proses replikasi:

mysql> mula hamba;
1mysql> mula hamba;

Ini akan membolehkan dan memulakan proses replikasi.

Langkah 9: Sahkan replikasi

Anda boleh menjalankan 'Tunjukkan status hamba' pertanyaan untuk memeriksa status semasa replikasi:

mysql> tunjukkan status hamba \ g
1mysql> tunjukkan status hamba \ g
Output ***************************** 1. Row *************************** Slave_io_state: Menunggu sumber untuk menghantar acara Master_Host: 11.11.11.11 Master_USER: Replikasi Master_port: 3306 Connect_retry: 60 Master_Log_File: MySQL-Bin.000177 read_master_log_pos: 100443919 relay_log_file: mysql-relay-bin.000498 relay_log_pos: 104189538 relay_master_log_file: mysql-bin.000169 Slave_IO_Running: Yes Slave_SQL_Running: Yes Replicate_Do_DB: Replicate_Ignore_DB: Replicate_Do_Table: Replicate_Ignore_Table: Replicate_Wild_Do_Table: Replicate_Wild_Ignore_Table: Last_Errno: 0 Last_Error: Skip_Counter: 0 Exec_Master_Log_Pos: 104189322 Relay_Log_Space: 972921462 Until_Condition: None Until_Log_File: Until_Log_Pos: 0 Master_SSL_Allowed: Yes Master_SSL_CA_File: /etc/mysql /sijil/CA-CERT.PEM Master_SSL_CA_PATH.PEM Master_SSL_CIPHER: Master_SSL_KEY:/etc/mysql/certs/client-klien.PEM SECONDS_BEHIND_MASTER: 13803 master_ssl_verify_server_cert: no last_io_errno: 0 last_io_error: last_sql_errno: 0 last_sql_error: replicate_ignore_server_ids: master_server_id: 1 mastan_u.slave_master_info SQL_Delay: 0 SQL_Remaining_Delay: NULL Slave_SQL_Running_State: Waiting for dependent transaction to commit Master_Retry_Count: 86400 Master_Bind: Last_IO_Error_Timestamp: Last_SQL_Error_Timestamp: Master_SSL_Crl: Master_SSL_Crlpath: Retrieved_Gtid_Set: Executed_Gtid_Set: Auto_Position: 0 Replicate_Rewrite_DB: Channel_Name: Master_TLS_Version: Master_public_key_path: Get_master_public_key: 0 Network_Namespace: 1 row dalam set, 1 amaran (0.00 saat) 

Periksa nilai 'Seconds_behind_master'. Nilai sifar (0) bermaksud kedua -dua sistem diselaraskan sepenuhnya.
Replikasi master-hamba MySQL telah dikonfigurasikan dengan jayanya pada sistem anda dan berada dalam mod kerja. Terima kasih kerana menggunakan tutorial ini, jangan lupa untuk berkongsi dengan rakan anda.

Kesimpulan

Dalam artikel ini, kami telah merangkumi proses mengkonfigurasi replikasi master-hamba MySQL dengan pengesahan menggunakan sijil SSL. Kami telah melalui langkah -langkah membuat dan memasang sijil, mengkonfigurasi pelayan tuan dan hamba, dan menyelesaikan masalah umum. Dengan menggunakan sijil SSL, kami telah memastikan bahawa data yang direplikasi adalah selamat dan hanya boleh diakses oleh pihak yang diberi kuasa. Di samping itu, sijil SSL telah digunakan untuk mengesahkan pelayan tuan dan hamba, menyediakan lapisan keselamatan tambahan. Pendekatan ini dapat membantu organisasi meningkatkan keselamatan persekitaran replikasi mereka dan memastikan integriti dan kerahsiaan data mereka.

Secara keseluruhannya, replikasi master-hamba MySQL adalah alat yang berguna untuk meningkatkan prestasi, skalabilitas, dan toleransi kesalahan sistem pangkalan data MySQL. Ia membolehkan pengagihan data merentasi pelbagai pelayan dan boleh digunakan untuk sandaran dan pemulihan data.