Postgresql database auto restore

Halo, hari yang lelah, setelah membuat automation dump restore database mariadb/mysql, kali ini membuat script untuk auto dump dan restore untuk database Postgresql.

saya tidak akan mengulang, saya mau merujuk dari artikel saya sebelumnya : http://mandrivaputri.info/2020/08/membangun-data-ware-house-yang-aman/

artikel diatas memang sulit di pahami, karena basic nya saya memang bukan penulis apalagi pengajar, wkwkwkw, tapi setidaknya ini catatan bagi saya jika suatu saat ada pekerjaan serupa, jadi saya bisa lihat lagi dokumentasi saya. atau catatan ini bisa jadi portofolio saya jika saya hendak melamar pekerjaan di tempat lain :p

langsung saja ke script yah, script ini di jalankan di server :

{DATA WARE HOUSE}

yang pertama, kamu pastikan dulu kalau database server untuk postgresqlnya sudah terinstall.

bisa membaca artikel disini : https://computingforgeeks.com/how-to-install-postgresql-12-on-centos-7/

setelah itu, jalankan script dan cronjobnya pada user postgres

[root@db-warehouse ~]# su postgres

bash-4.2$ vi importpostgre.sh
#import db postgre
echo “halo bos”
dropdb database
createdb database
echo “buat db selesai”
cd /home/postgre/db
tar -xf *.tar.bz2
echo “extrac rampung”
rm -rf *.tar.bz2
echo “tar bz sudah di hapus”
for i in `find /home/postgre/db -type f -ctime -1`
do
psql database < $i
done
cd /home/postgre/db
rm -rf *
echo “rampung”

nah, jadi seperti itu scriptnya. jalankan di cronjob pada user postgres.

bash-4.2$ crontab -e

ya pokoknya gitulah, hehehe :*

Bagikan saja, itu tidak berat

Membangun data Ware House yang aman

Halo, kebetulan saat ini saya sedang membangun sebuah data Ware House.

apa itu data ware house ? yaitu sekumpulan database dari bermacam aplikasi yang di kumpulkan dalam satu server.

tujuan adalah untuk melakukan pengolahan data yang sumber datanya di ambil dari bermacam aplikasi tersebut. besar dong ? tentu, namanya juga ware house = gudang data.

kenapa tidak dilakukan pengolahan langsung di aplikasinya ? -sudah, tapi terkadang ada kebutuhan khusus diluar dari aplikasi. karena untuk melakukan perubahan di Production aplikasi sangat tidak di sarankan. SANGAT TIDAKKKKKKKK. JANGAN, TIDAK BOLEH. TITIK.
NGEYEL ? KAMPLENG !

caranya bagaimana, ? logikanya simple, implementasinya yang gak simple wkwkwkwk

bahan-bahan yang di butuhkan :

1. server Production Aplikasi

2. server backup

3. server data ware house

tahapannya adalah :

{SERVER PRODUCTION}

  1. melakukan backup rutin pada server aplikasi production, caranya : http://mandrivaputri.info/2019/07/membuat-auto-backup-database-server-mariadb/

hal diatas dilakukan di semua server aplikasi yang ingin ditarik databasenya. oh ya, tutorial diatas adalah server dengan database mysql. jika databasenya berbeda, postgre misalnya, lakukan backup dengan cara yang ada di gugel, gampang, asalkan mau.

{SERVER BACKUP}

2. menarik ( get ) database hasil backup di server aplikasi production ke server backup, ini pakai rsync. contohnya seperti ini :

rsync -rzhav –update -e ‘ssh -p 220’ root@192.168.10.3:/home/centos/backupdb/ /data/192.168.10.3/db/

script diatas adalah contoh. jalankan ini di server backup, jalankan di cronjob secara rutin pakai bash script. cara nya cari di google, banyak.

kemudian, mengirim file hasil tarikan di server backup ke server Data ware house.

Screenshot_71

oh iya, siapa bilang sysadmin itu gak perlu ngerti programming. sysadmin harus ngerti programming, komunikasi antar mesin, itu perlu programming, bahasa pemograman yang sering digunakan untuk mesin adalah Python dan Shell Script. diatas adalah sedikit contoh bahasa pemograman shell script dengan bash command.

soalnya saya nyari-nyari di google gak nemu, akhirnya saya bongkar kitab lama saya. hahaha

saya jabarkan code diatas :

untuk i , temukan file yang modifikasi waktunya -1 hari di dalam folder /data/192.168.10.3/db

lalu

kirim data yang di temukan tersebut ke user root yang berada di server 192.168.11.4 di folder /root/db

selesai

{SERVER DATA WARE HOUSE}

setelah server Data ware house menerima kiriman backup database server Production dari server Backup, server Data Ware House bertugas untuk melakukan import database kiriman itu ke database server di Server Data Ware House. bingung ? ngopi dulu gih~~

