Sunday, August 8, 2010

[MySQL] mysqldump

Backup MySQL ด้วย mysqldump (a database backup program)

การ backup
shell> mysqldump [options] db_name [tables_name1][tables_name2][..]
shell> mysqldump [options] --databases db_name [DB1][DB2][..]
shell> mysqldump [options] --all-databases


ตัวอย่าง
1. Backup database ชื่อ dbname1
shell> mysqldump -u user -p password dbname1 > backup1.sql

2. Backup database ชื่อ dbname1 เฉพาะ table ที่ชื่อ tbname1
shell> mysqldump -u user -p password dbname1 -tables tbname1.sql > backup1.sql

3. Backup database ชื่อ dbname1 และ dbname2
shell> mysqldump -u user -p password --databases dbname1 dbname2 > backup12.sql

4. Backup database ทั้งหมด
shell> mysqldump -u user -p password --all-databases > all_backup.sql

5. Backup database แบบบีบอัดไฟล์ ตัวอย่างนี้ไปลอกเขามา
shell> mysqldump -u user -p password --all-database --lock-all-table | bzip2 -c > db-backup_$(date +%Y%m%d_%H%M%S).sql.bz2


ปกติเคยใช้แต่แบบที่ 1 กับ 4 ส่วนแบบที่ 2-3 จดไว้ก่อน มีโอกาสจะลองใช้


หมายเหตุ ถ้าไม่ได้ใส่ชื่อ tables หรือไม่ได้ใช้ --databases หรือ --all-databases จะเป็นการทำการ dump ทั้งหมด

การ Restore
Restore แบบนำ database เข้าทั้งก้อน หรือนำเข้าทั้งหมด (แบบที่ 1,4 แต่คิดว่า 2,3 ก็คงใช้คำสั่งเดียวกัน)
shell>mysql -u user -p password dbname1 < backup1.sql
shell>mysql -u user -p password < all_backup.sql


Ref.
http://linuxcommand.org/man_pages/mysqldump1.html
http://dev.mysql.com/doc/refman/5.0/en/mysqldump.html


เพิ่มเติมกรณีที่ Databases เป็น MyISAM ทั้งหมด สามารถใช้ mysqlhotcopy (A Database Backup Program) ได้
Ref.
http://dev.mysql.com/doc/refman/5.0/en/mysqlhotcopy.html

No comments:

Post a Comment