Saturday, April 21, 2018

Replikasi Master Slave Mysql di Centos 7






1.     Install dua buah server linux centos

2.     Cek port ethernet yang digunakan untuk nat dan internet host only dengan mengetik perintah

#nmcli d

3.      Setting ip dhcp pada port nat, digunakan untuk mendownload package yum.
Ubah konfigurasi dengan menggunakan perintah dibawah ini :

#vim  /etc/sysconfig/network-script/ifcfg-[port]

Contoh :  #vim  /etc/sysconfig/network-script/ifcfg-enp0s3


Ubah ONBOOT=NO à ONBOOT=YES

Kemudian ketik :wq untuk save dan keluar dari text editor vim.

4.     Restart service mysql dengan perintah dibawah ini :

#service network restart

5.     Pada seri terbaru centos untuk database mysql sudah digantikan dengan mariadb. Solusinya agar masih bisa menggunakan database mysql adalah mendownload melalui rpm.

Buka situs mysql dibawah ini :

*untuk melakukan pengecekan versi mysql terbaru.

Selanjutnya ketik perintah ini di terminal (posisi worksheet sudah di root) untuk mendowload repository melalui file rpm:

*sebelumnya lakukan pengecekan apakah wget sudah terinstall :

#rpm –q wget

*install wget :

#yum install wget -y

kemudian untuk melakukan pemasangan rpm, ketik perintah dibawah ini :

#rpm -ivh mysql-community-release-el7-11.noarch.rpm

6.     Selanjutnya install mysql pada centos dengan menggunakan yum

#yum install mysql-server mysql -y

7.     Setelah mysql selesai terinstall maka jalankan service mysql dan lakukan login ke mysql, dengan mengetik perintah berikut dibawah ini :

*menjalankan service  mysql

#systemctl start mysqld

*login mysql

#mysql  -u root –p

Maka akan meminta mengisikan password, apabila diisikan maka akan ada error password yang dimasukkan salah. Itu dikarenakan pada standar instalasi mysql sudah membawa settingan password temporary.

8.     Untuk melihat password temporary dengan mengetik peritah berikut dibawah ini :

#sudo grep 'temporary password' /var/log/mysqld.log

9.     Maka akan tampil password temporary mysql seperti berikut ini :

Password temporarnya ada di setelah tulisan root@localhost : ….

10.  Kemudian login kembali ke mysql  dengan mengetik perintah dibawah ini :

#mysql  -u root –p

Enter password :
*masukkan password yang ada pada temporary password.
*apabila melakukan show databases;

Maka akan ada error seperti dibawah ini :


Langkah selanjutnya ubah password mysql dengan mengetik perintah :

Mysql> ALTER USER 'root'@'localhost' identified by 'your new password';

Contoh :  mysql > alter user  ‘root’@’localhost’ identified by ‘passw0rd!’;
*pastikan password harus mengandung angka, upper, lower, dan karakter khusus.

Kemudian exit; dan coba login mysql dengan password yang baru.

11.  Untuk server kedua langkahnya hamper sama dari point 1 – 10.

12.  Selanjutnya menyiapkan proses replikasi master – slave.

 


Langkah pertama, siapkan dua ip static agar kedua host saling terhubung.
 Master Ip – 192.168.5.103
 Slave Ip – 192.168.5.104

*sebelumnya disable port ethernet untuk ip dhcp yang sebelumnya dihidupkan.
*masuk ke settingan properties Ethernet

#vim /etc/sysconfig/network-script/ifcfg-[port]

#vim /etc/sysconfig/network-script/ifcfg-enp0s3

Dengan mengubah ONBOOT=YES à ONBOOT=NO

*perintah edit port Ethernet :

#vim /etc/sysconfig/network-script/ifcfg-enp0s8

Kemudian edit port Ethernet untuk ip local :

Dengan mengubah ONBOOT=YES

Dan menambahkan perintah ini :
IPADDR=XXX.XXX.XXX.XXX
NETMASK=XXX.XXX.XXX.XXX.XXX
GATEWAY=XXX.XXX.XXX.XXX

Selanjutnya restart kembali service mysql dengan menggunakan perintah berikut ini :

#systemctl restart mysqld

13.  Mengaktifkan firewall

systemctl start firewalld
systemctl enable firewalld

14.  Tambahkan service yang akan di allow di firewall

firewall-cmd --add-service=mysql --permanent
firewall-cmd --reload

15.  Selanjutnya login ke mysql  dengan perintah :

#mysql  -u root –p

16.  Langkah selanjutnya membuat database dan user untuk replikasi.



