Search This Blog

Saturday 17 January 2009

My SQL Backup and Recovery

Lebih jauh berikut ini penjelasan tentang masing masing metoda backup :
1. Backup Logika vs backup Physic
Backup logika adalah menyimpan perintah logic dari struktur database dan isinya yang direpresentasikan dalam perintah SQL. Seperti CREATE DATABASE, CREATE TABLE dan INSERT DATA.

Backup fisik adalah mengambil datatabase dalam bentuk fisik, untuk database yang menggunakan Appserv secara fisik data disimpan pada folder C:\\Appserv\Mysql\data\
Pada folder tersebut terdapat file database, setiap table diciptakan dari 3 file yaitu .MYD, FRM dan .MYI, pada saat pengambilan data dilakukan dengan mengcopy folder yang didalamnya menyimpan data dari database yang kita punya. Data yang diambil adalah seluruh database dan tidak bisa terpilih, sangat berbeda dengan backup secara logika, data yang diambil bisa dipilih sesuai dengan yang diinginkan.

Berikut ini karakteristik backup secara logika :
• Backup dilakukan melalui server MySQL untuk mengambil struktur dan informasi data.
• Backup berjalan lebih lambat karena server harus mengakses informasi data dan mengirimkannya dalam bentuk logika pada file backup.
• Output bisa lebih besar dari pada bentuk fisik, misalkan data yang disimpan 5 MB dalam bentuk file sql maka pada saat recovery akan terjadi kehabisan memori karena prosesnya akan menghabiskan banyak memori untuk mengembalikan dalam bentuk semula.
• Backup dan Restore dilakukan dengan mengabaikan mesin yang digunakan.
• Backup logika tidak melibatkan banyak file hanya satu file logika yang biasanya disimpan dalam file .SQL
• Data disimpan dalam bentuk logika yang merupakan bahasa DDL dan DML.
• Backup data dilakukan saat server sudah dijalankan.
• Program untuk backup digunakan mysqldump.exe yang memanggil file dikeluarkan dalam bentuk logika file, seperti tsiswa.sql
• Untuk mengeluarkan data dalam bentuk file lain bisa digunakan perintah :
SELECT …..INTO OUTFILE

Berikut ini karakteristik backup fisik
• Backup terdiri dari salinan file dan database, ini adalah salinan dari semua bagian direktori MySQL, data dari table memori tidak disampan pada disk.
• Backup data secara fisik lebih cepat karena tidak melakukan memrosesan logika, hanya pengcopian secara fisik.
• Outputnya lebih sederhana dibandingkan backup logika.
• Sebagai tambahan dari database, backup dapat meliputi file manapun yang terdiri dari file MYi, MYD dan FRM.

2. Backup online vs backup offline
Backup online dilakukan saat server MySQL sedang berjalan sedangkan backup offline dilakukan saat server sedang dihentikan.

Metoda Backup Online mempunyai karakteristik :
• Lebih sedikit mengganggu klien lain karena dapat menggunakan mysql server tanpa harus menghentikan pekerjaan selama proses backup.
• Backup data hanya dilakukan pada data yang tidak sedang terlibat dalam transaksi.

Metoda Backup Offline mempunyai karakteristik :
• Mempengarui klien yang kurang baik sebab server tidak berjalan selama proses berlangsung.
• Backup lebih sederhana memeriksa prosedur sebab tidak ada kemungkinan gangguan campur tangan dari aktifitas klien.

3. Backup local vs backup remote
Suatu backup local dilakukan pada host yang sama pada server MySQL yang sedang running, sedangkan suatu backup remote diaktifkan dari suatu host yang berbeda.

• Mysqldump dapat menghubungkan ke server remote atau local. Karena output SQL (perintah create dan insert) local atau remote dapat diselesaikan dan degenerate dari client.
• Mysqlhotcopy melaksanakan hanya backup local, menghubungkan ke server untuk menguncinya untuk menghindari modifikasi data dan kemudian menyalin file ke local.
• Select ………into outfile dapat diaktifkan dari satu host remote dari client, tetapi field output diciptakan pada host server.
• Backup fisik secara khas diaktifkan pada server mysql sedemikian hingga server dapat diambil saat ofline, walaupun cara pengambilannya bisa dengan remote.

4. Snapshot Backup
Beberapa file system implementasi memungkinkan snapshot untuk diambil. Ini menyeddiakan salinan logika menyangkut file system pada titik yang telah ditentukan waktunya, tanpa keharusan untuk secara fisik mengcopy seluruh file system. MySQL sendiri tidak menghasilkan kemampuan untuk mengambil file system snapshot. Itu tersedia melalui aplikasi lain seperti veritas atau LVM.

