Instalasi Rubyrep, master to master replikasi untuk database PostgreSQL

  Rubyrep yang saya pergunakan adalah versi rubyrep dengan JRuby. Sampai saat ini kecepatan replikasi yang dapat saya peroleh adalah 20 record per detik. Hasil ini dapat berbeda untuk jenis applikasi yang anda gunakan.

Konfigurasi yang saya miliki :

  • memakai 3 server yang terinstall Ubuntu 10.10.
  • 2 Server memiliki Database PostgreSQL 9.1.
  • 1 Server memiliki Java 1.6 untuk RubyRep berjalan.

Berikut langkah langkah yang dilakukan untuk instalasi rubyrep :

  • Download Rubyrep versi JRuby disini.
  • ekstrak file hasil download tersebut.
  • Kemudian buat file konfigurasinya.
$> cd rubyrep
$> ./rubyrep generate myruby.conf
  • Edit file konfigurasi sesuai dengan database anda, berikut adalah konfigurasi milik saya.
 RR::Initializer::run do |config|
  config.left = {
    :adapter  => 'postgresql', # or 'mysql'
    :database => 'db1',
    :username => 'postgres',
    :password => 'postgres',
    :host     => '192.168.0.1',
    :port     => '5432',
#    :logger   => '/opt/rubyrep/db1_sql.log'
  }

  config.right = {
    :adapter  => 'postgresql',
    :database => 'db2',
    :username => 'postgres',
    :password => 'postgres',
    :host     => '192.168.0.2',
    :port     => '5432',
#    :logger   => '/opt/rubyrep/db2_sql.log'
  }

  #config.options[:row_buffer_size] = 100
  #config.options[:commit_frequency] = 500

  ## General Options :
  config.options[:database_connection_timeout] = 360
  config.options[:rep_prefix] = 'rr_xx'

  ## Syncronization Options :
  config.options[:table_ordering] = :true
  config.options[:sync_conflict_handling] = :later_wins

  ## Replication Options :
  config.options[:replication_conflict_handling] = :later_wins

  ## Table Options :
  ## Exclude tables options :
  config.exclude_tables 'my_big_table'
  config.exclude_tables 'my_big_reporting_table'
  config.exclude_tables 'my_datawarehouse_result_table'
  ## Include tables options :
  config.include_tables /./ # regexp matching all tables in the database
  config.include_tables 'my_image_table',
    :row_buffer_size => 200
  config.include_tables 'my_material_tracking',
    :row_buffer_size => 200
end
    • Setelah itu kita lakukan scan untuk cek database structure
$> cd rubyrep
$> ./rubyrep scan myruby.conf
    • Setelah itu kita lakukan sync untuk melakukan sinkronisasi data
$> cd rubyrep
$> ./rubyrep sync myruby.conf
    • Setelah itu baru kita lakukan replikasi
$> cd rubyrep
$> ./rubyrep replicate myruby.conf
  • Done.
Replikasi akan berjalan dengan cara melakukan log atas semua perintah DML, insert, update, delete.
Untuk perintah DDL , create, truncate, drop, tidak akan direplikasi.
Silahkan mencoba.

Author: Nareswara

Ordinary People with eye glasses

Leave a Reply

Your email address will not be published. Required fields are marked *