saya membuat sebuah bash script yang saya jalankan secara rutin. oiya, timing waktu sangat penting, antara :

-server production melakukan backup internal

-server backup menarik data dari server production

-server backup mengirim data ke server data ware house

-server data ware house melakukan import database

timing waktu harus di perhatikan agar tidak miskom. hehehe

begini scriptnya :

Screenshot_72

penjabaran :

baris pertama : melakukan penghapusan database

baris kedua : membuat database baru

baris ketiga : untuk i , temukan file yang modifikasi waktunya -1 hari di dalam folder /root/xxx

baris ke empat : maka

baris ke lima : import file database hasil backupan di folder i ke database server

baris ke enam : selesai

baris ke tujuh : masuk ke folder /root/xxx

baris ke delapan : hapus semua file di folder tsb.

sampai disini, data ware house sudah selesai di bangun, kamu bebas mengolah data di data ware house tersebut tanpa harus menyentuh database aplikasi production. lebih aman bukan ?

disini kamu bisa mengolah data dengan melakukan query, terserah, mau pakai PHP, atau pun tools pengolah data seperti tableau.

sistem ini berjalan secara automatic, data di update sesuai dengan data asli di aplikasi production dengan waktu yang di tentukan oleh cronjob.

kamu tinggal bobok manis, biarkan tim pengolah data yang menggunakan layanan ini, kamu paling tinggal troubleshoot tipis-tipis aja kalau ada masalah. 🙂

Bagikan saja, itu tidak berat

Disable akses root pada phpMyAdmin

phpmyadmin

phpmyadmin

jutaan orang tidak menyadari, bahwa root akses dapat membayakan dirinya sendiri..

melakukan disable root, baik itu login maupun akses, itu memang pedih. bagi sebagian orang yang tidak tau, hehe

metode ini disebut-sebut merenggut kenyamanan dari seorang developer, padahal, yang namanya developer, itu kan sebelum live di production, ya dibuatnya di developer. nah, di production, itu memang harus benar-benar di konfigurasi dengan aman, salah satunya dengan disable root login/akses. jadi kalau production, jangankan root akses, phpmyadmin juga pasti tidak ada, port database juga tidak ada. ya pokoknya seperti itulah, hehehe,

mudah-mudahan kalian mengerti, karena saya tidak sedang berhasrat menulis saat ini. 😀

studi kasusnya linux ubuntu 16

pertama, edit file konfigurasi :

vi /etc/phpmyadmin/config.inc.php

allowroot

allowroot

temukan kata-kata tersebut dalam file yang di edit, pastikan valuenya FALSE

jika belum ada, bisa ditambahkan sendiri

$cfg[‘Servers’][$i][‘AllowRoot’] =FALSE;

kemudian save, dan restart web servernya.

systemctl restart apache2

 

Bagikan saja, itu tidak berat

menambahkan kapasitas “diluar jangkauan” pada nextcloud

kasusnya begini, pada server nextcloud yang saya buat, kapasitas penyimpanan hanya saya sediakan sebesar 10 TeraByte, sementara ada user yang meminta kapasitas penyimpanan lebih besar daripada itu, saya juga bingung, doi mau nyimpan apa di server sampai minta sebesar itu, film india kali, hehehehe…

untuk menyelesaikan kasus tersebut. hal yang saya lakukan adalah :

  1. menambahkan kapasitas harddisk server nextcloud
  2. membuat pastisi terpisah pada server untuk user tersebut
  3. attach harddisk tersebut pada akun yang meminta.

point 1 saya selesaikan dengan membuat volume, FIY , cloud servernya menggunakan openstack, jadi saya bisa membuat volume untuk saya attach pada server nexcloudnya. tutorialnya belum ada, nanti nyusul deh.

point ke 2, saya selesaikan setelah membuat volume pada point satu, caranya :

Mempartisi harddisk linux yang lebih dari 2 TB

point ke 3, saya selesaikan dengan langkah-langkah berikut :

login nextcloud

login nextcloud

yang pertama harus login admin dulu, tanpa login admin, kamu bukan apa-apa,. hehehe

setelah login, pada admin, pilih menu settings

setting

setting

kemudian, kamu pilih menu external storages pada Administration

nextcloud

nextcloud

kemudian mulai untuk attach pada akun nextcloud. disini karena bentuknya volume yang saya atatach pada server tersebut, maka saya pilih metodenya local , memasukkan folder berikut akun mana yang di kehendaki. lalu klik centang di sebelahnya.

external storages

external storages

Bai the wayyy, selain metode local, ada juga metode-metode lain, misalnya SFTP , amazon dan lain lain.

sampai disini , sudah selesai. mudah kan.?