5. Backup penuh vs Backup bertambah sebagian
Suatu backup penuh meliputi semua data yang diatur oleh suatu MySQL Server pada titik ditentukan pada waktunya. Suatu incremental backup terdiri dari perubahan pada data sesuai dengan log pada server.

6. Point in time recovery
Metoda lain menggunakan log binary untuk mencapai point in time recovery. Ini dilaksanakan dengan recovery yang pertama dari backup yang pertama dan merecovery seperti semula dan memodifikasi prosesnya sampai waktu yang kita tentukan.

7. Backup scheduling, compression dan encryption
Backup scheduling adalah suatu yang penting untuk otomatisasi prosedur backup. Proses ini bisa menghindari proses hacking yang dilakukan diinternet sehingga data selalu terjaga. Proses ini biasa diterapkan pada system online yang mengcover banyak data pada transaksi.

8. Table Maintenance
Integritas data dapat disepakati jika table mengalami corrupt. My SQL menyediakan program untuk memeriksa table dan perbaikan jika terdapat masalah yang ditemukan, program ini biasa diterapkan pada table MyIsam.

Backup And Recovery

Data dan database merupakan komponen terpenting dalam suatu sistem informasi manajemen, disamping tentu saja aplikasi untuk sistem informasi harus tersedia, keduanya saling tergantung. Suatu aplikasi sistem informasi manajemen tidak ada gunanya jika tidak mempunyai data yang lengkap, demikian juga sebaliknya jika punya data tetapi tidak mempunyai aplikasi yang digunakan untuk mengelolanya sehingga tidak dapat dihasilkan suatu laporan, statistik atau pun informasi.

Backup Data
Backup data merupakan salah satu kegiatan yang harus dilakukan oleh pengelola database untuk melakukan penyalinan sistem, data dan aplikasi. Backup data harus dilakukan untuk menjaga jangan sampai terjadi kerusakan sistem dari luar ataupun dari dalam sistem, yang disengaja atau pun tidak disengaja.
Proses backup data dilakukan secara rutin sesuai dengan jadwal yang telah ditentukan, jika dimisalkan pada sebuah perusahaan memiliki 1 database yang melayani 100 transaksi perhari bisa kita bayangkan berapa banyak data yang terkumpul dalam 1 bulan, dan jika terjadi kerusakan system maka data yang begitu banyak akan hilang atau akan menjadi pekerjaan input data baru yang membuang buang waktu, dengan adanya proses backup data kejadian tersebut bisa dihindari, misalnya secara rutin administrator database melakukan penyimpanan data setiap minggu sehingga jika pada minggu ketiga hari kedua terjadi crash system atau kerusakan system yang terjadi akibat gangguan system atau factor gangguan cuaca seperti gempa, banjir dan tanah longsor yang merusak data secara fisik. Maka data yang hilang hanya 2 hari, sehingga total data yang hilang adalah 200 transaksi, dari ilustrasi diatas kita bisa mengetahui betapa pentingnya proses backup data untuk daur hidup suatu system database.

Restore Data
Restore adalah proses mengembalikan backup ke dalam sistem. Restore dilakukan untuk mengembalikan keadaan sistem kembali pada keadaan semula, keadaan terakhir pada saat operasional, sebelum terjadi kerusakan sistem. Pada proses ini akan dilakukan pengembalian data baik struktur maupun isi dari database, secara teori proses ini adalah proses minimum pengembalian system tergantung dari waktu scheduling yang menjadi dasar proses backup, jika waktu scheduling dijadwalkan terlalu lama maka akan banyak data nya hilang.

Skenario kegagalan dan Resiko Backup
Kegagalan sebuah sistem bisa disebabkan oleh banyak sekali faktor, salah satu faktor bencana alam yang tidak pernah diduga dan diperkirakan sehingga skenario kegagalan sistem harus diperhitungkan dengan pembangunan sistem backup harian dengan media backup yang disimpan ditempat berbeda.
Dengan menggunakan basis data web ini semuanya bisa dilakukan dengan mudah.

Metoda backup dan recovery
Proses backup data sangatlah penting bagi keamanan data agar bisa terjaga dengan baik terutama saat terjadi crash pada sistem basis data yang disebabkan oleh kerusahakan fisik hardware ataupun karena faktor alam.
Banyak sekali cara untuk melakukan backup data, berikut ini metoda yang bisa dlakukan saat akan melakukan backup data :
a) Backup Logika vs backup Physic
b) Backup online vs backup offline
c) Backup local vs backup remote
d) backup penuh vs backput bertambah sebagian
e) Point in time recovery
f) Backup scheduling, compression dan encryption
g) Table Maintenance

View SQL Server

