“Tugas kita bukanlah untuk berhasil. Tugas kita adalah untuk mencoba, karena didalam mencoba itulah kita menemukan dan belajar membangun
kesempatan untuk berhasil.”

perkataan dari : Mario Teguh


Membuat MySQL Database Replication Server

June 28th, 2009 § terdapat 46 komentar dari sobat

BismiLLahi aRRohman aRRohim…

Tips ringan buat temen-temen yang sering berurusan sama database khususnya mysql, kata orang-orang tua dulu : “sedia payung sebelum hujan”, ya! sedia backup sebelum mesin database utama rusak / crash / terhapus / dll yang bisa berakibat fatal terhadap aplikasi / front end yang digunakan, apalagi aplikasi penting yang menyangkut hajat hidup orang banyak (LOL)

Inti dari replikasi sebenarnya simple, bikin duplikat dari mesin utama (master) ke mesin cadangan (slave). Ini dia yang harus dipersiapkan:

  • [Hot Cappuccino 1 cangkir]
  • [Brownies kukus secukupnya]
  • Haha (haha) yang diatas itu optional
  • Yang jelas harus ada 2 mesin, 1 master – 1 slave (backup)
  • Jelas juga harus tau IP dari masing-masing mesin, contoh disini master = 192.168.12.11, slave = 192.168.12.12
  • dan masing-masing mesin harus udah keinstall mysql-server, kalo belum? install dulu :-P

Caranya pun cukup simple (Sesuaikan dengan kondisi yang ada), contoh disini kita akan mereplikasi database dbPenting :

Di sisi master (192.168.12.11)

Buat user di mysql dan beri hak akses replication slave, contoh usernya disini “pencadangan”

mysql>; grant replication slave on *.* to pencadangan@192.168.12.12 identified by 'passwordSlavenya';
Query OK, 0 rows affected (0.08 sec)
mysql>; \q
Bye

Lalu edit file konfigurasi mysql (my.cnf)

# pico /etc/mysql/my.cnf

