Headlines News :

POPULAR POST

Replikasi Database MySQL

Topologi Replikasi Database MySQL, Master to Master dan Master to Slave

Topologi Replikasi Database MySQL, Master to Master dan Master to Slave

Pengenalan Replikasi Database MySQL

Replikasi Database MySQL adalah melakukan sinkronisasi database agar saling entry atau isi database. Selain itu replikasi database bertujuan untuk membuat backup secara realtime apabila Server database MySQL utama (Master) offline / down maka kita tetap bisa mendapatkan data saat entry terakhir dilakukan oleh user di database Backup (Slave). Replikasi Database MySQL ada dua macam:
Master to Master MySQL Replication
Web 1 dan Web 2 bertindak kedua – dua nya sebagai master. Apabila ada Update database di Web 1 maka secara realtime akan di salin ke Web2. Apabila ada update database di Web2 maka secara realtime akan di salin ke Web 1.
Master to Slave MySQL Replication
Web 1 bertindak sebagai database utama (Master), apabila ada update di database Web 1 maka secara realtime di salin ke Web 3. Web 3 hanya bersifat sebagai backup (Slave). Web 3 selalu standby aktif menunggu salinan data dari Web 1.

Konfigurasi Database MySQL Web 1

Konfigurasi my.cnf Web1
root@web1:~# vim /etc/mysql/my.cnf
[mysqld]
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
server-id = 1
log_bin = /var/log/mysql/mysql-bin.log
#Nama Database yg akan kita replikasi
binlog_do_db = kurusetra
binlog_ignore_db = mysql
binlog_ignore_db = test
#bind-address = 127.0.0.1
Restart MySQL Web1
root@web1:~# service mysql restart
Replicator Database Web1
root@web1:~# mysql
mysql> create database kurusetra;
mysql> create user ‘replicator’@'%’ identified by ‘password’;
mysql> grant replication slave on *.* to ‘replicator’@'%’;
mysql> \q

Konfigurasi Database MySQL Web2

Konfigurasi my.cnf Web2
root@web2:~# vim /etc/mysql/my.cnf
[mysqld]
#
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
server-id = 2
log_bin = /var/log/mysql/mysql-bin.log
binlog_do_db = kurusetra
binlog_ignore_db = mysql
binlog_ignore_db = test
#bind-address = 127.0.0.1
Restart MySQL Web2
root@web2:~# service mysql restart
Replicator Database Web2
root@web2:~# mysql
mysql> create database kurusetra;
mysql> create user ‘replicator’@'%’ identified by ‘password’;
mysql> grant replication slave on *.* to ‘replicator’@'%’;
mysql> \q

Pengujian Replikasi Database MySQL

Konfigurasi Replikasi Web1 ke Web2

## POSISI DI WEB1 ##
root@web1:~# mysql
mysql> show master status;
+——————+———-+————–+——————+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+——————+———-+————–+——————+
| mysql-bin.000004 | 107 | kurusetra | mysql,test |
+——————+———-+————–+——————+
1 row in set (0.00 sec)
# 107 adalah posisi awal sebelum database kurusetra di isi dengan tabel
## POSISI DI WEB2 ##
# KITA JADIKAN WEB1 SEBAGAI MASTER WEB2
root@web2:~# mysql
mysql> slave stop;
mysql> CHANGE MASTER TO MASTER_HOST=’192.168.57.40′, MASTER_USER=’replicator’, MASTER_PASSWORD=’password’,MASTER_LOG_FILE=’mysql-bin.000004′, MASTER_LOG_POS=107;
mysql> start slave;
mysql> show slave status \G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.57.45
Master_User: replicator
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000004
Read_Master_Log_Pos: 107
Relay_Log_File: mysqld-relay-bin.000002
Relay_Log_Pos: 253
Relay_Master_Log_File: mysql-bin.000004
#Slave_IO_Running: Yes dan Slave_SQL_Running: Yes
#Berarti Web2 siap melakukan replikasi tabel database kurusetra dari Web1
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
mysql> show master status;
+——————+———-+————–+——————+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+——————+———-+————–+——————+
| mysql-bin.000004 | 1065 | kurusetra | mysql,test |
+——————+———-+————–+——————+
1 row in set (0.00 sec)