Bagikan saja, itu tidak berat

Mempartisi harddisk linux yang lebih dari 2 TB

halo, pada tutorial kali ini adalah cara bagaimana mempartisi harddisk linux yang lebih dari 2 TB.

kasusnya adalah saya membuat volume hdd sebesar 20 TB dan saya attach ke instance server, namun gagal mempartisi menggunakan perintah yang umum, yaitu fdisk.

setelah saya cari tau melalui om google, perintah untuk mempartisi harddisk di linux yang lebih dari 2 TB itu menggunakan perintah parted. oke, cekidot.

fdisk

fdisk

langkah awal adalah memastikan hdd sudah ada di server dan termuat dalam disk mana dengan mengetik perintah :

fdisk -l

dari gambar diatas, hdd sudak berada diserver yang termount di /dev/vdc sebesar 20 TB

parted

parted

langkah selanjutnya adalah mengetikkan perintah parted :

parted /dev/vdc

lalu masukkan perintah-perintah seperti gambar diatas sampai dengan perintah quit.

setelah quit, kini saatnya membuat file system pada harddisk dengan perintah :

mkfs.ext4 /dev/vdc

mkfs.ext4 /dev/sdb1

mkfs.ext4 /dev/vdc

sampai done.

kemudian membuat folder untuk mounting harddisk tersebut, bisa juga di folder yang telah ada, misalnya /media atau /mnt. setelah folder tersedia, berikutnya ketikkan perintah mount :

mount /dev/vdc /mnt

kemudian cek dengan perintah : df -h

Screenshot_1059

harddisk sudah termounting ke folder dan dapat digunakan.

Bagikan saja, itu tidak berat

Troubleshoot web server yang “lelah” karena melayani request

halo gaesss. catatan kali ini tentang Troubleshoot web server yang “lelah” karena melayani request.

jadi ceritanya pagi-pagi seorang client berkabar kepada saya melalui pesan singkat WA, mengabarkan kalau doi gak bisa akses aplikasi.

Screenshot_830

oke, saya cek emang bener aplikasinya tidak dapat diakses. lantas saya mulai remote servernya. pertama-tama, yang saya lihat adalah service default untuk menjalankan aplikasi ini, yaitu web server, dan database server.

Screenshot_834

dari hasil pengecekan, service masih berjalan. berarti dari sisi service aman. tahap berikutnya, saya melihat log dari service web server.

brute force attack

brute force attack

Dari error terbaca bahwa terdapat request file dalam jumlah besar dalam waktu bersamaan, terdapat limitasi dari konfigurasi default security server untuk membatasinya agar load CPU dan RAM tidak melonjak.

hmmm, sampai disini, saya curiga server ini sedang di attack, kalau memang manusia yang request, pasti tidak mungkin sebanyak ini. ini pasti robot ( script ). tahap berikutnya, saya cek firewall.

melakukan pengecekan trafik pada firewall untuk melihat request yang masuk ke server

brute force attack 2

brute force attack 2

Benar terdapat request dalam jumlah besar yang koneksinya di reset oleh server.

kemudian melakukan pengecekan threat pada firewall untuk melihat paket yang masuk ke server.

Screenshot_831

Server sedang diserang dengan metode Dictionary Attack pada port 80.

Dikarenakan kebutuhan mendesak, agak layanan kembali hidup dan server memiliki spesifikasi fisik CPU 16 core dan RAM 32 GB, saya memutuskan untuk meng-allow trafik pada server. Dengan spesifikasi diatas, server diperkirakan mampu menahan script scanner.

spek server

spek server

cara Troubleshootingnya adalah Melakukan edit pada file /etc/security/limits.conf

kemudian menambahkan pada baris akhir file tsb dengan :

ulimit -n 16384

setelah itu melakukan restart pada web server.

layanan kembali dapat digunakan.

Bagikan saja, itu tidak berat

troubleshoot No route to host setelah ganti port SSH di centOS

hmmm, ceritanya, saya baru saja ganti port SSH di linux untuk alasan keamanan. cara gantinya ada pada artikel ini

Hardening Server #1 . merubah default port akses SSH pada linux

tapi yang muncul malah error seperti ini

ssh error

ssh error

setelah saya googling, rupanya karena selinux dan firewall saya aktif. cara solvednya bukan dengan mematikan selinux maupun firewall, tapi saya menambahkan port SSH costum saya pada rules firewall dan selinux.

semanage port -a -t ssh_port_t -p tcp #PORTCOSTUM

kemudian di firewallnya juga.

firewall-cmd –permanent –add-port=#PORTCOSTUM/tcp
firewall-cmd –reload

jika muncul tulisan success, silahkan coba remote lagi servernya menggunakan port yang baru.

terima kasih telah membaca,