View adalah tabel virtual yang isinya didefinisikan oleh query database. View bukanlah sebuah tabel fisik, tetapi sekumpulan instruksi yang menghasilkan sekumpulan data.
Penggunaan view sangat bermanfaat apabila kita ingin memfokuskan diri pada informasi tertentu yang terdapat dalam basis data. Bayangkan sebuah database perusahaan yang diakses beberapa user pada departemen berbeda. Informasi yang dibutuhkan oleh setiap departemen pastilah berbeda. Dengan menggunakan view dapat menyediakan informasi yang dibutuhkan saja, baik berasal dari satu tabel atau lebih dalam database tersebut.

View mengijinkan banyak user yang berbeda melihat informasi yang sama dengan fokus yang berbeda. View mengijinkan kombinasi informasi untuk memenuhi kebutuhan user tertentu dan bahkan bisa diekspor ke aplikasi lain

Membuat View
View dapat dibuat dengan perintah Transact-SQL yaitu Create view atau dengan menggunakan program penyunting view yaitu enterprise manager.
Hal yang harus diingat pada saat membuat view :
1. View hanya bisa dibuat di dalam database yang sedang digunakan.
2. Anda tidak bisa menghubungkan trigger, aturan kedalam view.
3. View bisa menggunakan data dari view lain.
4. Kita tidak bisa membuat indeks untuk view.
5. Jika ada lebih dari satu kolom view yang memiliki nama yang sama, kolom tersebut harus diberi alias.
6. Kolom didalam view sama dengan kolom ditabel asal.

Cara untuk membuat view
1. klick kanan view
2. New View
Setelah tampil menu view kita dapat menambahkan tabel yang kita butuhkan

Procedure SQL Server

Pendahuluan
Procedure pada dasarnya adalah sebuah program yang ditulis dalam bahasa Transact-SQL yang disimpan di dalam database SQL Server. Procedure dibentuk dari perintah, variabel serta alur logik yang terdapat pada SQL. Procedure bisa dijalankan secara manual ataupun dijalankan oleh program lain.

Jenis jenis Prosedur
Prosedur bisa dibagi bagi ke dalam prosedur lokal yang disimpan di dalam server lokal, atau prosedur remote yang disimpan didalam server yang lain. Prosedur juga bisa didefiniskan oleh user atau system procedures yang merupakan bagian dari server.

Komponen komponen prosedur :
1. Parameter
Prosedur bisa menyimpan 255 parameter dan sebuah kode hasil, parameter ini digunakan untuk komunikasi antara prosedur dan dunia luar, apabila kita menjalankan prosedur maka nilai akan dikirim dalam bentuk parameter.
2. Nama dan data tipe
Parameter harus memiliki nama yang eklusif dan diawali dengan simbol @. Kita juga diharuskan menyertakan tipe data
Contoh
Create procedure test1
@kode varchar(8),
@nilai int
Pada prosedur tersebut terdapat dua parameter yaitu kode dan nilai yang harus disertakan pada saat menjalankan prosedur.
3. Arah dari paremeter
Semua parameter yang dibuat dianggap sebagai parameter input, artinya mereka menerima data dari program yang menjalankan prosedur. Dengan menambahkan kata OUTPUT ke dalam definisi parameter, prosedure bisa mengembalikan nilai dari parameter ke dalam program yang memanggilnya.

Cara membuat prosedur dengan Enterprise manager :
1. Klik kanan Strore Procedure untuk menampilkan Shorcut
2. pilih New Stored Procedure
3. Tulislah perintah prosedure kemudian check Syntax
4. Kemudian klick ok maka prosedur telah dibuat

Cara membuat prosedure dengan Query Analizer
Untuk menjalankan query analizer langkah langkahnya adalah :
1. Koneksikan dengan server
2. Pilih database yang akan digunakan
Jika kita lupa database yang digunakan maka perintah perintah SQL tidak akan menghasilkan hasil yang diinginkan.
3. Ketikkan perintah transact-SQL
Ketikkan perintah pembuatan procedure dan dieksekusi maka prosedur tersebut akan ada di Store Procedure

Prosedur yang dibuat oleh user dibagi menjadi dua yaitu :
1. Prosedur tanpa parameter
2. Prosedur dengan parameter

Trigger SQL Server

Pendahuluan

Salah satu keistimewaan dari SQL Server adalah mekanisme kontrol yang bernama database Trigger. Trigger sama seperti sekumpulan perintah Transact-SQL yang secara otomatis dijalankan apabila ada perintah INSERT, DELETE, atau UPDATE yang dijalankan di dalam tabel.
Aplikasi utama dari trigger adalah pembuatan metode validasi dan batasan akses ke dalam database, seperti misalnya perintah perintah keamanan. Ini merupakan cara lain selain dengan menggunakan aplikasi kita juga bisa melakukan kontrol langsung dengan menggunakan trigger yang diletakkan pada tabel yang bersangkutan.
Perintah yang dapat dilakukan Trigger adalah :

  1. Membuat isi dari kolom yang diambil dari kolom yang lain.
  2. Membuat mekanisme validasi yang mencakup query pada banyak tabel.
  3. Membuat log untuk mendaftarkan penggunaan tabel.
  4. Meng-update tabel tabel lain apabila ada penambahan atau perubahan lain di dalam tabel yang sedang aktif.
