mysqldump komutu veritabanının yedeğini almak için ve bu yedekleri geri yüklemek için kullanılan bir komuttur. Veritabanının yedeğini almak derken, yapabileceğimiz işlemler kısıtlı değildir. Tek bir veritabanının yedeğini almak, birden çok veritabanının yedeğini almak, tüm veritabanlarının yedeğini almak, tek bir veritabanından seçtiğimiz tabloların yedeğini almak gibi işlemleri yapabiliriz. mysqldump komutunun kullanımı aşağıdaki 3 şekilde özetlenebilir.
mysqldump [OPTIONS] database [tables] mysqldump [OPTIONS] --databases [OPTIONS] DB1 mysqldump [OPTIONS] --all-databases [OPTIONS]
Parametrelerinden bahsedecek olursak;
--add-drop-database(--add-drop-database
) ve
--add-drop-table(--add-drop-table
) parametreleri, alacağımız yedeğe
CREATE DATABASE ve
DROP DATABASE ekler. Böylece yedeği geri yüklerken, eğer tablo varsa, olası bi hatadan kurtulmuş oluruz.
--default-character-set=utf8(--default-character-set=utf8
) parametresi ile (dikkat: default kelimesinden önce 2 adet çizgi var, diğerleri tek çizgi)(utf8 yerine başka bir seçenek de yazabiliriz) dil seçeneğini belirleyebiliriz. Böylece geri yüklemelerde türkçe karakter problemi yaşamanın önüne geçeriz.
--add-locks(--add-locks
) parametresi ile yedekleme sırasında tabloları kilitleyebiliriz. Böylece yedeklerken tablolara yeni veri yüklenemez, böylece yedekleme işlemimizin süresi kısalabilir. Örnek vererek açıklamaya çalışayım. 3 adet veritabanımız, bunların içinde de 2'şer tane tablomuz olduğunu varsayalım. veritabanı : Log tabloları : mysql_error, php_error veritabanı : Users tablolaro : admin, customer veritabanı : Blog tabloları : options, comments Tek bir veritabanının yedeğini alalım;
mysqldump -u root -p Log > log.sql
Log veritabanındaki tüm tabloları log.sql olarak yedekledik. log.sql'in başına dosya yolu da ekleyebiliriz. Örneğin A:/test/yedekler/log.sql gibi bir yere de yedekleyebiliriz. Dil seçeneğini nasıl kullanacağımıza bakalım;
mysqldump -u root -p --default-character-set=utf8 Log > log.sql
--add-drop-database kullanarak yedekleyelim bir de
mysqldump -u root -p --add-drop-database --default-character-set=utf8 Log > log.sql
Tek veritabanından tek bir tabloyu yedekleyelim;
mysqldump -u root -p Users customer > usersCustomer.sql
Birden çok veritabanının yedeğini alalım;
mysqldump -u root -p --databases Users Blog > usersAndBlog.sql
Tüm veritabanlarının yedeğini alalım;
mysqldump -u root -p --all-databases > allMysqlDb.sql
Aldığımız yedekleri geri yüklemek istediğimiz zaman da yapmamız gereken çok basit;
mysqldump -u root -p {veritabanı adı} < {yedek} mysqldump -u root -p Log2 < log.sql
Devamı için :
mysqldump kullanımı