[root@linuxhelp ~]# mysql -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or g.
Your MySQL connection id is 10
Server version: 5.1.73 Source distribution
Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.
mysql> create database rep;
Query OK, 1 row affected (0.11 sec)
mysql> CREATE USER 'repuser'@'localhost' IDENTIFIED BY '123';
Query OK, 0 rows affected (1.45 sec)
mysql> GRANT ALL ON rep.* TO 'repuser'@'localhost';
Query OK, 0 rows affected (0.04 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)
mysql> exit
Bye
17.  Mengkonfigurasi database master.
Ketik perintah dibawah ini :
#vim /etc/my.cnf
Ketik perintah dibawah ini dibawah [mysqld]

server-id=1
binlog-do-db=rep
log-bin=mysql-bin
18.  Kemudian restart service mysql

#systemctl restart mysqld

19.  Login kembali dan membuat database user :
[root@linuxhelp ~]# mysql -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or g.
Your MySQL connection id is 2
Server version: 5.1.73-log Source distribution

Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.

mysql> GRANT REPLICATION SLAVE ON *.* TO 'repuser'@'%' IDENTIFIED BY '123';
Query OK, 0 rows affected (0.00 sec)

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| rep                |
+--------------------+
3 rows in set (0.03 sec)

mysql> use rep;
Database changed
mysql> FLUSH TABLES WITH READ LOCK;
Query OK, 0 rows affected (0.00 sec)

mysql> SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 |      323 | rep          |                  |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)

mysql> exit
Bye
20.  Perhatikan file dan position nya.
File = ‘mysql-bin.000001’
Position = 323
File dan position akan digunakan untuk melakukan konfigurasi slave.
21.  Selanjutnya export database rep.
[root@linuxhelp ~]# mysqldump -u root -p rep > rep.sql
Enter password:
[root@linuxhelp ~]# ls
anaconda-ks.cfg  Desktop  django  Documents  Downloads  ez_setup.py  install.log  install.log.syslog  Music  Pictures  Public  rep.sql  Templates  Videos
22.  Copy database rep.sql melalui jaringan.
[root@linuxhelp ~]# scp rep.sql root@192.168.5.104:/root/
root@192.168.5.104's password:
rep.sql
23.  Selanjutnya unlock database master
[root@linuxhelp ~]# mysql -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or g.
Your MySQL connection id is 5
Server version: 5.1.73-log Source distribution
Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.
mysql> UNLOCK TABLES;
Query OK, 0 rows affected (0.00 sec)
24.  Konfigurasi slave
# vim /etc/my.cnf
25.  Tambahkan code berikut dibawah [mysqld]
server-id=2
binlog-do-db=rep
log-bin=mysql-bin
26.  Selanjutnya restart kembali servicenya.
#systemctl restart mysqld
27.  Selanjutnya import database ke database slave
[root@linuxhelp ~]# ls
anaconda-ks.cfg  Desktop  django  Documents  Downloads  ez_setup.py  install.log  install.log.syslog  Music  Pictures  Public  rep.sql  Templates  Videos
[root@linuxhelp ~]# mysql -u root -p rep < rep.sql
Enter password:

Apabila terjadi error maka create database terlebih dahulu.
28.  Selanjutnya create user, membuat koneksi ke database master, log file, password, dan posisi.
[root@linuxhelp ~]# mysql -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or g.
Your MySQL connection id is 5
Server version: 5.1.73-log Source distribution

Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.

mysql> CREATE USER 'repuser'@'localhost' IDENTIFIED BY '123';
Query OK, 0 rows affected (0.02 sec)

mysql> GRANT ALL ON rep.* TO 'repuser'@'localhost';
Query OK, 0 rows affected (0.00 sec)

mysql> GRANT REPLICATION SLAVE ON *.* TO 'repuser'@'%' IDENTIFIED BY '123';
Query OK, 0 rows affected (0.00 sec)

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

mysql> CHANGE MASTER TO MASTER_HOST='192.168.5.103', MASTER_USER='repuser', MASTER_PASSWORD='123', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=323;
Query OK, 0 rows affected (0.15 sec)

mysql> SLAVE START;
Query OK, 0 rows affected (0.03 sec)


Selanjutnya melakukan pegetesan.

Running database pada database master :
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| rep                |
+--------------------+
3 rows in set (0.02 sec)

mysql> use rep;
Database changed

mysql> create table sample (a int);
Query OK, 0 rows affected (0.03 sec)

mysql> insert into sample (a) values (1);
Query OK, 1 row affected (0.01 sec)

mysql> select * from sample;
+------+
| a    |
+------+
1 row in set (0.00 sec)

Kemudian pengetesan pada database slave.
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| rep                |
+--------------------+
3 rows in set (0.00 sec)

mysql> use rep;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed

mysql> show tables;
+---------------+
| Tables_in_rep |
+---------------+
| sample        |
+---------------+
1 row in set (0.00 sec)

mysql> select * from sample;
+------+
| a    |
+------+
|    1 |
+------+
1 row in set (0.00 sec)



No comments:

Post a Comment

Related Posts Plugin for WordPress, Blogger...