Komponen dari Trigger
Trigger dibentuk dari dua bagian :

  • Perintah SQL untuk mengaktifkan trigger. Perintah INSERT, DELETE dan UPDATE bisa mengaktifkan trigger. Trigger yang sama bisa diaktifkan apabila ada lebih dari satu aksi yang terjadi. Dengan kata lain trigger bisa diaktifkan apabila ada perintah insert, delete atau update dijalankan.
  • Aksi yang dijalankan oleh trigger. Trigger menjalankan blok PL/SQL.
Batasan Trigger
Dibawah ini adalah batasan dan pertimbangan di dalam menggunakan trigger :

  • Trigger bisa menjalankan perintah yang terkandung di dalam badannya atau mengaktifkan prosedur dan trigger lain untuk menjalankan tugas tertentu.
  • Setiap perintah SET bisa ditentukan di dalam trigger. Perintah ini akan tetap aktif selama ekseksi.
  • Kita tidak bisa membuat trigger untuk view. Tetapi apabila view digunakan, trigger dari table dasar biasanya akan diaktifkan.
  • Perintah Truncate Table tidak bisa dihentikan oleh trigger.
  • Trigger tidak bisa menjalankan perintah Transact-SQL yang merupakan perintah DDL.
Membuat Trigger
Trigger bisa dibuat dengan 2 cara yaitu :
1. Menggunakan Query analizer
CREATE TRIGGER [TRIGGER NAME] ON [NAMA_TABEL]
FOR INSERT, UPDATE, DELETE
AS PERINTAH
Ket :
ON menunjukan tabel atau skema dimana trigger dibuat.
FOR harus diikuti oleh jenis perintah yang akan dijalankan.
AS memulai badan trigger dengan perintah yang akan dijalankan.

2. Menggunakan Enterprise Manager
Dengan menggunakan Enterprise manager pembuatan Trigger sangatlah mudah. Berikut ini cara membuat trigger menampilkan tulisan pada saat melakukan input :
  1. klik kanan pada table
  2. pilih all task
  3. pilih manage trigger

    Tabel Inserted dan Deleted
    Apabila tabel dijalankan SQL server akan membuat dua buah tabel sementara yang hanya muncul apabila trigger sedang dijalankan, tabel yang pertama adalah tabel inserted dan yang kedua adalah tabel deleted.
    Apabila perintah INSERT atau UPDATE dijalankan, record yang dibuat atau diubah di copy ke dalam tabel inserted. Apabila perintah DELETE dijalankan, baris baris yang dihapus di copy ke dalam tabel deleted.

    Membuat Replikasi Baris dengan Trigger
    Dengan menggunakan tabel sementara dari trigger, kita bisa membuat sebuah mekanisme untuk melakukan replikasi cepat dari satu tabel ke tabel yang lainnya. Kita bisa menyisipkan, mengubah atau menghapus record pada tabel lain pada saat operasi sedang dilakukan pada tabel yang sedang aktif.
    Berikut ini contoh membuat tiga buah trigger untuk replikasi atau menggandakan operasi dari tabel Tmhs ke dalam tabel Tmhs2.

    Replikasi Insert
    Nama trigger : insertrep
    Create Trigger insertrep on tmhs
    For insert
    As
    Insert into Tmhs2
    Select * from inserted

    Pada trigger ini, kita menggunakan Insert into dan select untuk mendapatkan field field dari tabel inserted

    Replikasi Delete
    Nama trigger : delrep
    Create Trigger delrep on Tmhs
    For Delete
    As
    Delete from tmhs2
    Where tmhs2.nim in (select nim from deleted)

    Kita menggunakan perintah Delete From dan Where untuk menyaring record yang akan dihapus dengan mencarinya pada tabel deleted, yang dalam hal ini hanya mengandung record yang baru saja dihapus

    Replikasi Update
    Nama trigger : uprep
    Create Trigger uprep on Tmhs
    For Update
    As
    Update Tmhs2
    Set Nama=(Select Nama from Inserted),
    Alamat=(Select Alamat from Inserted)
    Where Tmhs2.nim in (Select nim from Inserted)

    Trigger ini mereplikasi proses update yang telah dilakukan pada tmhs, didalamnya mengupdate colom nama dan alamat dari Tmhs2 dengan isi dari colom nama dan alamat dari tabel inserted. Klause Where juga digunakan untuk mengupdate record yang kodenya ditemukan pada tabel inserted saja.
    Pada perintah replikasi update dan juga update biasa sangat dilarang untuk mengupdate primary key.