Konfigurasi Replikasi Web2 ke Web1

#POSISI DI WEB1
#KITA JADIKAN WEB2 SEBAGAI MASTER WEB1
root@web1:~# mysql
mysql> slave stop;
mysql> CHANGE MASTER TO MASTER_HOST=’192.168.57.41′, MASTER_USER=’replicator’, MASTER_PASSWORD=’password’, MASTER_LOG_FILE=’mysql-bin.000004′, MASTER_LOG_POS=1065;
mysql> slave start;
mysql> show slave status\G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.57.46
Master_User: replicator
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000004
Read_Master_Log_Pos: 1065
Relay_Log_File: mysqld-relay-bin.000002
Relay_Log_Pos: 253
Relay_Master_Log_File: mysql-bin.000004
Slave_IO_Running: Yes
Slave_SQL_Running: Yes

Pengujian Replikasi Web1 ke Web2

## POSISI KEMBALI KE WEB1 ##
mysql> use kurusetra;
mysql> create table dariweb1 (mid int(11) auto_increment, PRIMARY KEY
-> (mid)) Engine=MyISAM;
mysql> insert into dariweb1 () values ();
##CEK TABEL DI WEB2 (POSISI DI WEB2) ##
mysql> use kurusetra;
mysql> show tables;
#TABEL YANG DIBUAT DI WEB1
#MUNCUL DI WEB2
mysql> show tables;
+———————+
| Tables_in_kurusetra |
+———————+
| dariweb1 |
+———————+
mysql> select * from dariweb1
-> ;
+—–+
| mid |
+—–+
| 1 |
+—–+

Pengujian Replikasi Web2 ke Web1

#POSISI DI WEB2
root@web2:~# mysql
mysql> use kurusetra;
mysql> create table dariweb2 (mid int(11) auto_increment, PRIMARY KEY
-> (mid)) Engine=MyISAM;
mysql> insert into dariweb2 () values ();
mysql> insert into dariweb1 () values ();

#POSISI DI WEB1
root@web1:~# mysql
mysql> use kurusetra;
mysql> show tables;
+———————+
| Tables_in_kurusetra |
+———————+
| dariweb1 |
| dariweb2 |
+———————+

mysql> select * from dariweb2;
+—–+
| mid |
+—–+
| 1 |
+—–+
mysql> select * from dariweb1;
+—–+
| mid |
+—–+
| 1 |
| 2 |
| 3 |
| 4 |
| 5 |
| 6 |
+—–+

Linux IPTV

 
 
IPTV Server
features:

  • multicast streaming to local networks (in basic setup) 
  • multicast udp proxy streaming to public networks
  • User authentication
  • Scrambled channels with scam (latest oscam) or CAM module
  • IPTV management Portal
  • Set Top Box with custom IPTV Portal

Hardware
Ubuntu precise (12.04.1 LTS)
  • 4 GB DDR3 Ram
  • AMD FX-6100 Six-Core Processor
DVB-S cards from Digitaldevices 
2x Digital Devices Cine S2 PCI-E
  • 6x Digital Devices DuoFlex S2
  • 16 Tuners on 2 PCI-E 1x cards
Card Reader

Software used
Apache2

Installasi 


Install a Linux System on your Server (Preferred Debian or Ubuntu)

Download and install Mumudvb from source.
 wget https://github.com/braice/MuMuDVB/archive/master.zip  
 unzip master zip  
 cd mumudvb  
 apt-get update  
 apt-get install build-essential autotools automake gettext libtool  
 autoreconf -i -f  
 ./configure --enable-cam-support --enable-scam-support  
 make  
 make install  

 
