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 =1Server B
[[email protected] ~]# vi /etc/my.cnfserver-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 =2Pastikan 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 mysqldServer 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 rebootServer 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/