PARTITIONING, BACKUP AND RECOVERY
Oleh: NAMA
: KOMANG ARIASA
NIM
: 1215051067
KELAS
: III B
JURUSAN PENDIDIKAN TEKNIK INFORMATIKA FAKULTAS TEKNIK DAN KEJURUAN UNIVERSITAS PENDIDIKAN GANESHA 2013
KATA PENGANTAR
Puji syukur saya panjatkan kehadirat Ida Sang Hyang Widhi Wasa / Tuhan Yang Maha Esa karena atas asung kerta wara nugraha-Nyalah sehingga saya dapat menyelesaikan makalah yang berjudul “Partitioning, Backup and Recovery ” tepat pada waktunya. Saya sebagai penulis mengucapkan terima kasih yang sebesar-besarnya kepada semua pihak yang telah membantu dalam penyusunan makalah ini. Saya menyadari bahwa makalah ini masih jauh dari sempurna baik dari bentuk, susunan kalimat, maupun cara penulisannya. Oleh karena itu, saya sangat mengharap kritik dan saran yang membangun demi kesempurnaan makalah selanjutnya. Akhir kata semoga makalah ini dapat memberikan manfaat bagi kita semua.
Singaraja, 26 November 2013
Penyusun
i
DAFTAR ISI
Kata Pengantar ...................................................................................................
i
Daftar Isi .............................................................................................................
ii
BAB 1 PENDAHULUAN 1.1 Latar belakang ............................................................................................... 1 1.2 Rumusan Masalah ......................................................................................... 1 1.3 Tujuan ...........................................................................................................
2
BAB II PEMBAHASAN 2.1 Pengertian Partitioning ................................................................................. 3 2.2 Alasan Melakukan Partitioning ..................................................................... 3 2.3 Tipe Partitioning dan Cara Melakukan di MySQL ........................................ 3 2.4 Mengolah Partisi Basis Data ......................................................................... 8 2.5 Pengertian Backup and Recovery .................................................................. 11 2.6 Metode dan Macam – Macam Backup Data .................................................. 13 2.7 Skema Mekanisme Recovery ........................................................................ 19 2.8 Teknik dan Cara Melakukan Recovery ......................................................... 21 2.9 Server Log ..................................................................................................... 23 BAB III PENUTUP 3.1 Kesimpulan ...................................................................................................
26 27
DAFTAR PUSTAKA
ii
BAB I PENDAHULUAN
1.1 Latar Belakang Basis data adalah kumpulan informasi yang disimpan didalam komputer secara sistematik sehingga dapat diperiksa menggunakan suatu program komputer untuk memperoleh informasi dari database tersebut. Perangkat lunak yang digunakan untuk mengolah dan mengambil kueri (query) basis data disebut sistem manajemen basis data. Pemrosesan basis data sebagai perangkat andalan sangat diperlukan oleh berbagai institusi dan perusahaan. Dalam pengembangan sistem informasi diperlukan basis data sebagai media penyimpanan data. Kehadiran basis data dapat meningkatkan daya saing perusahaan tersebut. Basis data dapat mempercepat upaya pelayanan kepada pelanggan, menghasilkan informasi dengan cepat dan tepat sehingga membantu pengambilan keputusan untuk segera memutuskan suatu masalah berdasarkan informasi yang ada. Banyak aplikasi yang dibuat dengan berlandaskan pada basis data antara lain semua transaksi perbankan, aplikasi pemesanan dan penjadwalan penerbangan, proses regristasi dan pencatatan data mahasiswa pada perguruan tinggi, aplikasi pemrosesan penjualan, pembelian dan pencatatan data barang pada perusahaan dagang, pencatatan data pegawai beserta aktifitasnya termasuk operasi penggajian pada suatu perusahaan, dan sebagainya. Dengan berbagai kelebihan dan manfaat yang dimiliki dalam basis data maka basis data tidak terlepas dari adanya partitioning, backup and recovery yang sangat membantu dalam pembuatan basis data. Partitioning, backup and recovery ini sangat penting dan tidak dapat dilupakan begitu saja dalam pembuatan basis data. Berdasarkan dari hal diatas maka penulis membuat makalah mengenai partitioning, backup and recovery.
1.2 Rumusan Masalah 1.2.1 Apa itu partitioning? 1.2.2 Mengapa perlu melakukan partitioning?
1
1.2.3 Apa saja tipe partitioning dan bagaimana cara melakukannya pada MySQL? 1.2.4 Bagaimana cara mengolah partisi basis data? 1.2.5 Apa itu backup and recovery? 1.2.6 Apa saja metode dan macam – macam backup data? 1.2.7 Bagaimana skema mekanisme recovery? 1.2.8 Apa saja teknik dan bagaimana cara melakukan recovery? 1.2.9 Apa itu server log?
1.3 Tujuan 1.3.1 Untuk mengetahui tentang pertitioning. 1.3.2 Untuk mengetahui alasan perlunya melakukan partitioning. 1.3.3 Untuk mengetahui tipe partitioning dan cara melakukannya pada MySQL. 1.3.4 Untuk mengetahui cara mengolah pastisi basis data. 1.3.5 Untuk mengetahui tentang backup and recovery. 1.3.6 Untuk mengetahui metode dan macam – macam backup data. 1.3.7 Untuk mengetahui skema mekanisme recovery. 1.3.8 Untuk mengetahui teknik dan cara melakukan recovery. 1.3.9 Untuk mengetahui tentang server log.
2
BAB II PEMBAHASAN
2.1 Pengertian Partitioning Partitioning adalah sebuah teknik untuk menempatkan data - data table atau index yang berbentuk page ke dalam partisi - partisi yang terpisah dalam sebuah atau beberapa file group. Fitur table dan index partitioning mulai dikenal pada SQL Server 2005 dan hanya ada pada edisi Enterprise dan Developer. Fitur ini tidak ada pada edisi Standard dan Workgroup.
2.2 Alasan Melakukan Partitioning Pada table yang berukuran sangat besar (jumlah barisnya sangat banyak) maka partitioning membantu untuk membagi sebuah data yang besar menjadi beberapa partisi yang lebih kecil sehingga mudah dikelola. Pembuatan partisi - partisi ini memungkinkan performa yang lebih baik melalui operasi parallel. Partitioning yang dimaksud pada uraian ini dikenal secara umum sebagai horizontal partitioning, yang maksudnya adalah pembagian partisi dilakukan pada baris-baris table. Hal ini berbeda dengan vertical partitioning yang pembagiannya dilakukan pada kolom -kolom table. Partitioning juga memungkinkan kita untuk mendistribusikan data-data di suatu tabel yang sama ke filesystem yang berbeda di tempat yang berbeda pula. MySQL mendukung horizontal partitioning yang berarti row-row yang berbeda akan didistribusikan ke partisi yang berbeda.
2.3 Tipe Partitioning dan Cara Melakukan di MySQL Sebelum melakukan partisi tabel cek lebih dahulu apa databasenya suport partisi atau tidak, caranya setelah masuk ke console MySQL ketikan perintah dibawah ini : SHOW VARIABLES LIKE '%partition%'; +-------------------+-------+ | Variable_name
| Value |
+-------------------+-------+
3
| have_partitioning | YES + +-------------------+-------+ 1 row in set (0.06 sec) Ada empat tipe partition yang didukung oleh MySQL, berikut adalah deskripsi dari keempat tipe tersebut: 1. Range partitioning Range partition adalah pembagian suatu tabel ke dalam beberapa bagian berdasarkan range (rentang) nilai tertentu. Range partition ini cocok digunakan pada kolom yang memiliki distribusi nilai yang merata. Tabel yang dipartisi menggunakan range dipartisi dimana setiap partisinya memiliki row yang mengandung variabel yang berada pada rentang nilai tertentu. Rentang nilai (range) dapat kontinu tetapi tidak overlap dan didefinisikan melalui operator VALUES LESS THAN. Partisi jenis ini akan berguna pada kondisi sebagai berikut: a) Jika kita ingin menghapus data lama, terutama untuk data yang besar, kita dapat melakukan penghapusan ataupun perubahan secara efisien. contoh : DELETE FROM employees WHERE YEAR(separated) <= 1990; b) Jika kita ingin menggunakan kolom berisikan tanggal atau waktu. c) Jika kita akan sering menjalan query yang bergantung pada kolom yang dipartisi. Contoh pembuatan range partition ini adalah sebagai berikut : CREATE TABLE tbl_penjualan ( id INT NOT NULL, nama VARCHAR(30), tgl_transaksi DATE NOT NULL DEFAULT '1970-01-01' ) PARTITION BY RANGE ( YEAR(tgl_transaksi) ) ( PARTITION p0 VALUES LESS THAN (1990), PARTITION p1 VALUES LESS THAN (1995), PARTITION p2 VALUES LESS THAN (2000), PARTITION p3 VALUES LESS THAN MAXVALUE );
4
contoh di atas membuat partisi berdasarkan tahun transaksi, jadi transaksi yg dari tahun 1990 akan masuk ke partisi p0, kemudian dari tahun 1995 akan masuk ke partisi p1, kemudian yang dari tahun 2000 akan masuk ke partisi p2 dan selebihnya akan masuk ke partisi p3. 2. List partitioning Konsep pada list partition adalah data dikelompokkan berdasarkan nilai datanya. Cocok untuk kolom yang variasi nilainya tidak banyak. Misal data kota berdasarkan wilayah provinsi. List : Jember, Malang, Surabaya pada partisi Jawa Timur; Bandung, Cirebon pada partisi Jawa Barat. Jadi list partition ini berdasarkan list dari suatu segmen, sehingga data-datanya di list terlebih dahulu. Pada list partitioning, setiap partisi didefinisikan dan diklasifikasikan berdasarkan keanggotaan sebuah nilai suatu kolom terhadap suatu daftar nilai. Partisi dilakukan oleh perintah PARTITION BY LIST(expr) di mana expr adalah nama kolom yang hendak dijadikan dasar partisi dan setiap partisi didefinisikan melalui perintah VALUES IN (value_list) di mana value_list adalah daftar bilangan bulat yang dipisahkan oleh koma. Contoh pembuatan list partition ini yaitu sebagai berikut : CREATE TABLE tbl_pegawai ( kode_pegawai VARCHAR(30), kode_golongan INT, nama_lengkap VARCHAR(255) ) PARTITION BY LIST(kode_golongan) ( PARTITION p0 VALUES IN (1, 2, 3), PARTITION p1 VALUES IN (4, 5, 6) ); contoh diatas membuat partisi berdasarkan golongan pegawai, jadi pegawai dengan golongan 1, 2 dan 3 akan masuk ke partisi p0 sedangkan karyawan dengan golongan 4, 5 dan 6 akan masuk ke partisi p1. 3. Column partitioning
5
Column partition memungkinkan penggunaan beberapa kolom dalam kunci partisi. Semua kolom ini diperhitungkan baik untuk tujuan menempatkan baris dalam partisi dan untuk menentukan partisi yang harus diperiksa untuk pencocokan baris dalam pemangkasan partisi . Selain itu, kedua partisi range columns dan partisi list columns ini juga mendukung penggunaan kolom non - integer untuk menentukan rentang nilai atau anggota daftar . Berikut merupakan contoh penggunaan pastisi column : CREATE TABLE customers_3 ( first_name VARCHAR ( 25 ) , last_name VARCHAR ( 25 ) , street_1 VARCHAR ( 30 ) , street_2 VARCHAR ( 30 ) , city VARCHAR ( 15 ) , renewal DATE ) PARTITION BY RANGE COLUMNS ( renewal) ( PARTITION pWeek_1 VALUES LESS THAN ( '2010 - 02-09 ' ) , PARTITION pWeek_2 VALUES LESS THAN ( '2010 - 02-15 ' ) , PARTITION pWeek_3 VALUES LESS THAN ( '2010 - 02-22 ' ) , PARTITION pWeek_4 VALUES LESS THAN ( '2010 - 03-01 ' ) ); 4. Hash partitioning Penggunaan hash partition ini jika tidak cocok dengan RANGE ataupun LIST Partition. Partisi dengan hash dilakukan untuk menjamin pendistribusian yang adil (seragam) pada setiap data yang dimasukkan. Dengan partisi jenis ini, kita tidak perlu mendefinisikan keanggotaan setiap partisi. Kita hanya perlu menspesifikasi suatu ekspresi yang memiliki input suatu nilai kolom dan mempunyai output nomor partisi dari data tersebut. Contoh penggunaan hast partition ini yaitu sebagai berikut : CREATE TABLE tbl_pegawai ( kode_pegawai VARCHAR(30), kode_golongan INT,
6
nama_lengkap VARCHAR(255) ) PARTITION BY HASH( kode_pegawai ) PARTITIONS 4; contoh diatas membuat partisi berdasarkan kode pegawai, jadi data pegawai akan di pecah menjadi empat partisi, dan yg mengatur sebuah kode pegawai masuk ke partisi yang mana langsung di atur otomatis oleh MySQL
5. Key partitioning Partisi dengan key memiliki prinsip yang hampir sama dengan hash partitioning. Yang menjadi perbedaan adalah fungsi hashing untuk partisi jenis ini dibuat langsung oleh server MySQL dengan fungsi MD5() pada MySQL Clusters. Untuk storage engine yang lain, server telah mengembangkan fungsi yang menerapkan algoritma yang hampir sama bernama PASSWORD(). Penggunaan key partitioning ini yaitu : CREATE TABLE tbl_nama ( id INT NOT NULL PRIMARY KEY, nama_lengkap VARCHAR(255) ) PARTITION BY KEY() PARTITIONS 2; Contoh diatas membuat partisi berdasarkan primary key yang bernama id, jadi data dari tbl_nama akan di pecah menjadi 2 partisi, dan yang mengatur sebuah data masuk ke partisi yang mana, diatur otomatis oleh MySQL/ dalam rancangan basis data.
7
Dan 2 metode composite (gabungan) yaitu : 1. Composite range-list partition Konsep composite range-list partition ini menggabungkan partisi range dan list. Jika pada tabel mahasiswa, NIM dipartisi secara range, sedangkan untuk mendapatkan NIM sekian yang tinggal di wilayah provinsi Jawa Timur itu apa saja, maka menggunakan list. Jadi dipartisi kemudian di list berdasarkan kriteria tertentu. 2. Composite range-hash partition Composite range - hash partition merupakan konsep menggabungkan range partition dan hash partition. Sehingga partisi-partisi yang telah dibuat berdasarkan range/rentang akan dipartisi lagi ke dalam beberapa bagian berdasarkan hash.
2.4 Mengolah Partisi Basis Data a. Manajemen range dan list partitions Partisi range dan list sangat berkaitan dengan bagaimana menambah dan mendrop partisi yang ditangani. Mendrop partisi range dan list lebih mudah daripada menambah satu, untuk melakukan drop biasanya dilakukan dengan pernyataan ALTER TABLE dengan klausa DROP PARTITION. Berikut ini merupakan contoh cara penggunaannya mysql> CREATE TABLE tr (id INT, name VARCHAR(50),purchased DATE) -> PARTITION BY RANGE(YEAR(purchased)) ( -> PARTITION p0 VALUES LESS THAN (1990), -> PARTITION p1 VALUES LESS THAN (1995),
8
-> PARTITION p2 VALUES LESS THAN (2000), -> PARTITION p3 VALUES LESS THAN (2005) -> );
mysql> INSERT INTO tr VALUES -> (1, 'desk organiser', '2003-10-15'), -> (2, 'CD player', '1993-11-05'), -> (3, 'TV set', '1996-03-10'), -> (4, 'bookcase', '1982-01-10'), -> (5, 'exercise bike', '2004-05-09'), -> (6, 'sofa', '1987-06-05'), -> (7, 'popcorn maker', '2001-11-22'), -> (8, 'aquarium', '1992-08-04'), -> (9, 'study desk', '1984-09-16'), -> (10, 'lava lamp', '1998-12-25'); Untuk melihat barang-barang yang seharusnya dimasukkan ke p2 partisi seperti yang ditunjukkan di sini : mysql> SELECT * FROM tr -> WHERE purchased BETWEEN '1995-01-01' AND '1999-12-31'; +------+-----------+------------+ | id | name
| purchased |
+------+-----------+------------+ | 3 | TV set
| 1996-03-10 |
| 10 | lava lamp | 1998-12-25 | +------+-----------+------------+ Untuk mendrop partisi bernama p2, jalankan perintah berikut : mysql> ALTER TABLE tr DROP PARTITION p2; Untuk menambahkan partisi range atau daftar baru ke tabel dipartisi sebelumnya, gunakan ALTER TABLE ... ADD PARTITION. Untuk tabel yang dipartisi oleh RANGE, ini dapat digunakan untuk menambahkan rsnge baru ke akhir dari daftar partisi yang ada . Contoh penggunaannya adalah sebagai berikut :
9
CREATE TABLE employees ( id INT NOT NULL, fname VARCHAR(50) NOT NULL, lname VARCHAR(50) NOT NULL, hired DATE NOT NULL ) PARTITION BY RANGE( YEAR(hired) ) ( PARTITION p1 VALUES LESS THAN (1991), PARTITION p2 VALUES LESS THAN (1996), PARTITION p3 VALUES LESS THAN (2001), PARTITION p4 VALUES LESS THAN (2005) ); ALTER TABLE employees ADD PARTITION ( PARTITION p5 VALUES LESS THAN (2010), PARTITION p6 VALUES LESS THAN MAXVALUE ); b. Manajemen Hash Partition dan Key Partition Tabel yang dipartisi oleh hash partition dan key partition sangat mirip satu sama lain dan sangat berkaitan dengan membuat perubahan dalam setup partisi. Berikut ini merupakan cara menajemen hash partition dan key partition : Misalkan kita memiliki tabel yang berisi data tentang klien, yang terbagi menjadi dua belas partisi. Tabel klien didefinisikan sebagai ditunjukkan di sini : CREATE TABLE clients ( id INT, fname VARCHAR(30), lname VARCHAR(30), signed DATE ) PARTITION BY HASH( MONTH(signed) ) PARTITIONS 12;
10
Untuk mengurangi jumlah partisi 12 sampai 8, jalankan perintah ALTER TABLE berikut : mysql> ALTER TABLE clients COALESCE PARTITION 4; Untuk meningkatkan jumlah partisi untuk tabel klien dari 12 sampai 18 menggunakan ALTER TABLE ... ADD PARTITION seperti yang ditunjukkan di sini : ALTER TABLE klien ADD PARTITION PARTISI 6 ;
2.5 Pengertian Backup and Recovery Sebagai seorang DBA tentunya kita tidak berharap data yang tersimpan di dalam database hilang karena suatu sebab misalnya hard disk bad sector, server hilang, kebakaran atau yang lain. Untuk mencegah kehilangan data, tentunya kita harus melakukan backup database secara berkala, sehingga jika terjadi kejadian seperti di atas kita bisa langsung mengembalikan data sesuai dengan backup database terakhir. Pengertian backup merupakan suatu kegiatan untuk menyimpan database dalam bentuk datafile, control file dan archieve log ke dalam media penyimpanan lain seperti disk atau tape. Backup data adalah memindahkan atau menyalin kumpulan informasi (data) yang tersimpan di dalam hardisk komputer
yang
biasanya
dilakukan
dari
satu
lokasi/perangkat
ke
lokasi/perangkat lain. Fungsinya yaitu kita masih mempunyai cadangan data dari data yang hilang/rusak/terhapus, baik yang disebabkan oleh kesalahan kita sendiri atau faktor lain di luar kemampuan kita, seperti: terkena virus, file rusak (tidak bisa dibuka), perangkat komputer error/bermasalah, mati listrik, bencana, dan lain sebagainya. Dengan begitu cadangan data yang sudah kita simpan tersebut dapat kita gunakan kembali sebagai pengganti data yang telah hilang/rusak/terhapus tadi. Fungsi back up data lebih mengacu pada faktor keamanan dan kenyamanan dalam menggunakan komputer. Sedangkan
pengertian
recovery merupakan
suatu
proses
untuk
mengupdate database dengan file backup yang telah disimpan terakhir kalinya. Kegunaan dari proses ini adalah kemudahan serta keefektifan proses input data dari data backup-an. Misalnya saat sistem operasi komputer kita sudah normal
11
dan MySQL juga sudah stabil maka kita tidak perlu lama-lama lagi memasukan data lama. Kita hanya perlu merecovery data yang sebelumnya yang telah di back-up. Ada dua cara untuk melakukan Backup dan Recovery yaitu : 1. Physical Backup Contohnya : RMAN Backup dan Restore 2. Logical Backup Contohnya : Export dan Import, Flashback Strategi Backup Terdapat beberapa pendekatan yang dapat digunakan dalam melakukan backup data. Metode yang digunakan juga bervariasi tergantung pada data yang digunakan. Tipe-tipe backup yang umum digunakan adalah sebagai berikut :
Full Backup. Umum digunakan untuk menyalin semua data yang berada pada media data asal.
Differential Backup. Digunakan untuk melakukan penyalinan terhadap data yang mengalami perubahan berdasarkan kejadian khusus seperti tanggal atau even khusus lainnya.
Incremental. Digunakan untuk melakukan penyalinan terhadap data yang yang mengalami berubahan. Pembuatan data backup juga dapat dilakukan dengan membagi data
berdasarkan dua kategori tipe data berikut:
System backup. Digunakan untuk melakukan backup terhadap sistem yang ada.
Application backup. Digunakan untuk melakukan backup terhadap data yang dibutuhkan.
Tahap Perencanakan & Persiapkan Backup a. Menentukan waktu backup Backup merupakan program rutin dan melihat kapan waktu yang tepat untuk proses backup. Jika database itu cukup besar dan sering berubah secara konstan setiap hari, maka sebaiknya direncanakan agar proses backup terjadi setiap hari sehingga data tersebut dapat tersimpan dengan baik. Namun, jika database itu tidak sering berubah setiap hari
12
tidak perlu dilakukan backup setiap hari, bisa seminggu atau dua minggu sekali proses backup baru dilakukan. b. Menamakan file backup Seharusnya kita menamakan file backup secara teratur dan selalu memasukkan tanggal dimana backup terakhir dibuat. Misalnya nama database bernama blogDB dan dibackup pada tanggal 21 Juni 2009, sebaiknya diberikan nama file backup dengan nama blogdb-21062009.sql. Untuk penamaan ini tergantung dari administrator itu sendiri dan harus diperhatikan bahwa penamaan file backup tersebut juga sangat penting apalagi jika sering melakukan backup secara regular. c. Menyimpan file backup Membuat kopi dari file backup dan menyimpan file tersebut ke komputer lain atau ke penyimpan data yang lain seperti CD atau DVD. 2.6 Metode dan Macam – Macam Backup data Metoda backup dan recovery 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 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
13
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.
14
b) 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.
c) 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.
d) Backup penuh vs backput bertambah sebagian
15
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. e) 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. f) 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. g) 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. Macam – Macam Backup dan Penggunaannya Secara umum terdapat 3 macam cara backup yaitu sebagai berikut : a. Dump : Menduplikat seluruh record database yang dioperasikan pada database backup b. Transaction Log : Menyimpan transaksi-transaksi yang merubah database. c. Image Log : Menyimpan record-record database sesudah / sebelum perubahan pada database. Sedangkan macam – macam backup terdiri dari : a. Backup satu database Proses backup 1 database ini akan menghasilkan backup yang seluruh object yang ada di dalam database yang ditunjuk saja dan nama database
16
tidak ikut terbackup. Isi backup ini adalah Table, Data Table,
View,
Trigger, function / procedure. Untuk membackup 1 database bisa menggunakan pemanggilan nama database. Untuk membackup seluruh database maka format yang digunakan adalah : # mysqldump -u -p [nama database] > [nama file].sql Misal ingin membackup database blogDB dengan password ‘bahagia’ dari database MySQL dan jika sudah dibackup maka namanya adalah blogdb.sql, maka format diatas menjadi : # mysqldump -u root -pbahagia blogDB > blogdb.sql b. Backup tabel database Untuk membackup satu atau lebih tabel yang ada dalam suatu database maka formatnya adalah sebagai berikut : # mysqldump -u -p [nama database] [table1] [table2] … > [nama file].sql Misal kita ingin membackup dua tabel coba1 dab coba2 dalam database blogDB, maka format perintah menjadi : # mysqldump -u root -pbahagia blogDB coba1 coba2 > duabuahtabel.sql c. Backup dua atau lebih database Jika ingin membackup dua atau lebih database menjadi maka formatnya menjadi : # mysqldump -u -p –database [database1] [database2] … > [nama file].sql Membackup database blogDB dan database mahasiswa digabung menjadi satu dengan nama dua_database.sql, maka formatnya menjadi : # mysqldump -u root -pbahagia –database blogDB mahasiswa > dua_database.sql d. Backup seluruh database Jika ingin membackup seluruh database maka formatnya sebagai berikut : # mysqldump -u -p –all-databases > [nama file].sql e. Backup Kompres data
17
Jika ingin membackup hanya data dengan format insert kemudian dikompresi # mysqldump -u root -p -t –skip-opt –extended-insert=false [database] | bzip2 -c > `date+%Y%m%d%H%M`_[nama_file].sql.bz2 f. Backup struktur data Jika ingin membackup struktur databasenya saja tanpa mengikut sertakan data recordnya maka formatnya menjadi : # mysqldump -u -p –no-data [database] > [nama file].sql Jika lebih dari satu database formatnya menjadi : # mysqldump-u -p –no-data –database [database1][database2] > [nama file].sql Jika mau membackup hanya data recordnya saja, maka formatnya : # mysqldump -u -p –no-create-info [database] > [nama file].sql g. Backup Kompress database Jika ingin mengkompress hasil backup database, maka formatnya : # mysqldump -u -p [database] | bzip2 -c > [namafile].sql.bz2 # mysqldump -u -p [database] | gzip -c > [namafile].sql.gz Misalnya ingin membackup database blogDB dan dikompress menggunakan bzip2 atau gzip, maka formatnya : # mysqldump -u root -pbahagia blogDB | bzip2 -c > blogdb.sql.bz2 atau # mysqldump -u root -pbahagia blogDB | gzip -c > blogdb.sql.gz Jika ingin variasi backup seperti backup seluruh database, beberapa tabel maka hanya diubah sebelum tanda | dengan mengikuti pola format sebelumnya. Format untuk membackup seluruh database dengan hasil sudah dikompress. # mysqldump -u root -pbahagia –all-databases | bzip2 -c > all_database.sql.bz2 atau # mysqldump -u root -pbahagia –all-databases | gzip -c > all_database.sql.gz h. Script untuk backup
18
Untuk mempermudah backup bisa menggunakan script dibawah ini : #!/bin/sh mysqldump –all-databases | gzip -c > /home/dado/all_database-`date I`.sql.gz
2.7 Skema Mekanisme Recovery Recovery merupakan suatu proses untuk mengupdate database dengan file backup yang telah disimpan terakhir kalinya. Mekanisme recovery memiliki dua bagian utama, yaitu: 1. Aksi-aksi yang ditempuh selama transaksi berjalan normal untuk menjamin adanya informasi yang memadai yang kelak dibutuhkan oleh mekanisme recovery. 2. Aksi-aksi yang ditempuh setelah terjadinya kerusakan/ kegagalan sistem yang dilakukan untuk memulihkan isi basis data ke suatu keadaan yang menjamin konsistensi basis data, keatomikan, dan ketahanan transaksi. Dengan asumsi ruang disk yang dialokasikan untuk basis data tidak mengalami kerusakan, maka ada 3 pilihan skema untuk menjalankan mekanisme recovery secara otomatis begitu kerusakan atau kegagalan sistem telah terjadi. Ketiga skema pilihan itu adalah : 1. File Log dengan Penundaan Pengubahan (Incremental Log With Defered Update). 2. File Log dengan Pengubahan langsung (Incremental Log With Immediate Updates). 3. Page Bayangan (Shadow Paging), yang memerlukan akses ke disk yang lebih sedikit. Recovery untuk Transaksi Konkuren a. Interaksi dengan pengendalian konkurensi Skema recovery ini akan banyak tergantung pada skema pengendalian konkurensi yang digunakan. Untuk menjalankan proses roll back terhadap transaksi yang gagal/ batal, kita harus membatalkan perubahan yang telah dilakukan oleh transaksi tersebut.
19
Jika sebuah transaksi T telah mengubah sebuah item data Q, tidak boleh ada transaksi lain yang boleh mengubah item data yang sama hingga T telah di-commit ataupun di-roll back. Kita dapat menjamin hal ini dengan memanfaatkan Loking Protokol Dua Fase yang ketat, yang menerapkan penguncian dengan mode exclusive hingga akhir transaksi. b. Restart recovery Pada saat sistem melakukan pemulihan data, ia membentuk dua buah daftar. Yang pertama adalah daftar undo (undo-list) yang terdiri atas transaksi - transaksi yang harus dikenai operasi undo dan daftar redo (redo-list) yang berisi transaksi - transaksi yang harus dikenai operasi redo. Kedua daftar ini dibentuk untuk proses recovery sebagai berikut. Mula-mula kedua daftar tersebut kosong. Kita melakukan penelusuran mundur terhadap file log, memeriksa record hingga ditemukannya
:
Untuk setiap record yang ditemukan dalam bentuk <Ti commit>, kita tambahkan Ti dalam redo-list.
Untuk setiap record yang ditemukan dalam bentuk <Ti start>, jika Ti tidak ada dalam redo-list, kita tambahkan Ti dalam undo-list. Pada saat semua record dimaksud dalam file log telah diperiksa, kita
periksa isi list L dalam record checkpoint. Untuk setiap transaksi Ti dalam L, jika Ti tidak ada dalam redo-list maka kita tambahkan Ti dalam undo-list. Begitu kedua daftar tersebut telah terbentuk, maka proses recovery akan dilakukan dengan langkah - langkah berikut ini: 1. Ulangi penelusuran mundur file log dari record terakhir, dan jalankan operasi undo untuk setiap record dalam file logyang memiliki transaksi Ti pada undo-list. Record-record transaksi dalam redo-list diabaikan dalam fase ini. Penelusuran dihentikan ketika record <Ti start> ditemukan untuk setiap transaksi Ti dalam undo-list.
20
2. Carilah record terakhir dalam file log. Perhatikan bahwa langkah ini dapat melibatkan penelusuran maju, jika record checkpoint telah dilewati dalam langkah 1. 3. Lakukan penelusuran maju pada file log dari record terakhir dan jalankan operasi redo untuk setiap record dalam file log yang dimiliki transaksi Ti yang da di dalam redo-list. Pada fase ini, abaikan semua record dari transaksi yang ada dalam undolist. Setelah semua transaksi dalam undo-list telah dikenai operasi undo, selanjutnya transaksi - transaksi dalam redo list juga dikenai dengan operasi redo.
2.8 Teknik dan Cara Melakukan Recovery Meski bisa dikatakan database MySQL jarang sekali mengalami kerusakan, namun segala kemungkinan bisa terjadi seperti karena konflik atau yang lainnya. Teknik recovery terdapat tiga yaitu : 1. Defered upate / perubahan yang ditunda : Perubahan pada basis data tidak akan berlangsung sampai transaksi ada pada poin disetujui (COMMIT). Jika terjadi kegagalan maka tidak akan terjadi perubahan, tetapi diperlukan operasi redo untuk mencegah akibat dari kegagalan tersebut. 2. Immediate Upadte / perubahan langsung : Perubahan pada basis data akan segera tanpa harus menunggu sebuah transaksi tersebut disetujui. Jika terjadi kegagalan diperlukan operasi UNDO untuk melihat apakah ada transaksi yang telah disetujui sebelum terjadi kegagalan. 3. Shadow Paging : Menggunakan page bayangan dimana pada prosesnya terdiri dari 2 tabel yang sama, yang satu menjadi tabel transaksi dan yang lain digunakan sebagai cadangan. Ketika transaksi mulai berlangsung kedua tabel ini sama dan selama berlangsung tabel transaksi yang menyimpan semua perubahan ke database, tabel bayangan akan digunakan jika terjadi
21
kesalahan. Keuntungannya adalah tidak membutuhkan REDO atau UNDO, kelemahannya membuat terjadinya fragmentasi. Sedangkan terdapat 6 cara recovery yang terdiri dari : a. Dual recording b. Periodic dump c. Periodic dump dan transaction log d. Periodic dump dan logging after image e. Periodic dump dan logging before image dan transaction log f. Residual dump. Cara melakukan recovery pada oracle yaitu sebagai berikut : Automatic Recovery Proses recovery yang dilakukan secara otomatis. Langkah-langkahnya yaitu Buka Recovery Manager Kemudian klik push button Automatic Recovery. Jika database tidak aktif dan ingin menampilkan dan memodifikasi nama file struktur database, maka pilih tombol File. Jika database tidak aktif dan ingin menampilkan dan mengubah parameter parameter database yang akan berefek mulai dari database dibuka sampai proses recovery. Pilih tombol Recovery. Memulihkan Database dengan Full Backup Untuk melakukan proses recovery database ikuti langkah - langkah berikut ini : Buka Recovery Manager Pilih push button Restore From Full Database Backup Pilih tombol File Pilih tombol Parameters Pilih Tombol Recovery Pilih Recover. Jika memilih Restore From Tape, pilih tape Device dari kontak daftar drop down. Jika memilih Restore From Disk, pilih direktori untuk memilih file yang akan pulihkan Pilih backup. Pilih klausa Pilih tombol OK. Memulihkan File Kontrol File kontrol merupakan bagian yang vital dari sebuah database. Untuk memulihkan file kontrol ini bisa mengikuti langkah - langkah berikut ini : Buka Recovery Manager Pilih push button Restore Control File Pilih tombol File atau pilih tombol Parameters klik tombol OK Pilih Recover dari kotak dialog Recovery Manager Restore From Tape
22
Restore From Disk Directory Directory Create A New Control File. Backup Pilih Restore From Tape, Restore From Disk, atau Create a New Control File Pilih file backup yang akan restore dari kotak daftar Backup. Jika sudah, pilih tombl OK. Menampilkan & Memodifikasi File Database Untuk Proses Recovery Untuk menampilkan dan memodifikasi nama file struktur database, ikuti langkah - langkah berikut ini. Buka Recovery Manager Klik atau pilih tombol Files, push button Data Files dan file - file isinya ditampilkan dalam kotak File List Gunakan kotak nama file, tombol Add, dan tombol Remove untuk mendefinisikan daftar file data dalam database Pilih radio button Log Files Gunakan kotak nama file, tombol Add, dan tombol Remove untuk mendefinisikan file-file log dalam database Pilih radio button Control File Gunakan kotak nama file, tombol Add, dan tombol Remove untuk mendefinisikan file-file kontrol database Jika sudah selesai, pilih tombol OK sehingga akan masuk kembali ke kotak dialog Recovery Manager.
2.9 Server Log MySQL mempunyai mekanisme untuk mengetahui apa saja yang terjadi pada saat MySQL berjalan. Pada saat terjadi kesalahan atau terjadi masalah saat menjalankan atau menghentikan MySQL, atau saat terjadi penambahan atau pengubahan atau penghapusan data pada tabel, atau pada saat menjalankan query terhadap suatu tabel. Semua kejadian itu bisa kita ketahui dan disimpan pada suatu file log. Dari file log ini bisa kita ketahui apa saja yang terjadi pada MySQL. Pada log tertentu juga bisa menyimpan data pada tabel. Tipe-tipe log yang ada pada MySQL yaitu :
Error Log. Error log pada MySQL berisi kesalahan yang terjadi pada saat MySQL dijalankan atau dihentikan. Kesalahan yang dimaksud adalah kesalahan yang sifatnya kritis, misalnya jika terjadi masalah pada tabel yang memerlukan tindakan perbaikan pada tabel tersebut, MySQL akan menulis pesan ke log. MySQL tidak akan menulis pesan ke log untuk
23
kesalahan seperti duplikasi data pada suatu tabel karena primary key, dan lain-lain. Menentukan file log ini dapat dilakukan dengan menambahkan entry log-error pada file konfigurasi MySQL (file “my.ini”) pada bagian mysql. Dari sini dapat kita tentukan nama file log dan direktori tempat penyimpanan file log. Default disimpan pada direktori data MySQL. [mysqld] log-error="C:/Program Files/MySQL/MySQL 5.1/errlog.err"
Bisa juga dengan menambahkan parameter --log-error[=file_name] pada saat menjalankan MySQL. Log file akan mencatat semua proses yang terjadi termasuk yang menghasilkan error. Contoh penggunaannya bisa dilakukan dengan : Log-error=<path/filename>
General Query Log. General Query Log pada MySQL berisi semua aktivitas pada saat client melakukan koneksi ke server atau pada waktu koneksi terputus dan query dari client yang dikirim ke server. Fasilitas ini sangat berguna untuk merekam segala aktivitas tiap client yang terhubung ke server. Bisa juga untuk mengetahui kesalahan yang mungkin terjadi dari perintah atau query yang dikirim client. Sama seperti Slow Query Log, sebelum MySQL 5.1.6 tujuan penulisan log selalu ke file. Mulai MySQL 5.1.6 terdapat pilihan untuk menulis log ke file atau tabel atau keduanya. Tujuan penulisan log ditentukan dengan pilihan --log-output yang bisa berisi nilai TABLE, FILE atau NONE (tidak menulis log). Jika tujuan penulisan ke tabel, maka tabel tujuan adalah mysql.general_log. Misalnya: --log-output=TABLE --log-output=FILE --log-output=TABLE,FILE Sebelum MySQL 5.1.6, untuk mengaktifkan General Query Log dengan menggunakan pilihan --log[=file_name]. Mulai MySQL 5.1.6 gunakan pilihan --general_log yang bisa memiliki nilai 0 (tidak aktif) atau 1 (aktif). Sedangkan pilihan --general_log_file[=file_name] digunakan untuk menentukan direktori tempat file log, jika tujuan 24
penyimpanan log pada file. Mulai MySQL 5.1.12 kita dapat mengaktifkan atau non aktifkan General Query Log pada saat MySQL sedang berjalan. Cara ini bisa digunakan misalnya untuk backup file log. Setelah General Query Log non aktif, ganti nama file log dan buat file log baru, kemudian aktifkan lagi General Query Log. Set ‘ON’ untuk mengaktifkan atau ‘OFF’ untuk non aktif. SET GLOBAL general_log = 'OFF'; SET GLOBAL general_log = 'ON';
Bisa juga mengaktifkan General Query Log dengan melakukan pengaturan file konfigurasi MySQL (my.ini). [mysqld] general-log=1 log-output=FILE general-log-file="C:/Program Files/MySQL/MySQL 5.1/log.log"
Tidak seperti error logging yang secara otomatis diterapkan, kita harus memberi izin yntuk menerapkan query logging dan binary logging.
Binary Log. Informasi yang ditulis ke log adalah saat menjalankan query dari client yang mengubah data. Juga digunakan untuk replikasi.
Slow Query Log. Informasi yang ditulis ke log adalah saat menjalankan query selama selang waktu tertentu. Secara default semua file log dibuat pada direktori data MySQL. Kita
dapat memaksa MySQL untuk menutup dan membuka lagi file log (atau berganti ke file log baru) dengan melakukan “flush” terhadap log. Caranya adalah dengan menjalankan perintah FLUSH LOGS atau menjalankan salah satu dari perintah - perintah berikut dari command prompt. mysqladmin flush-logs mysqladmin refresh Pada General Query Log dan Slow Query Log, log dapat disimpan pada tabel (mulai MySQL 5.1.6). Untuk General Query Log disimpan pada tabel mysql.general_log, dan untuk Slow Query Log disimpan pada tabel mysql.slow_log. Tiap file log ditentukan dengan melakukan pengaturan pada file konfigurasi MySQL. Pada sistem operasi Windows, file yang dimaksud adalah file “my.ini” dan biasanya terletak pada direktori instalasi MySQL. 25
BAB III KESIMPULAN
3.1 Kesimpulan 1.
Partitioning adalah sebuah teknik untuk menempatkan data - data table atau index yang berbentuk page ke dalam partisi - partisi yang terpisah di dalam sebuah atau beberapa filegroup. Partitioning memungkinkan kita untuk mendistribusikan data - data di suatu tabel yang sama ke file system yang berbeda di tempat yang berbeda pula.
2.
Backup merupakan suatu kegiatan untuk menyimpan database dalam bentuk datafile, control file dan archieve log ke dalam media penyimpanan lain seperti disk atau tape. Ada dua cara untuk melakukan Backup dan Recovery yaitu Physical Backup dan Logical Backup.
3.
Secara umum terdapat 3 macam cara backup yaitu Dump, Transaction Log, Image Log.
4.
Recovery merupakan suatu proses untuk mengupdate database dengan file Backup yang telah disimpan terakhir kalinya.
5.
Teknik recovery terdapat tiga yaitu : Defered upate / perubahan yang ditunda, Immediate Upadte / perubahan langsung, Shadow Paging. Sedangkan terdapat 6 cara recovery yang terdiri dari : Dual recording, Periodic dump, Periodic dump dan transaction log, Periodic dump dan logging after image, Periodic dump dan logging before image dan transaction log, Residual dump.
6.
MySQL mempunyai mekanisme untuk mengetahui apa saja yang terjadi pada saat MySQL berjalan. Pada saat terjadi kesalahan atau terjadi masalah saat menjalankan atau menghentikan MySQL, atau saat terjadi penambahan atau pengubahan atau penghapusan data pada tabel, atau pada saat menjalankan query terhadap suatu tabel. Tipe-tipe log yang ada pada MySQL yaitu : Error Log, General Query Log, Binary Log, Slow Query Log.
26
DAFTAR PUSTAKA
Mudafiq.
2010,
Partisi
Indeks
dan
table
database
Oracle.
http://mudafiq.student.umm.ac.id. Diakses pada tanggal 26 November 2013. Dendie. 2009, MySQL Partition Table. http://dendieisme.blogspot.com. Diakses pada tangggal 26 November 2013. Yoyok. 2010, Backup Recovery MySQL. http://sugengsuprayogi.wordpress.com. Diakses pada tanggal 26 November 2013. Rudy. 2009, Backup Recovery MySQL. http://rudycs.blogspot.com. Diakses pada tanggal 26 November 2013.
27