dan tambahkan baris berikut ini (kalo dah ada, tinggal diedit / ilangin mark# nya aja) :

server-id  = 1
log_bin = /var/log/mysql/mysql-bin.log
expire_logs_days = 10
max_binlog_size = 100M
binlog_do_db = dbPenting

lalu restart service mysql / mysqld nya

# service mysql restart

Selanjutnya dump isi dan struktur database dbPenting untuk direstore ke server slave

mysqldump -u root -p passRoot dbPenting >; /home/user/backupDbPenting.sql

Cek status master server :

</p>

# mysql -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 848186
Server version: 5.0.67-0ubuntu6-log (Ubuntu)
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql>; show master status;
+------------------+----------+--------------+
| File             | Position | Binlog_Do_DB |
+------------------+----------+--------------+
| mysql-bin.000002 |      647 | dbPenting    |
+------------------+----------+--------------+
1 row in set (0.00 sec)
mysql>;

Ingat nama File (mysql-bin.000002) dan Position (647) dari status master tersebut.

Di sisi slave (192.168.12.12)

Edit file konfigurasi mysql (my.cnf)

# pico /etc/mysql/my.cnf

dan tambahkan baris berikut ini (kalo dah ada, tinggal diedit / ilangin mark# nya aja) :

server-id  = 2
master_host = 192.168.12.11
master_user = pencadangan
master_password = passwordPencadangan
master_port = 3306

Buat database yang sama dengan database master :

</p>

# mysql -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 848186
Server version: 5.0.67-0ubuntu6-log (Ubuntu)
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql>; create database dbPenting;
Query OK, 1 row affected (0.08 sec)
mysql>;\d
bye 

# mysql -u root -p passwordRoot dbPenting ; backupDbPenting.sql

lalu restart service mysql / mysqld nya

# service mysql restart

Mari kita lihat hasil kerja kita :

# mysql -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 848186
Server version: 5.0.67-0ubuntu6-log (Ubuntu)
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql>; stop slave;
Query OK, 0 rows affected (0.00 sec)

change master to
master_host = '192.168.12.11',
master_user = 'pencadangan',
master_password = 'passwordSlavenya',
master_log_file = 'mysql-bin.000002',
master_log_pos = '647',
master_connect_retry=10;
Query OK, 0 rows affected (0.00 sec)

mysql>; start slave;
Query OK, 0 rows affected (0.00 sec)

mysql>; show slave status \G;
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 118.97.55.213
Master_User: replikasi
Master_Port: 3306
Connect_Retry: 10
Master_Log_File: mysql-bin.000002
Read_Master_Log_Pos: 647
Relay_Log_File: mysqld-relay-bin.000009
Relay_Log_Pos: 235
Relay_Master_Log_File: mysql-bin.000002
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB:
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: 647
Relay_Log_Space: 235
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
1 row in set (0.00 sec)
mysql>;

Yak, sampe disini replikasi telah berjalan dengan baik, Mari sedia payung sebelum hujan (banana_rock)

____________

referensi : http://dev.mysql.com/doc | http://dev.mysql.com/doc/refman/5.1/en/replication.html

ada 46 ungkapan dari sobat untuk "Membuat MySQL Database Replication Server"

  • tanggal 28 June 2009 jam 07:23,
    riez bilang gini :

    Assalamu’alaykum wr. wb…

    weww… penting banget nih bikin payung, eh sedia payung :D Thanks ndri ;-)

    • tanggal 29 June 2009 jam 19:59,
      ãñÐrî ñâwáwï bilang gini :

      Wa’alaikumsalam WarohmatuLLohi Wabarokatuhu…
      Bethulll, daripada kejadian… mending jaga-jaga dulu ziz :-D thanks juga ya atas akun akun nya, hihihiii (haha)

      • tanggal 29 June 2009 jam 21:55,
        riez bilang gini :

        hmmm… bisa nda ya ngdump db RS, hihihi… (lmao)

    • tanggal 28 June 2009 jam 15:58,
      lukman bilang gini :

      jadi ojek payung yang seperti ini sepertinya bagus jugak (thinking)

      • tanggal 29 June 2009 jam 20:00,
        ãñÐrî ñâwáwï bilang gini :

        Iya lukman, palagi pas musim ujan…

        Ehhh, brarti aku lagi ngojek payung ya sekarang (hassle)

      • tanggal 28 June 2009 jam 16:10,
        andy.web.id bilang gini :

        nyembah2 (worship)…
        aku ambil bagian skrinsut yang mesum2 saja dan yang ringan dan yang lucu…

      • tanggal 28 June 2009 jam 20:20,
        superaman bilang gini :

        masih puyeng bacanya.. hehehe..
        buat referensi dulu aja..

      • tanggal 29 June 2009 jam 15:04,
        salim bilang gini :

        Ass.
        kang andry, mungkin kang andri ga tahu spa aku nih, tapi yg jelas ketika aku kuliah aku sering liat kang andry yang kuliah bagian malam, oia kang aku benar2 ga ngerti my SQL untuk apa, biar alumni stikom binaniaga bogor aku ga belajar??

        • tanggal 29 June 2009 jam 20:06,
          ãñÐrî ñâwáwï bilang gini :

          Wa’alaikumsalam…

          Wahhh emang iya yach? maklum saya nya yang ngga gawul kali yach, hihii
          Moso lulusan stikom ga ngerti MySQL buat apa (evil_grin)

        • tanggal 2 July 2009 jam 13:56,
          Kuliah Gratis bilang gini :

          Waduch ilmuku belum sampai segitu………

          • tanggal 2 July 2009 jam 13:56,
            Aden Kejawen bilang gini :

            keren banget postingnya

            tapi jujur bingung

          • tanggal 3 July 2009 jam 13:05,
            ajengkol bilang gini :

            Roming neh … btw sukses buat Dimas yah

          • tanggal 3 July 2009 jam 17:26,
            uzakuza bilang gini :

            nice inpo…

            hampir sama kayak di http://dudulz.wordpress.com/2009/02/27/mysql-replication/

            sayang na , daku cm pake mysql buat local sajah.. jadi cm backup2 biasa … bukan database administrator :p

            • tanggal 23 July 2009 jam 11:32,
              ãñÐrî ñâwáwï bilang gini :

              Yak, intinya emang sama… sedia payung sebelum hujan :-D tapi suatu saat mungkin membutuhkan, kalo si mysqlnya dah disuruh ngehandle app yang penting, kaya aku kemaren, wuihhh kepake banget replikasinya, begitu main server ngedrop langsung diarahin ke ip slave, dan lancar lagi

            • tanggal 10 July 2009 jam 21:45,
              quantro bilang gini :

              salam om….
              panjang banget yak…..
              belum sempet nyoba sendiri sih…
              moga suatu saat bisa nyoba….

              • tanggal 23 July 2009 jam 11:34,
                ãñÐrî ñâwáwï bilang gini :

                Wa’alaikumsalam :-)
                Coba aja, itu panjang gara2 output & skripnya disertain kok, kalo cuma commandnya mah dikit

              • tanggal 11 July 2009 jam 15:29,
                katakataku bilang gini :

                (thinking) baru tau kalo payung juga berguna buat nampung yang beginian…… (LOL)

              • tanggal 13 July 2009 jam 13:17,
                deanet bilang gini :

                nice info gan :beer: ..

              • tanggal 26 July 2009 jam 01:06,
                endar bilang gini :

                waduh puyeng deh lihat kode kode seperti itu. pengen belajar cara memulainya gimana ya?

              • tanggal 31 July 2009 jam 19:59,
                dermawan bilang gini :

                wah… koq pas nemu yah blog yg sipp ini pas lg setup replication server sendiri…. :)
                mas, mau tanya nih… kalo misalnya udah berhasil setup dan jalan replication server-nya… trus kalo misalnya slave-nya pas mati (mungkin mati listrik) trus master-nya kan jalan terus…

                nah pas slave-nya nyala… apa yg terjadi? apa bisa diupdate semua yg ketinggalan itu?

                masih pertama kali setup replication server nih… mohon bantuannya mas :)

                • tanggal 31 July 2009 jam 20:09,
                  ãñÐrî ñâwáwï bilang gini :

                  pengalaman saya kemaren tetap terupdate mas, mungkin ada lag sedikit itu tergantung traffic… kemaren saya pake buat applikasi yang diakses 1 kota, backend pake master front end pake slave, dan alhamduliLLah lancar. semoga membantu :-)

                  • tanggal 31 July 2009 jam 20:16,
                    dermawan bilang gini :

                    wah… cepet bener balesnya mas…. salam kenal nama saya Dermawan… eh ya… boleh tukeran IM? utk diskusi soal ini lebih lanjut, kalau berkenan :)
                    YM saya: dermawan123 atau MSN: dermawan123@hotmail.com

                    • tanggal 31 July 2009 jam 20:27,
                      ãñÐrî ñâwáwï bilang gini :

                      kebetulan lagi pas online n ngecek komen :-D
                      salam kenal juga mas Dermawan, saya andri… ym saya : andriy_rolas tapi kebetulan lagi ngga online ym nih, add aja

                • tanggal 16 October 2009 jam 13:14,
                  fajar bilang gini :

                  mantap infonya trims

                  • tanggal 16 December 2009 jam 07:25,
                    medi bilang gini :

                    sory nih kang andry mo tanya.eh salam knal dulu dehh…
                    untuk bagian yg ini
                    Lalu edit file konfigurasi mysql (my.cnf)

                    view sourceprint?
                    1.# pico /etc/mysql/my.cnf

                    dan tambahkan baris berikut ini (kalo dah ada, tinggal diedit / ilangin mark# nya aja) :

                    view sourceprint?
                    1.server-id = 1
                    2.log_bin = /var/log/mysql/mysql-bin.log
                    3.expire_logs_days = 10
                    4.max_binlog_size = 100M
                    5.binlog_do_db = dbPenting

                    maksudnya konfigurasi gmn ya ? emang file my.cnf itu ada dimana ya…? maklum kang,saya baru belajar cara membuat replikasi database.mohon pencerahanya ya kang…

                    • tanggal 16 December 2009 jam 13:12,
                      andri nawawi bilang gini :

                      my.cnf (linux) / my.ini (windows) adalah file konfigurasi mysql server.

                      Mas medi pake linux / windows…?
                      kalau pake linux, lokasi my.cnf itu ada di direktori : /etc/mysql/
                      kalau pake linux dengan lampp my.cnf ada di direktori : /opt/lampp/etc/
                      kalau pake xampp windows my.ini ada di direktori : \xampp\mysql\bin\

                      semoga membantu :-)

                    • tanggal 28 December 2009 jam 12:11,
                      ache bilang gini :

                      Asslam pak,
                      keren bgd pak posting’a n psti brguna bwt khlayak bnyak, tp jujur sya msih buta akan itu smua’a pak, hehe”
                      mklum blum 1 bln ktmu linux.
                      pak kira” ada wktu gak bwt ngjarin sya biar bsa nguasain OS linux ini, mnimal bwt pmbuatan program web n manajemen file database mysql deh pak…
                      sya n yg lain jga kn mw nnti’a klo dah jago kya bpk pngen bagi” ilmu ke orang biar bsa brmanfaat…
                      hehe”

                      • tanggal 9 April 2010 jam 17:53,
                        ahmad bilang gini :

                        mas, mysqldump itu fungsinya apa mas ???

                        • tanggal 9 April 2010 jam 18:05,
                          andri nawawi bilang gini :

                          mysqldump untuk membuat backup dari database, outputnya bisa berupa plaintext / file kompresi.

                        • tanggal 9 April 2010 jam 17:57,
                          ahmad bilang gini :

                          mas, maksud command dari screen terakhir itu apa ???

                          thanks ya

                        • tanggal 10 April 2010 jam 09:16,
                          heru bilang gini :

                          wajib nih hukumnya buat dijajal kang :D

                          • tanggal 10 April 2010 jam 22:19,
                            andri nawawi bilang gini :

                            Iya, itung-itung buat cadangan :D

                          • tanggal 10 April 2010 jam 18:58,
                            ahmad bilang gini :

                            screen yg terakhir mas.

                            # mysql -u root -p
                            Enter password:
                            Welcome to the MySQL monitor. Commands end with ; or \g.
                            Your MySQL connection id is 848186
                            Server version: 5.0.67-0ubuntu6-log (Ubuntu)
                            Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the buffer.

                            mysql>; stop slave;
                            Query OK, 0 rows affected (0.00 sec)

                            dan seterusnya ….

                            • tanggal 10 April 2010 jam 22:13,
                              andri nawawi bilang gini :

                              Ohhh, yang itu untuk memasukkan pid replication nya mas, karena nantinya akan dinamis sesuai log file dari mysql yang ada di master (mysql-bin.xxxxxxxx)

                            • tanggal 10 April 2010 jam 19:59,
                              ahmad bilang gini :

                              apa perbedaan backup pada mysql dan replicate. apa kelbihan dan kekurangan masing2

                              • tanggal 10 April 2010 jam 22:18,
                                andri nawawi bilang gini :

                                Kalau backup mysql dengan metode mysqldump hasil yang akan kita peroleh adalah file plaintext yang digunakan untuk men-generate db/table beserta data, sedangkan replicate / clustering adalah live-hot backup sehingga kita punya 2 database yang identik, begitu db master bermasalah kita bisa langsung memindahkannya ke db slave tanpa perlu banyak down time :-) atau bahkan kita bisa menggunakan kedua database secara bersamaan untuk mengurangi traffic disalah satu dbserver

                              • tanggal 11 April 2010 jam 08:17,
                                ahmad bilang gini :

                                wuih, expert bgt. thanks ya mas.

                                • tanggal 11 April 2010 jam 08:38,
                                  ahmad bilang gini :

                                  # pico /etc/mysql/my.cnf, apakah ini artinya replikasi di lakukan di ubuntu ? kalo tidak salah folder /etc/ di ubuntu ??

                                  kalau tutorial diatas dilakukan di XP, apakah ada yg harus disesuaikan atau dirubah.

                                  mas, jadi replikasi itu bisa di lakukan ke beberapa slave ya? maksud saya master nya 1, tapi slaven nya bisa lebih dari satu, misal 2 gitu…., kalau memang betul pendapat saya. bagaimana melakukan nya, setup untuk beberapa slave ??

                                  nuhun pisan kang …


                                  (harus diisi yaa)

                                  (harus, ga dimunculin kok)

                                  notifikasikan komentator via email

                                  sketsa andri

                                  Ada apa ini?

                                  Sobat sedang membaca Membuat MySQL Database Replication Server di andri nawawi web log.