SymmetricDS adalah aplikasi open source yang di gunakan untuk melakukan sinkronisasi database. Aplikasi tersebut menggunakan teknologi web untuk melakukan replikasi antar tabel secara real time dan dapat di gunakan pada bandwith internet yang rendah. Aplikasi tersebut juga dapat bertahan pada koneksi internet yang terputus.
Lakukan konfigurasi conf/symmetric.properties
isilah group.id, external.id, dan sync.url lalu pilih driver database dan konfigurasi akses database.
Setelah konfigurasi selesai buatlah file xml yang berisi tabel2 awal yang akan di buat, dapat juga menggunakan dump database jika sudah ada.
XML ini di buat untuk mempermudah pembuatan database antar jenis database misal MySQL dan MSSQL sedangkan tabel yang akan di buat adalah sama.
perintah yang di gunakan adalah {path_to_bin}/sym –run-ddl {path_to_xml}init.xml
Setelah tabel terbuat
berikan permission berikut pada user yang di gunakan untuk mengakses database
mysql> grant trigger on *.* to {username};
mysql> grant create routine on *.* to {username};
mysql> grant super on *.* to {username};
Setelah permission terbuat jalankan
{path_to_bin}sym –auto-create
untuk membuat secara otomatis tabel tabel yang di butuhkan oleh symmetricds
Buatlah tabel identitas pada host
INSERT INTO sym_node
(node_id, node_group_id, external_id, sync_enabled)
VALUES
(‘00000′, ‘groupID’, ‘00000′, 1);
INSERT INTO sym_node_identity VALUES (‘00000′);
Buat lah group
INSERT INTO sym_node_group
(node_group_id, description)
VALUES
(‘dpack’, ‘dpack server on each store’);
INSERT INTO sym_node_group
(node_group_id, description)
VALUES
(‘dpackHQ’, ‘dpack consolidation server’);
Buatlah link daripada group apakah group tersebut push ataupun wait
INSERT INTO sym_node_group_link
(source_node_group_id, target_node_group_id, data_event_action)
VALUES
(‘dpack’, ‘dpackHQ’, ‘P’);
INSERT INTO sym_node_group_link
(source_node_group_id, target_node_group_id, data_event_action)
VALUES
(‘dpackHQ’, ‘dpack’, ‘W’);
Buatlah channel yang berisikan urutan dari proses yang akan di buat nantinya
INSERT INTO sym_channel
(channel_id, processing_order, max_batch_size, max_batch_to_send, extract_period_millis, batch_algorithm, enabled, description)
VALUES
(‘to_dpack’, 10, 1000, 10, 0, ‘default’, 1, ‘data to be sent to dpack’);
INSERT INTO sym_channel
(channel_id, processing_order, max_batch_size, max_batch_to_send, extract_period_millis, batch_algorithm, enabled, description)
VALUES
(‘to_dpackHQ’, 1, 1000, 10, 60000, ‘transactional’, 1, ‘data from dpack to hq’);
Buat trigger yang berisikan tabel yang akan di replikasi beserta arah replikasinya.
INSERT INTO sym_trigger
(trigger_id,source_table_name,channel_id,last_update_time,create_time)
VALUES
(’sale_transaction’,’sale_transaction’,'to_dpackHQ’,current_timestamp,current_timestamp);
INSERT INTO sym_trigger
(trigger_id,source_table_name,channel_id,last_update_time,create_time)
VALUES
(’sale_transaction_withid’,’sale_transaction_withid’,'to_dpackHQ’,current_timestamp,current_timestamp);
INSERT INTO sym_trigger
(trigger_id,source_table_name,channel_id,last_update_time,create_time)
VALUES
(‘item’,'item’,'to_dpack’,current_timestamp,current_timestamp);
INSERT INTO sym_trigger
(trigger_id,source_table_name,channel_id,last_update_time,create_time)
VALUES
(‘item_specific’,'item_specific’,'to_dpack’,current_timestamp,current_timestamp);
Buatlah router yang berisikan tujuan dari group
insert into sym_router
(router_id, source_node_group_id, target_node_group_id, create_time, last_update_time)
values
(‘dpackhq-2-dpack’,'dpackhq’, ‘dpack’, current_timestamp, current_timestamp);
insert into sym_router
(router_id, source_node_group_id, target_node_group_id, create_time, last_update_time)
values
(‘dpack-2-dpackhq’,'dpack’, ‘dpackhq’, current_timestamp, current_timestamp);
insert into sym_router
(router_id, source_node_group_id, target_node_group_id, create_time, last_update_time)
values
(‘dpack-2-dpackhq-withid’,'dpack’, ‘dpackhq’, current_timestamp, current_timestamp);
insert into sym_router
(router_id, source_node_group_id, target_node_group_id, router_type, router_expression, create_time, last_update_time)
values
(‘dpackhq-2-dpack-id’,'dpackhq’, ‘dpack’, ‘column’, ‘comp_id=:EXTERNAL_ID’, current_timestamp, current_timestamp);
insert into sym_trigger_router
(trigger_id, router_id, initial_load_order, create_time, last_update_time)
values
(‘item’, ‘dpackhq-2-dpack’, 1, current_timestamp, current_timestamp);
insert into sym_trigger_router
(trigger_id, router_id, initial_load_order, create_time, last_update_time)
values
(’sale_transaction’, ‘dpack-2-dpackhq’, 1, current_timestamp, current_timestamp);
insert into sym_trigger_router
(trigger_id, router_id, initial_load_order, create_time, last_update_time)
values
(‘item_specific’, ‘dpackhq-2-dpack-id’, 1, current_timestamp, current_timestamp);
insert into sym_trigger_router
(trigger_id, router_id, initial_load_order, create_time, last_update_time)
values
(’sale_transaction_withid’, ‘dpack-2-dpackhq-withid’, 1, current_timestamp, current_timestamp);
Pada sisi client buatlah konfigurasi client
jalankan xml untuk membuat database pada sisi client