Repositori ini berisi dokumentasi pemasangan aplikasi custom log shipping untuk SQL Server 2019 Express edition. Terdapat tiga komponen dari aplikasi ini.
tbd-backup-script
dipasang pada primary node. Program ini berisi script yang akan melakukan backup log dari database pada primary nodes. Program ini juga bertugas mengirimkan file log dan mengambil status restore dari log. Program ini mencatat konfigurasi dan aktivitas pada database mongodb.
tbd-server-webserver
dapat dipasang dimana saja asalkan dapat mengakses server mongodb yang mencatat konfigurasi dan aktivitas dari tbd-backup-script
. Aplikasi web ini dapat digunakan untuk konfigurasi dan monitoring jalannya log shipping.
tbd-client-webserver
dipasang pada secondary node. Program ini berisi dua aplikasi yaitu web api yang berperan menerima kiriman log dari tbd-backup-script
dan script restore yang berperan me-restore log yang telah dikirim.
- Primary node hanya boleh ada satu.
- Secondary node boleh lebih dari satu node.
Prerequisites primary node:
- Git
- NodeJs versi v14 atau lebih tinggi
- Yarn versi 1.22
- MongoDB versi 5.0.3
- SQL Server versi 2019 Express edition
Prerequisites secondary node:
- Git
- NodeJs versi v14 atau lebih tinggi
- Yarn versi 1.22
- SQL Server versi 2019 Express edition
tbd-backup-script (Primary Node)
Panduan lengkap pemasangan dapat dibaca disini
- Salin repositori
git clone https://github.com/rochimfn/tbd-backup-script.git
- Masuk ke direktori
cd tbd-backup-script
- Pasang dependensi
yarn
- Konfigurasi
.env
cp .env.example .env #bash atau powershell
copy .env.example .env #cmd
tbd-server-webserver (Primary Node)
Panduan lengkap pemasangan dapat dibaca disini
- Salin repositori
git clone https://github.com/rochimfn/tbd-server-webserver.git
- Masuk ke direktori
cd tbd-server-webserver
- Pasang dependensi
yarn
- Konfigurasi
.env
cp .env.example .env #bash atau powershell
copy .env.example .env #cmd
tbd-client-webserver (Secondary Node)
Panduan lengkap pemasangan dapat dibaca disini
- Salin repositori
git clone https://github.com/rochimfn/tbd-client-webserver.git
- Masuk ke direktori
cd tbd-client-webserver
- Pasang dependensi
yarn
- Konfigurasi
.env
cp .env.example .env #bash atau powershell
copy .env.example .env #cmd
tbd-backup-script (Primary Node)
Isi berkas .env
dengan kredensial mongodb. Contohnya sebagai berikut:
MONGO_HOST='127.0.0.1'
MONGO_PORT='27017'
MONGO_DATABASE='log_shipping'
MONGO_USERNAME='admin'
MONGO_PASSWORD='password'
Konfigurasi mongodb wajib sama dengan web monitor
tbd-server-webserver (Primary Node)
Isi berkas .env
dengan kredensial mongodb dan token (random string). Contohnya sebagai berikut:
MONGO_HOST='127.0.0.1'
MONGO_PORT='27017'
MONGO_DATABASE='log_shipping'
MONGO_USERNAME='admin'
MONGO_PASSWORD='password'
TOKEN='vmouwqhlkdjf0f29u0fh2vs'
Konfigurasi mongodb wajib sama dengan backup script
Jalankan perintah berikut untuk mendaftarkan admin untuk web monitor:
yarn setup
Pengguna default:
- Nama Lengkap:
Rochim Farul Noviyan
- Email:
[email protected]
- Password:
password
Akun pengguna dapat disesuaikan didalam pengaturan profile.
tbd-client-webserver (Secondary Node)
Isi berkas .env
dengan kredensial sqlserver. Contohnya sebagai berikut:
PASSWORD='password'
TOKEN='qwertyuiopasdfghjklzxcvbnm123456'
MSSQL_HOST='127.0.0.1'
MSSQL_PORT=1432
MSSQL_USERNAME='admin'
MSSQL_PASSWORD='password'
DIR_BACKUP='C:\rc_backup_client\'
Pastikan SQL Server dan aplikasi ini memiliki akses baca tulis direktori
DIR_BACKUP
Jalankan perintah berikut untuk mendaftarkan akun untuk backup script
yarn setup
Pengguna default:
- Email:
[email protected]
- Password:
password
(atau menyesuaikan nilai konfigurasiPASSWORD
pada.env
)
Pastikan telah menjalankan pemasangan dan konfigurasi program!
Syarat dari log shipping
adalah secondary db merupakan hasil restore dari primary db. Jika secondary db belum tersedia silahkan persiapkan dulu. Berikut adalah contoh persiapan:
- Backup database
BACKUP DATABASE [programming-in-db] TO DISK = N'C:\rc_backup\programming-in-db.bak'
-
Pindah berkas backup (
programming-in-db.bak
) ke secondary node -
Restore database
RESTORE DATABASE [programming-in-db] FROM DISK = N'C:\rc_backup_client\programming-in-db.bak'
WITH MOVE 'programming-in-db' TO 'C:\Program Files\Microsoft SQL Server\MSSQL15.SQLEXPRESS1\MSSQL\DATA\programming-in-db.mdf',
MOVE 'programming-in-db_log' TO 'C:\Program Files\Microsoft SQL Server\MSSQL15.SQLEXPRESS1\MSSQL\DATA\programming-in-db_log.ldf',
STANDBY= 'C:\Program Files\Microsoft SQL Server\MSSQL15.SQLEXPRESS1\MSSQL\DATA\programming-in-db_standby.bak', REPLACE;
- Secondary db siap menerima merestore log
cd tbd-server-webserver
yarn start
-
Buka http://localhost:5000 (atau sesuai ip server)
- email:
[email protected]
- password:
password
- email:
- Buka halaman "Primary Node"
- Tekan tombol "EDIT"
- Sesuaikan isian dengan kredensial primary node
- Tekan tombol "SIMPAN"
- Buka halaman "Secondary Nodes"
- Tekan tombol "TAMBAH"
- Sesuaikan isian dengan kredensial client secondary (tbd-client-webserver)
- default port:
3000
- default email:
[email protected]
- default password:
password
- default port:
- Tekan tombol "TAMBAH"
Bagian ini hanya menjelaskan penjadwalan di windows. Penjadwalan di linux dapat mengikuti panduan ini.
yarn global add pm2
cd tbd-client-webserver
pm2 start src/index.js --name "rc-client"
Buka program Task Scheduler
. Pada start menu ada di Windows Administrative Tools. Atau gunakan pencarian.
Pada sidebar bagian kanan, pilih menu "Create Task" dan jendela Create Task akan muncul.
Pada tab General sesuaikan nilai "Name" dengan nama yang diinginkan, misalkan saja "backup-script". Lalu pada bagian bawah disarankan memilih "Run whether user is logged on or not". Berpindah ke tab Triggers.
Tekan tombol "New...", pada jendela yang muncul sesuaikan kapan backup script akan berjalan. Misalkan disini script akan berjalan secara "Daily" (harian) dimulai pada tanggal 17/12/2021 jam 21:40. Script akan di jalankan lagi setiap 5 menit setelah eksekusi. Tekan "OK" untuk menyimpan. Berpinah ke tab "Actions".
Tekan tombol "New...", pada jendela yang muncul pastikan Start a program terpilih pada bagian Action. Pada bagian Program/script arahkan ke executable nodejs. Lalu pada bagian Add arguments (optional) isi dengan lokasi script.js
dari backup-script dan tambahkan argumen log
dibelakang. Misalkan seperti berikut:
"C:\Users\rochim\Projects\fp-tbd\backup-script\script.js" log
Berpindah ke tab Conditions
(Opsional) Hilangkan centang pada "Start the task only if the computer is on AC power" agar script dapat berjalan ketika perangkat sedang tidak di charge (misal menggunakan laptop).
Tekan "OK" untuk menyimpan!
Pastikan task terdaftar dengan menekan "Task Scheduler Library" pada sidebar bagian kiri.
Buka program Task Scheduler
. Pada start menu ada di Windows Administrative Tools. Atau gunakan pencarian.
Pada sidebar bagian kanan, pilih menu "Create Task" dan jendela Create Task akan muncul.
Pada tab General sesuaikan nilai "Name" dengan nama yang diinginkan, misalkan saja "restore-script". Lalu pada bagian bawah disarankan memilih "Run whether user is logged on or not". Berpindah ke tab Triggers.
Tekan tombol "New...", pada jendela yang muncul sesuaikan kapan backup script akan berjalan. Misalkan disini script akan berjalan secara "Daily" (harian) dimulai pada tanggal 17/12/2021 jam 21:50. Script akan di jalankan lagi setiap 5 menit setelah eksekusi. Tekan "OK" untuk menyimpan. Berpinah ke tab "Actions".
Tekan tombol "New...", pada jendela yang muncul pastikan Start a program terpilih pada bagian Action. Pada bagian Program/script arahkan ke executable nodejs. Lalu pada bagian Add arguments (optional) isi dengan lokasi restore.js
dari backup-script dan tambahkan argumen log
dibelakang. Misalkan seperti berikut:
"C:\Users\rochim\Projects\fp-tbd\client-webserver\scripts\restore.js"
Berpindah ke tab Conditions
(Opsional) Hilangkan centang pada "Start the task only if the computer is on AC power" agar script dapat berjalan ketika perangkat sedang tidak di charge (misal menggunakan laptop).
Tekan "OK" untuk menyimpan!
Pastikan task terdaftar dengan menekan "Task Scheduler Library" pada sidebar bagian kiri.
Contoh log yang dihasilkan pada primary node.
Contoh log yang dihasilkan pada secondary node.
cd tbd-server-webserver
yarn start
Web monitor dapat diakses diport 5000