Anda di halaman 1dari 14

Partitioning, Backup and Recovery MySQL

PARTISI TABEL PADA MYSQL


Partitioning 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.
Partisi berlaku untuk semua data dan indeks dari tabel, kita tidak dapat melakukan partisi hanya
data dan bukan indeks, atau sebaliknya, Anda juga tidak bisa partisi hanya sebagian dari tabel.
Beberapa keuntungan dari partisi tercantum di sini:
a.

Partisi memungkinkan untuk menyimpan lebih banyak data dalam satu meja daripada

yang dapat diselenggarakan pada disk tunggal atau berkas partisi sistem.
b.

Data-data yang kehilangan kegunaannya sering dapat dengan mudah dihapus dari tabel

dipartisi dengan menjatuhkan partisi (atau partisi) yang hanya berisi data tersebut. Sebaliknya,
proses penambahan data baru dapat di beberapa kasus sangat difasilitasi dengan menambahkan
satu atau lebih partisi baru untuk menyimpan data yang khusus.
c.

Beberapa pertanyaan dapat sangat dioptimalkan dalam kebajikan fakta bahwa data

memenuhi klausa WHERE yang diberikan dapat disimpan hanya pada satu atau lebih partisi,
yang secara otomatis tidak termasuk partisi yang tersisa dari pencarian. Karena partisi dapat
diubah setelah tabel partisi telah dibuat, Anda dapat mengatur ulang data Anda untuk
meningkatkan permintaan sering yang tidak mungkin telah sering digunakan ketika skema partisi
pertama kali didirikan. Kemampuan untuk mengecualikan partisi non-pencocokan (dan dengan
demikian setiap baris mengandung) adalah sering disebut sebagai pemangkasan partisi, dan
dilaksanakan di MySQL.

Manfaat lain biasanya berhubungan dengan partisi termasuk yang di daftar berikut. Fiturfitur ini tidak saat ini diterapkan di MySQL Partisi, tetapi tinggi pada daftar prioritas.

a.

Pertanyaan yang melibatkan fungsi agregat seperti SUM() dan COUNT() dapat dengan

mudah diparalelkan. Sederhana contoh permintaan tersebut mungkin salesperson_id SELECT,


COUNT (order) sebagai order_total FROM GROUP BY penjualan salesperson_id;. Dengan
"diparalelkan," kita berarti bahwa query dapat dijalankan secara bersamaan pada setiap partisi,
dan hasil akhir yang diperoleh hanya dengan menjumlahkan hasil yang diperoleh untuk semua
partisi.
b.

Mencapai throughput yang lebih besar permintaan dalam kebajikan menyebarkan data

yang berusaha selama beberapa disk.

JENIS-JENIS PARTISI
Ada empat tipe partition yang didukung oleh MySQL, berikut adalah deskripsi dari
keempat tipe tersebut:
A.

RANGE partitioning
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:

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;.

jika kita ingin menggunakan kolom berisikan tanggal atau waktu

jika kita akan sering menjalan query yang bergantung pada kolom yang dipartisi.
Partisi Range, adalah membuat partisi berdasarkan sebuah range, misalkan berdasarkan tanggal,
sebuah nilai, contoh nya seperti di bawah ini
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
);
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.

B.

LIST partitioning
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.
Partisi List, adalah membuat partisi berdasarkan kondisi dari sebuah nilai yang
nilainya cocok dengan yang sudah di tentukan, contohnya seperti dibawah ini.
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 dengangolongan 4,5 dan 6
akan masuk ke partisi p1.

C.