Stalker Portal (IPTV Portal)
 wget https://github.com/azhurb/stalker_portal/archive/v4.8.71.zip  
 sudo apt-get update  
 sudo apt-get install apache2 php5 php5-pear mysql-server libapache2-mod-php5filter  
 pear channel-discover pear.phing.info  
 pear install phing/phing  
 unzip v4.8.71.zip  
 cp -a stalker_portal* /var/www/stalker  
 mysql -u root -p  
   
 create database stalker_db;  
 GRANT ALL PRIVILEGES ON stalker_db.* TO stalker@localhost IDENTIFIED BY '1' WITH GRANT OPTION;  
 cd /var/www/stalker/deploy  
 sudo phing install  
 vim /etc/php5/apache2/php.ini  
 short_open_tag = On  
 a2enmod rewrite  
 in your virtualhost config set  
 Options -Indexes -MultiViews  
 AllowOverride All  

Optimalisasi Desktop Linux


Cukup satu Window Manager
kebanyakan pemula biasanya akan senang sekali mengutak-atik system linux-nya dengan meng-install berbagai macam window manager, seperti Gnome, Mate, KDE, Trinity dan lain-lain. padahal window manager yang sebenarnya dipakai pasti hanya satu. untuk itu pastikan kita hanya menggunakan satu window manager saja. tidak perlu terlalu banyak window manager. selain boros Harddisk juga menghabis kan memory karena terkadang service window manager tersebut di-load walaupun tidak sedang dipakai.

Pastikan Aplikasi yang digunakan Hanya untuk Window Manager yang anda pakai.
setelah hanya satu window manager yang dipakai, saatnya untuk memastikan bahwa aplikasi yang anda pergunakan memang khusus untuk berjalan di window manager tersebut. misalnya kita pakai gnome, maka pergunakanlah aplikasi yang dependent ke gnome, sepeti gcompris dll. seandainya kita menggunakan aplikasi dengan berbeda window manager maka linux akan menginstall pula core window manager tersebut, dan ini membuat system melakukan load 2 core window manager sekaligus. untuk sekedar tips memilih aplikasi misalnya anda memakai Gnome, carilah aplikasi yang berawalan huruf G, misalnya GCompris, Gnumeric dan lain-lain, itu adalah aplikasi yang dependent ke gnome (walaupun tidak semua aplikasi berawalan G adalah untuk Gnome), untuk aplikasi yang dependent ke KDE silakan cari yang berawalan huruf K, misalnya Koffice, Kanagram, KPDF dan lain-lain.

Buang semua aplikasi yang ganda

berapa browser yang ter-isntall di PC anda, berapa aplikasi office yang ada di PC anda, dan berapa music atau video player yang ada di PC anda. jika jawabanya lebih dari 1, maka silakan anda tentukan pilihan mana yang ingin anda pakai selamanya. secara default linux menyertakan firefox sebagai bawaan, jika anda leih menyukai chrome atai browser lain, silakan uninstall terlebih dahulu, begitu juga dengan office, biasanya Libre office sekarang sudah menjadi standard paket office baik gnome maupun kde. jadi hemat saya kita tidak perlu meng-install dua aplikasi yang berbeda hanya untuk fungsi yang sama, tentukanlah pilihan anda ke salah satu aplikasi.

Gunakan Linux Minimalis

gunakan Linux minimal Footprint, kalau hardware anda adalah hardware versi lama, silakan gunakan linux yang ringan, seperti puppy linux atau DSL. banyak distro-distro linux yang memang di sediakan untuk hardware-hardware lama. jika anda tertarik silakan baca ditulisan saya 10 linux ringan dan minimalis alternatif.

