GNU/Linux >> Belajar Linux >  >> Linux

Cara Mengatur Replikasi Master-Master MySQL

Artikel ini menggabungkan informasi dari beberapa sumber ke dalam format yang saya gunakan untuk mengatur Replikasi Master/Master MySQL. Keindahan Linux dan open source adalah ada banyak cara berbeda untuk melakukan ini. Silakan lihat referensi saya dan gunakan untuk mengakomodasi kebutuhan apa pun yang mungkin Anda miliki. Jika Anda memiliki pertanyaan atau mengalami masalah, jangan ragu untuk mengirimi saya baris di komentar.

Asumsi

Artikel ini mengasumsikan Anda telah menginstal MySQL ke setiap server Anda. Jika tidak, Anda dapat dengan mudah melakukannya melalui situs web MySQL di https://www.mysql.org/downloads. Artikel ini belum diuji di MariaDB tetapi akan berfungsi jika Anda lebih suka menggunakan MariaDB.

Ubah SELINUX menjadi permisif (jika diinstal)

Server A

[[email protected] ~]# vi /etc/selinux/config
 # File ini mengontrol status SELinux pada sistem.# SELINUX=dapat mengambil salah satu dari tiga nilai berikut:# enforcing - Kebijakan keamanan SELinux diberlakukan.# permissive - SELinux mencetak peringatan alih-alih menegakkan.# dinonaktifkan - Tidak ada SELinux kebijakan dimuat.SELINUX=permissive# SELINUXTYPE=dapat mengambil salah satu dari dua nilai ini:# tertarget - Proses yang ditargetkan dilindungi,# mls - Perlindungan Keamanan Multi Level.SELINUXTYPE=ditargetkan 

Server B

[[email protected] ~]# vi /etc/selinux/config
 # File ini mengontrol status SELinux pada sistem.# SELINUX=dapat mengambil salah satu dari tiga nilai berikut:# enforcing - Kebijakan keamanan SELinux diberlakukan.# permissive - SELinux mencetak peringatan alih-alih menegakkan.# dinonaktifkan - Tidak ada SELinux kebijakan dimuat.SELINUX=permissive# SELINUXTYPE=dapat mengambil salah satu dari dua nilai ini:# tertarget - Proses yang ditargetkan dilindungi,# mls - Perlindungan Keamanan Multi Level.SELINUXTYPE=ditargetkan 

Hentikan dan nonaktifkan firewall di setiap server

Server A

[[email protected] ~]# systemctl stop firewalld
[[email protected] ~]# systemctl nonaktifkan firewalld

Jalankan perintah berikut untuk memastikan tidak ada aturan firewall

[[email protected] ~]# iptables -L

Hasilnya akan terlihat seperti:

INPUT Rantai (policy ACCEPT)
target     prot opt ​​source             tujuan

Chain FORWARD (policy ACCEPT)
target    sumber prot opt             tujuan /

target     sumber opt prot              tujuan

Server B

[[email protected] ~]# systemctl stop firewalld
[[email protected] ~]# systemctl nonaktifkan firewalld

Jalankan perintah berikut untuk memastikan tidak ada aturan firewall.

[[email protected] ~]# iptables -L

Hasilnya akan terlihat seperti:

INPUT Rantai (policy ACCEPT)
target     prot opt ​​source             tujuan

Chain FORWARD (policy ACCEPT)
target    sumber prot opt             tujuan /

target     sumber opt prot              tujuan

Edit /etc/my.cnf di kedua server

Tambahkan informasi berikut ke bagian bawah [mysqld]

Server A

[[email protected] ~]# vi /etc/my.cnf
 server-id=1 log-bin="mysql-bin" binlog-do-db=name_of_database replica-do-db=name_of_database relay-log="mysql-relay-log" auto-increment-offset =1  

Server B

[[email protected] ~]# vi /etc/my.cnf
 server-id=2 log-bin="mysql-bin" binlog-do-db=name_of_database replica-do-db=name_of_database relay-log="mysql-relay-log" auto-increment-offset =2  

Pastikan Anda mengganti name_of_database dengan nama database yang ingin Anda tiru

Mulai ulang dan aktifkan daemon MySQL di setiap server

Server A

[[email protected] ~]# systemctl restart mysqld
[[email protected] ~]# systemctl aktifkan mysqld