Bagikan saja, itu tidak berat

solusi harddisk server VPS tidak berubah setelah di tambah

Salah satu VPS saya penuh disknya, tapi harddisk server VPS tidak berubah setelah di tambah. setelah saya cari-cari solusinya, akhirnya nemu, walaupun awalnya saya riskan karena bisa saja datanya kehapus setelah di eksekusi. 😀

penampakan hdd tidak berubah

penampakan hdd tidak berubah

padahal sudah saya tambah jadi 1 TB. tapi yang terbaca si sistem masih 20 GB.

solusinya :

melepaskan disknamenya dulu dengan perintah

ant@linux:~$ growpart /dev/sda 1

setelah itu, serize sekaligus memberi diskname baru

ant@linux:~$ resize2fs /dev/vda1

sudah, beres.

penampakan disk sudah jadi 1 TB

penampakan disk sudah jadi 1 TB

sekian, terima gaji.

Bagikan saja, itu tidak berat

Volume haddisk server tidak berkurang walaupun sudah hapus file ? begini solusinya

Halo, catatan kali ini tentang Volume haddisk server tidak berkurang walaupun sudah hapus file.

volume harddisk pada salah satu server sudah mencapai 98 % , biasanya jika sudah 100% , service-service akan macet alias tidak jalan. mengatasi itu, saya melakukan hapus file yang tidak perlu.

biasanya, file-file yang saya hapus itu log, tapi bukan log terakhir ya. melainkan log-log yang sudah lama.

selain file log, ada juga file temporary yang lumayan dan selalu besar.

kedua cara itu bukan solusi yang benar sih, karena bagaimanapun, log itu sangat penting. log itu dalam bahasa manusianya adalah kenangan, jadi menurut saya kenangan itu penting. kenangan kamu penting gak? kalo gak penting ya hapus saja. 😀

oke balik ke solusi. kalau ngomongin kenangan ini bisa panjang ceritanya 😀

solusi yang baik adalah membuat server log berukuran besar, jadi log bisa kita lempar ke server log tsb. server itu hanya berisi kumpulan log log dari berbagai server maupun device seperti router, firewall dan lain-lain.

tapi karena saya belum membuat server log, makanya untuk mengatasinya saya menghapus file tersebut.

hdd 98%

hdd 98%

ini penampakan hdd yang sudah 98%. padahal saya sudah hapus beberapa file. harusnya sudah berkurang ya.

nah, perintah yang digunakan untuk melihat itu adalah lsof ( list open files ) . penjelasan tentang lsof bisa kamu cari di google yah. 😀

kalau belum terinstall, kamu bisa menginstall lsof dengan perintah ( untuk linux centos ) :

[root@kb-management ~]# yum install lsof

yum install lsof

yum install lsof

list open files

list open files

nah, ketahuan itu, jadi maksudnya disini adalah, file-file yang sudah terhapus itu rupanya masih tersimpan di memory, jadi statusnya belum benar-benar terhapus. untuk menghapusnya, kita ketik perintah kill, begini contohnya :

kill -9

kill -9

kill itu bahasa inggris, artinya membunuh kalau tidak salah. jadi maksudnya prosesnya kita bunuh secara kejam dan tanpa maap 😀

setelah di kiil, harddisk saya kembali seperti harapan saya dan semua banyak pihak. hehe

df -h

df -h

ketik df -h untuk melihatnya.

sekian celotehan dari saya yang sangat newbie dan unfaedah ini.

Bagikan saja, itu tidak berat

membuka alamat website, file malah terdownload – nginx

permasalahan umum saat pertama kali belajar web server nginx adalah membuka alamat website, file malah terdownload.

saya tidak akan tuliskan bagaimana cara menginstall web server nginx, karena sudah banyak tutorialnya, paling nanti saya cerita tentang bagaimana tunning dan securing web server nginx.

pada tulisan ini adalah fokus pada error saat pertama install nginx, ya, seperti yang saya alami. padahal install nginxnya sudah sesuai, php nya juga udah sesuai.

seperti ini tampilannya

seperti ini tampilannya

setelah saya cari tau sana sini, googling maupun tanya ke temen, akhirnya saya menemukan solusinya. untuk itu saya putuskan untuk menulis di blog ini, karena beberapa kali saya lupa saat setelah saya install web server nginx.

jadi, sebenarnya nginx tidak mengenali file PHP yang di minta oleh client itu mau di apain, jadi dia menyajikan secara default yaitu di download, masalah ini bisa diatasi dengan modifikasi di file .htaccess

location ~ \.php$ { try_files $uri =404; fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }

setelah itu jangan lupa untuk merestart service nginxnya

systemctl restart nginx

sekian cerita ini, terima kasih.

Bagikan saja, itu tidak berat