Susun Ulang DIrectory
booting menggunakan system live CD atau USB flash drive. Kemudian masuk ke terminal. Application >Accessories > Terminal
Kemudian login sebagai root dengan perintah sudo bash
Lihat partisi yang ingin di optimalkan dengan perintah df h atau fdisk l
misalnya kita ingin mengoptimasi susunan direktori pada partisi /dev/sda1. Maka jalankan perintah e2fsck fD /dev/sda1.
-D berarti mengoptimalisasi susunan direktori atau folder dalam filesystem. E2fsck mengoptimasi dengan cara mengindeks ulang direktori, atau mengurutkan dan mengkompress untuk direktori yang lebih kecil. Dengan mengindeks ulang susunan filesystem anda, maka filesystem lebih terasa responsif.

noatime dan writeback untuk Optimasi (khusus ext3 dan reiserfs)
Untuk mengaktifkan noatime dan writeback kita harus meng-edit fstab. Perintahnya #sudo nano /etc/fstab
Contoh pada baris fstab berikut ini tambahkan opsi noatime dan writeback UUID=3eb414ba51984c1f9e3de91675329f83 / ext3 defaults,data=writeback,noatime,errors=remountro 0 0
selanjutnya edit file konfigurasi grub, dengan #sudo nano /boot/grub/menu.lst
tambahkan baris rootflags=data=writeback
kemudian jalankan perintah sudo updategrub
Apabila filesystem memakai ext3, gunakan perintah #sudo tune2fs o journal_data_writeback /dev/sda1
Selanjutnya reboot komputer anda. Jika benar maka akses audio, gambar, dan video akan terasa lebih cepat, NB saya dapat tips ini dari blog sebelah, saya belum pernah coba yang ini soalnya saya pakai Ext4.

Atur Swap
Cache memory digunakan oleh system Linux untuk aplikasi yang sewaktu-waktu digunakan kembali, maka memori cache akan digunakan oleh aplikasi tersebut. Sistem Linux menggunakan memori yang tidak terpakai pada RAM sebagai cache aplikasi. silakan edit pada file sysctl.conf, perintahnya #sudo gedit /etc/sysctl.conf Apabila komputer anda memiliki memori yang pas-pasan, dan tidak ingin menggunakan cache swap, tambahkan baris vm.swappiness=0 Sebaliknya, apabila anda memiliki memori besar, dan ingin mengoptimalkan penggunaan cache tambahkan baris vm.swappiness=100. karena kasus saya memori saya 4GB dan ini merupakan memori yang cukup besar, maka saya masukan vm.swappiness=100 supaya memori tidak nganggur.

Mempercepat Booting
Optimasi Processor Dual Core Untuk Concurrent booting
Apabila anda memiliki komputer dengan processor dual core, anda bisa memanfaatkannya untuk memproses booting agar lebih cepat. Buka terminal anda, kemudian edit file rc dengan perintah #sudo nano /etc/init.d/rc Pada baris CONCURRENCY=none ganti menjadi CONCURRENCY=shell Concurrency sendiri artinya melakukan bersama-sama, dalam hal ini proses booting akan dilakukan bersamaan oleh dua processor tersebut sehingga bisa lebih cepat.

Menggunakan paket preload
preload merupakan paket yang digunakan untuk mengoptimalkan proses booting dan startup aplikasi. Untuk menginstall preload jalankan perintah #sudo apt-get install preload Setelah diinstall preload akan berjalan sendiri, anda tidak perlu melakukan konfigurasi apapun, karena developernya telah mengoptimasikan preload tersebut. Atau apabila anda ingin mengetahui buka file konfigurasinya di /etc/preload.conf

OPTION DEFAULT
CONTROL
Cache model (system) settings
model.cycle 20
[seconds] Bagaimana Preload akan mengumpulkan data dari system anda dan mengupdate databasenya yang berisi program dan library anda
model.halflife 168
[hours] tenggang waktu maksimal preload akan menghapus data lama.
model.minsize 2000000
[bytes] minimal memory yang akan dipakai untuk System Calls yang akan dipakai oleh preload. semakin kecil berarti semkain kecil pula cache aplikasi untuk preload.
Memory settings
rumus untuk menemukan memory maksimum yang tersedia dari preload adalah :
(Total RAM x model.memtotal) + (RAM tersedia saat start x model.memfree) + (Cached memory x model.memcached)
model.memtotal -10%
model.memfree 100%
model.memcached 30%


