setup master-slave mysql 5.7 pada centos 7

0
533

halo sobat sekolahlinux, jika pada sebelumnya saya pernah membuat tutorial master-slave mysql dengan phpmyadmin, nah kali ini kita akan coba tanpa phpmyadmin, oh iya untuk tutorial yang menggunakan phpmyadmin kalian bisa baca dan lihat di link dibawah

Replikasi mysql dengan phpmyadmin pada centos

nah pada tutorial master-slave mysql ini yang kita butuhkan adalah 2 node dengan detail seperti dibawah

  • node1: 192.168.100.10
  • node2: 192.168.100.20

jalankan pada node1 & node2

pertama install mysql 5.7 atau mariadb 10.2 pada centos 7 di kedua node, tambahkan repo mariadb

touch /etc/yum.repos.d/mariadb.repo

masukkan paramater dibawah pada file mariadb.repo yg kita buat diatas

[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.2/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

jika sudah disave install mariadb di kedua node

yum install mariadb-server -y

jika sudah jalankan mariadb server di kedua node

systemctl enable mariadb
systemctl start mariadb

selanjutnya set root password mysql/mariadb dengan menjalankan perintah dibawah pada kedua node

mysql_secure_installation

jika sudah sekarang saatnya kita config node1 sebagai master

 

jalankan pada node1

buka file server.cnf

vim /etc/my.cnf.d/server.cnf

lalu tambahkan bari berikut tepat dibawah [mysqld]

server_id=1
log-basename=master
log-bin
binlog-format=row
binlog-do-db=akbar
binlog-do-db=ibnu

pada rule diatas saya ingin yang di replikasi adalah db akbar dan db ibnu, jika sudah save lalu restart mariadb

systemctl restart mariadb

selanjutnya masuk kedalam mysql shell sebagai root

mysql -p root -u

lalu jalankan perintah ini

stop slave;

lalu setelahkan jalankan perintah dibawah

GRANT REPLICATION SLAVE ON *.* TO 'slaveuser'@'%' IDENTIFIED BY 'qwerty12345';

setelah itu jalankan perintah dibawah

FLUSH PRIVILEGES;

lalu jalankan perintah dibawah

FLUSH TABLES WITH READ LOCK;

lalu jalankan perintah dibawah ini

SHOW MASTER STATUS;

maka akan tampil seperti dibawah

MariaDB [(none)]> SHOW MASTER STATUS;
+-------------------+----------+--------------+------------------+
| File              | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+-------------------+----------+--------------+------------------+
| master-bin.000002 |      646 | akbar,ibnu   |                  |
+-------------------+----------+--------------+------------------+
1 row in set (0.00 sec)

perhatikan table file dan position, isi dari table tersebut nanti akan kita gunakan pada saat setup node2 atau slave, jika sudah keluar dari mysql shell, dan jalankan perintah dibawah untuk dump seluruh database

mysqldump --all-databases --user=root --password --master-data > masterdatabases.sql

setelah proses dump selesai, jalankan masuk kembali ke mysql shell

mysql -p root -u

lalu jalankan perintah dibawah pada mysql shell

UNLOCK TABLES;

lalu jalankan ini

quit

jangan lupa hasil dump masterdatabases.sql di kirim ke node2

 

jalankan pada node2

buka file server.cnf

vim /etc/my.cnf.d/server.cnf

lalu tambahkan bari berikut tepat dibawah [mysqld]

server-id = 2
replicate-do-db=akbar
replicate-do-db=ibnu

jika sudah save, lalu selanjutnya restore hasil mysqldump yang tadi kita lakukan di node1 atau master

mysql -u root -p < masterdatabases.sql

setelah itu restart mariadb-server

systemctl restart mariadb

lalu setelah di restart masuk kedalam mysql shell dalam mode root

mysql -u root -p

setelah itu jalankan perintah dibawah

STOP SLAVE;

setelah itu jalankan perintah dibawah ini

CHANGE MASTER TO MASTER_HOST='192.168.100.10', MASTER_USER='qwerty12345', MASTER_PASSWORD='meg4prime', MASTER_LOG_FILE='master-bin.000002', MASTER_LOG_POS=646;

setelah itu jalankan perintah dibawah

START SLAVE;

selanjutnya jalankan perintah dibawah

SHOW SLAVE STATUS\G

hasilnya akan seperti dibawah

MariaDB [(none)]> SHOW SLAVE STATUS\G
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.100.10
                  Master_User: slaveuser
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: master-bin.000002
          Read_Master_Log_Pos: 646
               Relay_Log_File: localhost-relay-bin.000002
                Relay_Log_Pos: 556
        Relay_Master_Log_File: master-bin.000002
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB: akbar,ibnu
          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: 646
              Relay_Log_Space: 869
              Until_Condition: None
               Until_Log_File: 
                Until_Log_Pos: 0
           Master_SSL_Allowed: No
           Master_SSL_CA_File: 
           Master_SSL_CA_Path: 
              Master_SSL_Cert: 
            Master_SSL_Cipher: 
               Master_SSL_Key: 
        Seconds_Behind_Master: 0
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
               Master_SSL_Crl: 
           Master_SSL_Crlpath: 
                   Using_Gtid: No
                  Gtid_IO_Pos: 
      Replicate_Do_Domain_Ids: 
  Replicate_Ignore_Domain_Ids: 
                Parallel_Mode: conservative
                    SQL_Delay: 0
          SQL_Remaining_Delay: NULL
      Slave_SQL_Running_State: Slave has read all relay log; waiting for the slave I/O thread to update it
1 row in set (0.00 sec)

 

testing

selanjutnya untuk testing kalian bisa coba buat tables didalam database akbar di node1, dan setelah itu coba lihat di node2 apakah di dalam db akbar ada tables yang dibuat di node1