Categories
Development Tools DevOp

Backup dan Restore MySQL Anda

Ini adalah sebuah tutorial ringkas bagaimana untuk backup dan restore pengkalan data MySQL anda. Kemahiran ini adalah penting untuk memastikan kelangsungan aplikasi sekiranya berlaku sebarang peristiwa yang tidak diingini. Saya nak tekan di sini, apa yang kita buat adalah backup DAN restore. Sebab apa gunanya backup kalau tak boleh restore, betul tak?

MySQL mempunyai satu aplikasi command-line bernama mysqldump. Aplikasi ini adalah untuk dijalankan dalam persekitaran konsol, atau command-line. Bermakna kita perlu menaipkan arahan-arahannya di dalam MS-DOS di dalam Windows atau Terminal di dalam Linux.

Mari kita buat satu pengkalan untuk tutorial ini. Arahan-arahan berikutnya adalah membina sebuah pengkalan data dan memasukkan beberapa rekod. Anda boleh gunakan aplikasi klien MySQL yang lain sekiranya lebih selesa.

Pastikan di mana MySQL anda berada. Kita perlu berada di dalam folder \bin untuk lebih selamat. Sekiranya anda menggunakan XAMPP, besar kemungkinan ianya di dalam C:\xampp\mysql\bin. Sekiranya anda memasang MySQL secara sendiri, mungkin ianya di dalam C:\mysql\bin.

C:\>cd \mysql\bin

C:\mysql\bin>mysql -uroot -p

mysql> create database peribadi;
Query OK, 1 row affected (0.00 sec)

mysql> use peribadi;
Database changed

mysql> CREATE TABLE catatan (
     -> id INT,
     -> nota VARCHAR(100) );
Query OK, 0 rows affected (0.07 sec)

mysql> insert into catatan values (1, 'saya pergi sarapan');
Query OK, 1 row affected (0.04 sec)

mysql> insert into catatan values (2, 'memandu ke pejabat');
Query OK, 1 row affected (0.08 sec)

mysql> insert into catatan values (3, 'sambung kerja semalam');
Query OK, 1 row affected (0.02 sec)

Sekarang kita ada tiga rekod dalam table catatan. Kita boleh semak semula dengan arahan SELECT.

mysql> select * from catatan;
+------+-----------------------+
| id   | nota                  |
+------+-----------------------+
|    1 | saya pergi sarapan    |
|    2 | memandu ke pejabat    |
|    3 | sambung kerja semalam |
+------+-----------------------+
3 rows in set (0.00 sec)

Bila sudah ada pengkalan data dan juga data di dalamnya, kita boleh mula membuat backup. Keluar daripada MySQL. Dan kita boleh mula menggunakan mysqldump.

mysql> \q
Bye

Sekarang, mari kita mula membuat backup. Arahan mysqldump secara sintaksnya adalah seperti berikut.

mysqldump -u[pengguna] -p[katalaluan] [pengkalan data] > [nama fail]

Maklumat lebih terperinci sentiasa terdapat di laman MySQL. http://dev.mysql.com/doc/refman/5.1/en/mysqldump.html

Jadi kita boleh gunakan arahan sebegini untuk pengkalan data peribadi kita tadi.

C:\mysql\bin>mysqldump -uroot -p peribadi > peribadi.sql

Jadi sekarang kita patut mempunyai fail peribadi.sql. Sekiranya awak membuka fail ini di dalam Notepad atau mana-mana aplikasi text editor, ianya akan kelihatan seperti begini.

-- MySQL dump 10.13  Distrib 5.5.16, for Win32 (x86)
--
-- Host: localhost    Database: peribadi
-- ------------------------------------------------------
-- Server version       5.5.16
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
--
-- Table structure for table `catatan`
--
DROP TABLE IF EXISTS `catatan`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `catatan` (
  `id` int(11) DEFAULT NULL,
  `nota` varchar(100) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `catatan`
--
LOCK TABLES `catatan` WRITE;
/*!40000 ALTER TABLE `catatan` DISABLE KEYS */;
INSERT INTO `catatan` VALUES (1,'saya pergi sarapan'),(2,'memandu ke pejabat'),(3,'sambung kerja semalam');
/*!40000 ALTER TABLE `catatan` ENABLE KEYS */;
UNLOCK TABLES;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
-- Dump completed on 2013-07-10  7:23:58

Secara amnya, apa yang kita akan dapat adalah satu set arahan-arahan SQL di dalam sebuah fail. Menggunakan fail ini, MySQL boleh memprosesnya, membina semula table yang diperlukan bersama dengan data-datanya.

Sekarang kita perlu masuk ke dalam MySQL semula dan membina satu pengkalan data kosong. Kemudian bolehlah kita restore hasil mysqldump

C:\>cd \mysql\bin

C:\mysql\bin>mysql -uroot -p

mysql> create database peribadi2;
Query OK, 1 row affected (0.00 sec)

mysql> \q
Bye

Kita telah membina pengkalan data bernama peribadi2. Dengan pengkalan data kosong ini, kita boleh membuat aktiviti restore sekarang. Secara sintaksnya, kita perlu menulis arahan seperti ini.

mysql [pengkalan data] < [fail] -u[pengguna] -p[katalaluan]

Dengan command-line, hanya tulis arahan berikut:

C:\mysql\bin>mysql peribadi2 < peribadi.sql -uroot -p

Apabila selesai, kita boleh login semula ke MySQL dan melihat pengkalan data ini.

C:\mysql\bin>mysql -uroot -p

mysql> use peribadi2;
Database changed

mysql> select * from catatan;
+------+-----------------------+
| id   | nota                  |
+------+-----------------------+
|    1 | saya pergi sarapan    |
|    2 | memandu ke pejabat    |
|    3 | sambung kerja semalam |
+------+-----------------------+
3 rows in set (0.00 sec)

Rasanya semua sudah selesai. Mungkin ada yang merasakan kita boleh menggunakan aplikasi klien MySQL seperti phpMyAdmin atau HeidiSQL untuk semua ini. Benar. Tetapi kita juga perlu perhatikan saiz pengkalan data kita. Sekiranya ianya mencecah ratusan MB atau mungkin GB, agak berat untuk menggunakan aplikasi klien mysql lain. Menggunakan aplikasi mysql terus lebih ringan dan hampir dengan aplikasi server MySQL.

Selamat mencuba.

Leave a Reply