Untuk memonitor aktivitas preload anda dapat melihat log-nya. Pada terminal gunakan perintah #sudo tail f/var/log/preload.log
Menggunakan preload dapat mengoptimalkan waktu startup system anda. Karena kebanyakan komputer saat ini memiliki RAM yang besar, preload memanfaatkan RAM ini untuk digunakan secara optimal.

Menggunakan Opsi profile pada Grub
Anda juga dapat membuat profile boot anda, sehingga kedepannya booting akan membaca file profile yang disimpan. Untuk membuat profile pada layar boot grub, tekan e pada baris

/boot/vmlinuz2.6.2416generic root=UUID=3eb414ba51984c1f9e3de91675329f83 ro splash=verbose vga=794

pada akhir baris tambahkan profile. Kemudian tekan b untuk membooting sistem anda. Ketika proses booting, system akan mempelajari booting apa saja yang dilakukan kemudian akan membacanya kembali untuk proses booting selanjutnya.Menonaktifkan Ipv6
Secara defaut Ubuntu mengaktifkan protokol Ipv6, anda harus membuat sebuah file untuk memblok protokol ini. Ketik perintah sudo gedit /etc/modprobe.d/bad_list kemudian tambahkan baris alias netpf10 off
Kemudian save

Menggunakan Paket prelink
install paket prelink dengan perintah #sudo apt-get install prelink
kemudian buka file konfigurasi prelink dengan perintah #sudo nano /etc/default/prelink
Ubah baris PRELINKING=unknown menjadi PRELINKING=yes
Untuk menjalankan prelink jalankan perintah #sudo /etc/cron.daily/prelink
Selanjutnya prelink akan menjalankan quick prelink setiap hari, biasanya dimalam hari (kurang dari 1 menit), sedangkan setiap 14 hari full prelink akan berjalan. Anda dapat mengganti waktu prelink tersebut pada crontab Menggunakan Paket pessulus dan Ubuntutweak Selain optimasi manual, anda juga dapat menggunakan paket Optimasi Ubuntu, aplikasi yang sering digunakan adalah Ubuntutweak.


Untuk menjaga tampilan panel pada desktop agar tidak berubah-ubah, anda dapat menggunakan paket pessulus. Install dengan perintah #sudo apt-get install pessulus.


Menonaktifkan Ipv6 (jika tidak digunakan)
defaut Ubuntu dan turunanya mengaktifkan protokol Ipv6, anda harus membuat sebuah file untuk memblok protokol ini. Ketik perintah ini di terminal untuk menon-aktifkan fitur ini.#sudo nano /etc/modprobe.d/bad_list kemudian tambahkan baris alias netpf10 off Kemudian keluar dengan me-SAVE-nya, caranya tekan Ctrl + X kemudian tekan huruf Y dan diikuti enter.

Bikin Boot Profile
Ubuntu atau Linux pada umumnya, ketika pertama kali booting, biasanya akan melakukan pencarian driver untuk dilakukan load ke system. yang dilakukan oleh grub adalah mencari driver mana yang terpakai kemudian di load. waktu pencarian inilah yang ingin kita optimalkan, bayangkan saja jika linux memiliki banyak driver, bisa memakan waktu lebih lama. caranya adalah dengan meminta supaya grub membuat profile atau semacam list driver – driver tertentu yang akan di load. kalo biasanya grub nyari satu-satu untuk menemukan yang mana yang akan di load, sekarang grub cukup membaca dari sebuah list yang mana itu adalah driver yang akan di load semua. silakan buka file etc/default/grub dan lalukan editing pada file tersebut seperti baisa saya #sudo nano /etc/default/grub, silakan cari baris GRUB_CMDLINE_LINUX_DEFAULT=”quiet splash” menjadi GRUB_CMDLINE_LINUX_DEFAULT=”quiet splash profile” selesai di edit silakan ketikan perintah untuk melakukan update pada grub2, #sudo update-grub2.

