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
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