HASH partitioning
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. MySQL juga
mendukung suatu varian dari hash partitioning yaitu LINEAR HASH partitioning.
Partisi Hash, adalah membuat partisi berdasarkan sebuah kolom yg sudah ditentukan
dengan pembagian segmen nya diatur oleh MySQL, contohnya seperti dibawah ini.
CREATE TABLE tbl_pegawai (
kode_pegawai VARCHAR(30),
kode_golongan INT,
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.

D.

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().
Partisi Key, adalah membuat partisi berdasarkan sebuah key dari tabel, contoh nya
seperti dibawah ini.
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 kepartisi yang mana, diatur otomatis oleh MySQ. Misalkan saya mempunyai tabel seperti
dibawah ini..

CREATE TABLE anggota (


username VARCHAR(16) NOT NULL,
namalengkap VARCHAR(25) NOT NULL,
tanggal DATE NOT NULL,
PRIMARY KEY(username)
)
PARTITION BY KEY(username)
PARTITIONS 6;
Dari table diatas kita ingin melihat apakah tabel anggota mempunyai 6 partisi, dan sebuah
data berada di partisi yang mana.
1.

Untuk melihat partition dari tabel, bisa dengan cara di bawah ini
explain partitions select * from anggota;

2.

Untuk melihat sebuah data berada di partisi yang mana, bisa dengan cara explain partitions
select * from anggota where username='50000' ; Membuat benchmark antara tabel yang tidak di
partisi, dengan tabel yang di partisi dengan KEY, dan tabel yang di partisi dengan RANGE, di
bawah ini adalah struktur tabel nya, jumlah data untuk ekperimen ini sebanyak 100.000 record.

1. Tabel Tanpa Partisi


CREATE TABLE anggota
username INT NOT NULL,
namalengkap VARCHAR(25) NOT NULL,
tanggal DATE NOT NULL,

PRIMARY KEY(username);

2. Tabel Dengan Partisi KEY


CREATE TABLE anggota2 (
username INT NOT NULL,
namalengkap VARCHAR(25) NOT NULL,
tanggal DATE NOT NULL,
PRIMARY KEY(username)
)
PARTITION BY KEY(username)
PARTITIONS 6;

3. Partisi Dengan Partisi RANGE


CREATE TABLE anggota3 (
username INT NOT NULL,
namalengkap VARCHAR(25) NOT NULL,
tanggal DATE NOT NULL,
PRIMARY KEY(username)
)
PARTITION BY RANGE(username) (
PARTITION P0 VALUES LESS THAN (20000),

PARTITION P1 VALUES LESS THAN (40000),


PARTITION P2 VALUES LESS THAN (60000),
PARTITION P3 VALUES LESS THAN (80000),
PARTITION P4 VALUES LESS THAN (100001)
)
Pengukurannya dengan query sederhana saja dan yang menjadi ukuran nya adalah waktu
yang di butuhkan dalam eksekusi query tersebut, dibawah ini adalah hasilnya:
1. TIDAK MENGGUNAKAN PARTISI
Select count(*) from anggota where username > 25000 and username < 85000

2. MENGGUNAKAN PARTISI KEY


Select count(*) from anggota2 where username > 25000 and username < 85000

3. Menggunakan Partisi RANGE


Select count(*) from anggota3 where username > 25000 and username < 85000

Ternyata yang terlama adalah tabel yang menggunkan partisi KEY (0.20 sec) dan yang
tercepat adalah tabel yang menggunakan partisi RANGE (0.07)

BACKUP DAN 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.

1.

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.

2.

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.

3.

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.

4.

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

MYSQL BACKUP DAN 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 :
a.
b.

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.

c.

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.

d.
e.

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

f.

Data disimpan dalam bentuk logika yang merupakan bahasa DDL dan DML.

g.

Backup data dilakukan saat server sudah dijalankan.

h.

Program untuk backup digunakan mysqldump.exe yang memanggil file dikeluarkan dalam
bentuk logika file, seperti tsiswa.sql

i.

Untuk mengeluarkan data dalam bentuk file lain bisa digunakan perintah : SELECT ..INTO
OUTFILE

Berikut ini karakteristik backup fisik


1.

Backup terdiri dari salinan file dan database, ini adalah salinan dari semua bagian direktori
MySQL, data dari table memori tidak disampan pada disk.

2.

Backup data secara fisik lebih cepat karena tidak melakukan memrosesan logika, hanya
pengcopian secara fisik.

3.

Outputnya lebih sederhana dibandingkan backup logika.

4.

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 :
a.

Lebih sedikit mengganggu klien lain karena dapat menggunakan mysql server tanpa harus
menghentikan pekerjaan selama proses backup.

b.

Backup data hanya dilakukan pada data yang tidak sedang terlibat dalam transaksi.
Metoda Backup Offline mempunyai karakteristik :

a.

Mempengarui klien yang kurang baik sebab server tidak berjalan selama proses berlangsung.

b.

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.
a.

Mysqldump dapat menghubungkan ke server remote atau local. Karena output SQL (perintah
create dan insert) local atau remote dapat diselesaikan dan degenerate dari client.

b.

Mysqlhotcopy melaksanakan hanya backup local, menghubungkan ke server untuk


menguncinya untuk menghindari modifikasi data dan kemudian menyalin file ke local.

c.

Select into outfile dapat diaktifkan dari satu host remote dari client, tetapi field output
diciptakan pada host server.

d.

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.

Anda mungkin juga menyukai