Server B

[[email protected] ~]# systemctl restart mysqld
[[email protected] ~]# systemctl aktifkan mysqld

Buat pengguna replikator di setiap server

[[email protected] ~]# mysql -u root -p

mysql> BUAT USER 'replicator'@'%' DIIDENTIFIKASI DENGAN 'change_me';
mysql> GRANT REPLICATION SLAVE ON foo.* KE 'replicator'@'%'
[[email protected] ~]# mysql -u root -p

mysql> BUAT USER 'replicator'@'%' DIIDENTIFIKASI DENGAN 'change_me';
mysql> GRANT REPLICATION SLAVE ON foo.* KE 'replicator'@'%'

Dapatkan informasi file log untuk digunakan di server lain

Server A

[[email protected] ~]# mysql -u root -p

mysql> SHOW MASTER STATUS;

+---------- --------+----------+------------------+----------- -------+
| Berkas             | Posisi | Binlog_Do_DB     | Binlog_Ignore_DB |
+------------------+----------+------------- -----+------------------+
| mysql-bin.000001 | 154      | name_of_database | |
+--------+----------+-------------- ----+------------------+
1 baris dalam set (0,00 detik)

Perhatikan "File" dan "Position" dari perintah ini

Server B

[[email protected] ~]# mysql -u root -p

mysql> STOP SLAVE;

mysql> CHANGE MASTER TO MASTER_HOST ='Server A IP Address atau HOSTNAME',MASTER_USER ='replicator', MASTER_PASSWORD ='change_me', MASTER_LOG_FILE ='mysql-bin.000001', MASTER_LOG_POS =154;
mysql> START SLAVE;

Ulangi langkah yang sama di Server B

Server B

[[email protected] ~]# mysql -u root -p mysql> SHOW MASTER STATUS;

+------------------ +----------+------------------+------------------+
| Berkas             | Posisi | Binlog_Do_DB     | Binlog_Ignore_DB |
+------------------+----------+------------- -----+------------------+
| mysql-bin.000001 | 154      | name_of_database | |
+--------+----------+-------------- ----+------------------+
1 baris dalam set (0,00 detik)

Perhatikan "File" dan "Position" dari perintah ini

Server A

[[email protected] ~]# mysql -u root -p 

mysql> STOP SLAVE; CHANGE MASTER TO MASTER_HOST ='Server B IP Address atau HOSTNAME', MASTER_USER ='replicator', MASTER_PASSWORD ='passw0rd', MASTER_LOG_FILE ='mysql-bin.000001', MASTER_LOG_POS =154;
mysql> MULAI SLAVE;

Reboot kedua server

Server A

[[email protected] ~]# systemctl reboot

Server B

[[email protected] ~]# systemctl reboot

Di salah satu server buat database Anda

[[email protected] ~]# mysql -u root -p 

mysql> CREATE DATABASE foo;

Di server lain, periksa apakah database ada di sana

[[email protected] ~]# mysql -u root -p

mysql> SHOW DATABASES;

+--------------------+
| Basis data           |
+--------------------+
| informasi_skema |
| foo                |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 baris dalam kumpulan (0,00 detik)

Sumber

  • https://www.howtoforge.com/mysql_database_replication
  • https://www.digitalocean.com/community/tutorials/how-to-set-up-mysql-master-master-replication
  • https://www.howtoforge.com/mysql_master_master_replication
  • http://www.ryadel.com/en/mysql-master-master-replication-setup-in-5-easy-steps/

Linux
  1. Cara mengkonfigurasi Replikasi Multi-Master MySQL di Oracle Linux

  2. Menyiapkan Replikasi Master-Master dengan MySQL di Debian 8 (Jessie)

  3. Konfigurasikan replikasi sumber-sumber MySQL

  1. Cara Setup Pure-FTPD dengan MySQL di CentOS &RedHat

  2. Cara Mengatur LogAnalyzer dengan Rsyslog dan MySQL

  3. Siapkan replikasi sumber-replika MySQL

  1. Cara Mengatur Replikasi Master Slave MySQL

  2. Cara mengatur replikasi MySQL di CentOS

  3. Cara Mengatur Replikasi Master Slave MariaDB di Ubuntu 18.04