Hapus Splash Screen boot di Linux
pada saat linux sedang booting biasanya akan muncul tulisan boot atau apa gitu lah. fungsinya adalah untuk memberikan gambar animasi yang mengatakan bahwa linux sedang boot, namun untuk PC yang lemot, ada baiknya fitur splash screen ini dimatikan saja, caranya adalah dengan mengedit grub, trik ini mirip dengan trik sebelumnya. buka file /etc/default/grub dengan mengetikan #sudo nano /etc/default/grub kemudian cari baris GRUB_CMDLINE_LINUX_DEFAULT=”quiet splash profile” (ini mirip dengan trik bikin boot profile) kemudian hapus kata-kata splash disana sehingga berubah menjadi GRUB_CMDLINE_LINUX_DEFAULT=”quiet profile”. nah dengan cara ini maka splash screen tidak akan ditampilkan. satu lagi pastikan anda tidak meng-install plymouth-theme-ubuntu-text. jika terlanjur terinstall maka silakan di uninstall, kenapa karena kalau ter-install paket tersebut maka splash screen akan diganti dengan plymouth ubuntu text.
Ganti apt-get dengan apt-fast
saya sendiri baru tahu kalau ada apt-fast, sepertinya ini adalah program bikinan siapa gitu untuk mempercepat download aplikasi dari repository. saya tidak tahu juga bagaimana caranya berkerja yang pasti ketika saya pakai jadi cepat aja. untuk menggunakan apt-fast kita harus menambahkan dahulu repository apt-fast.
#sudo add-apt-repository ppa:tldm217/tahutek.net
#sudo apt-get update
#sudo apt-get install apt-fast
setelah itu anda tinggal menggunakan apt-fast untuk men-download aplikasi dari repository , misalnya apt-get install ubuntu-tweak silakan diganti apt-fast ubuntu-tweak.

Optimalisasi Konfigurasi Nginx

Selain sebagai load balancer, Nginx juga memiliki performansi yang sangat baik response time atau request per second saat melayani request assets files seperti css, javascript, html, pdf, image atau static files lain.

Saya sendiri pernah membandingkan response time Nginx dengan yang lain saat mengirimkan request untuk image dan hasilnya adalah Nginx memiliki response time 2 - 3 kali lebih baik. Padahal ukuran filenya lebih besar.

Berikut ini adalah optimasi Nginx untuk static assets files. Nginx yang digunakan adalah versi 1.4.4. Pada Debian 6, file konfigurasi Nginx terdapat pada direktori /etc/nginx/nginx.conf.

?
1
2
3
4
5
6
7
8
9
10
11
# asumsi, seluruh assets file seperti js, css, image berada pada directory assets
location ~ ^/assets/ {
  gzip_static on;
  expires max;
  add_header Cache-Control public;
 
  # unset ETag. Tidak disarankan menggunakan ETag
  # saat ada Last-Modified yang di set melalui "expires".
  add_header ETag "";
  break;
}

Konfigurasi secara keseluruhan. 
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# Nginx default configuration
user  nginx;
worker_processes  1;
 
error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;
 
 
events {
    worker_connections  1024;
}
 
 
http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;
 
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
 
    access_log  /var/log/nginx/access.log  main;
 
    sendfile        on;
    #tcp_nopush     on;
 
    keepalive_timeout  65;
 
    #gzip  on;
 
    include /etc/nginx/conf.d/*.conf;
 
    server {
     listen 80;
     server_name example.com www.example.com;
     root /home/example/html/public;
 
     # mulai dari ini :)
     location ~ ^/assets/ {
       gzip_static on;
       expires max;
       add_header Cache-Control public;
       add_header ETag "";
       break;
     }
   }
}
 
Copyright © 2011. COMASTNET - All Rights Reserved