Mysql de bir database'in yedeklenmesi
Bu yazıda MySql database'nizin içindeki table ve dataları MySql ile birlikte gelen uygulamalardan mysqldump ile nasıl yedekleyebileceğiniz anlatılacaktır.
2.Detaylar
MySql günümüzde çoğu yerde kullanılan bir database haline geldi. Hatta windows ortamında bile kullanımı yaygınlaşıyor. Performansı ve dağıtım ilkesi (free) elbette buna en büyük sebep. Eğer hala kullanmadıysanız [url=http://www.mysql.com/]http://www.mysql.com/[/url] işletim sisteminize uygun olan sürümünü (birde release olursa daha iyi olur) indirip kurabilirsiniz. Ve bu durumda sanırım bu yazı size göre değil, ama haberdar olmak açısından okumaya devam edebilrsiniz.
Bir database'iniz olduğunu ve içinde çok sayıda table'ın ve datalarının bulunduğunu hatta dataların neredeyse hergün yenilendiğini düşünün. Birde bir gün kazaara yada başka bir şekilde bu database'inize bişeyler olduğunu düşünün ! Başınıza ne işler açılabileceğinizi sanırım kestirebildiniz. Zaten bu yazıyı ikinci kısmı yaşamamanız için yazıyorum.
MySql'inizin kurulduğu sistemde, onu kurduğunuz yerde; standart kurduysanız /usr/local/bin altında, yada kendi istediğiniz herhangi bir yere kurduysanız ../istediginiz_yer/bin altında mysqldump adlı bir komut bulunmaktadır. Kesin vardır eğer başına bir iş gelmediyse...
Sizinde herhangi bir amaçla kullandığınız bir database'niz var ve bir sürü table'ı ve data'ları var heran yeni datalar gelebiliyor, gelin başınıza gereksiz işler açmamak için bunları yedekleyelim. Ne demiş atalarımız "Sakla samanı gelir zamanı."; gerçi biz samanın yedeğini alıyoruz ama olsun, o zamanlar yedek alma derdi yoktu sanırım. Evet şimdi samanımız şöyle olsun:
Database İsmi, asdf_db olsun ve içinde bilmem_ne table'ı, table'inda id, metin, dev, reg1, reg2 ve ht field'ları olsun. Ve bunlara inanılmaz data geliyor vaybee ne iş.
Önce bir görelem bakalım database'miz nasıl görünyor.
Databse kullanıcı isim ve şifremiz; admin74, 4353234 .
[root!tty2] -> [~] # mysql -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 278 to server version: 3.22.32
Type 'help' for help.
mysql>use asdf_db;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> show tables;
+----------------------+
| Tables in asdf_db |
+----------------------+
| bilmem_ne |
| bilmem_ne 1 |
| bilmem_ne2 |
| bilmem_ne3 |
| bilmem_ne4 |
+---------------------+
6 rows in set (0.01 sec)
mysql> select * from bilmem_ne;
+----------+------------------+-------+---------+-------+------+
| id | metin | dev | reg1 | reg2 | ht |
+----------+------------------+-------+---------+-------+------+
| 1 | llull;jj;dheyhd | dev5 | 324_3 | 45_3 | 55 |
| 2 | dlasdl;jj;dasdd | dev3 | 214_3 | 75_3 | 54 |
+----------+------------------+-------+---------+-------+------+
1 row in set (0.02 sec)
mysql>
Gerçekten çok data varmış ! Şimdi yedek alalım bakalım.
Komut satırında :
[root!tty2] -> [~] # mysqldump �uadmin74 �p4353234 asdf_db > asdf_db.sql
[root!tty2] -> [~] #
veya
[root!tty2] -> [~] # mysqldump �user=admin74 �-p=4353234 asdf_db > asdf_db.sql
[root!tty2] -> [~] #
evet yedek aldık. şimdi bakalım sql dosyasını içine
[root!tty2] -> [~] # more asdf_db.sql
# MySQL dump 7.1
#
# Host: localhost Database: asdf_db
#--------------------------------------------------------
# Server version 3.22.32
#
# Table structure for table 'bilmem_ne'
#
CREATE TABLE bilmem_ne (
id int(11) NOT NULL auto_increment, ,
metin varchar(250),
dev varchar(20),
reg1 varchar(40) NOT NULL,
reg2 varchar(40) NOT NULL,
ht char(2) NOT NULL,
PRIMARY KEY (id),
UNIQUE fname (id),
KEY id_2 (ht)
);
#
# Dumping data for table 'forums'
#
INSERT INTO bilmem_ne VALUES ('1',' llull;jj;dheyhd','dev5','324_3','45_3','55');
INSERT INTO bilmem_ne VALUES ('2',' dlasdl;jj;dasdd','dev3','214_3','75_3','54');
Sanırım oldu bu iş.
Birde mysqldump'ın --opt opsiyonu var onu kullanmakta fayda var zira kendisi dump işlemlerinde çıkacak sorunlar için tedbir alınması anlamına geliyor bir miktar, --opt'yi aşağıdaki opsiyonların birleşimi gibide düşünebiliriz.
--quick --add-drop-table --add-locks --extended-insert --lock-tables
[root!tty2] -> [~] # mysqldump �uadmin74 �p4353234 --opt asdf_db > asdf_db.sql
[root!tty2] -> [~] #
[root!tty2] -> [~] # more asdf_db.sql
# MySQL dump 7.1
*
*
# Table structure for table 'bilmem_ne'
DROP TABLE IF EXISTS bilmem_ne;
CREATE TABLE bilmem_ne (
*
*
# Dumping data for table 'forums'
LOCK TABLES bilmem_ne WRITES;
INSERT INTO bilmem_ne VALUES ('1',' llull;jj;dheyhd','dev5','324_3','45_3','55');
*
LOCK TABLES;
gördüğünüz gib "DROP TABLE IF EXISTS bilmem_ne;" ve "LOCK TABLES bilmem_ne WRITES;", "LOCK TABLES;" sql deyimleri sql dosyamıza eklendi.
Eveeet yedeklemeyi hallettik tabi bununla sınırlı değil mysqldump --help derseniz oda aynı şeyi söyleyecektir.Mesela bir kaç örnek :
Birden fazla database'i sql dosyamıza gömelim, tabi bu database'lere erişim haklarımızın olduğu varsayılıyor. Bu opsiyon MySQL dump 7.1 de yok haberiniz olsun. Lütfen daha yenileri...
[root!tty2] -> [~] # mysqldump --no-data database1 databsa2 > tum_database.sql
Tüm database'leri almak için ise (Bu opsiyon da MySQL dump 7.1 yok)
[root!tty2] -> [~] # mysqldump �uadmin74 �p4353234 --all-databases > asdf_db-bilmem_n.sql
Sadece istedigimiz table yada table' lerı alalım. table'ları databse isminden sonra yazmalısınız !
[root!tty2] -> [~] # mysqldump �uadmin74 �p4353234 --opt asdf_db bilmem_ne > asdf_db-bilmem_n.sql
Bu datalar çok fazla olabilir, bu yüzden sıkıştırarak yedekleyebilirsiniz. (açarken gunzip file)
[root!tty2] -> [~] # mysqldump �uadmin74 �p4353234 --opt asdf_db | gzip > asdf_db.sql.gz
örnekler arttırılabilir...
Mysqldump'ın geniş anlatımı [url=http://www.mysql.com/doc/m/y/mysqldump.html]http://www.mysql.com/doc/m/y/mysqldump.html[/url].
Tabi birde yedeleklediğimiz bu sql deyimlerini mysql de bulunan database'imize gerektiği zaman yüklememiz lazım bunun için;
[root!tty2] -> [~] # mysql �u admin74 �p asdf_db < asdf_db.sql
Enter Password:
[root!tty2] -> [~] #
yada
[root!tty2] -> [~] # mysql �u admin74 �p -e "source asdf_db.sql" asdf_db
Enter Password:
[root!tty2] -> [~] #
yedeklediğimiz dataları da yerlerine yerleştirdik. Artık içimiz rahat olabilir, tabi dahada güvende olabilmek için yedeklerinde yedeğini almakta fayda var, dahada da güvende olabilmek için yedeklerinde yedeğinin yedeğini alabilirsiniz. Daha da güvende olabilirmisiniz ?
Yazı bitmişdi ama bir püf daha vermekde fayda var. Bu yedekleme işini zırt pırt siz yapmak istemezsiniz elbet, brakın sistem yapsın ekleyin bunu cron'a yedeklensin dursun. Mesela her sabah saat 3 de yapsın.
[root!tty2] -> [~] # crontrab -e admin74
#If you don't ****
#*
#*
#*
0 3 * * * /usr/local/bin/mysqldump �uadmin74 �p4353234 --opt asdf_db | gzip > /yedek/asdf_db.sql.gz
~
~
3.Sonuç
Database ile çalışanlar bilirki heran bir sorun çıkabilir, çıkmayabilirde günlük hayatımızdaki gibi tedbiri elden bırakmamakta fayda var. Mysql datalarını yedeklemenin başka yöntemleri de var ancak. Bu yöntem genelde diğer yöntemlere kök teşkil eder...
13.09.2003(Son Güncelleme)
XX.XX.2001
ATILIM BOY
aboy ~ enderunix.org
[url=http://www.EnderUNIX.ORG/]http://www.EnderUNIX.ORG/[/url]
aboy ~ trunix.org
[url=http://www.Trunix.ORG/]http://www.Trunix.ORG/[/url]
Copyright (c) 2003 ATILIM BOY Kaynak gosterilmek şartıyla kullanılabilir.
EnderUNIX Software Development Team Member.
Mysql de bir database'in yedeklenmesi yorumları
Hamdi
31.01.2007En temel yontem :
ÇIKTI:
1. mysqldump -uKullaniciadi -pSifre Veritabani_Ismi > Veritabani_Ismi.sql
Bu islem
ile veritabanini yeniden olusturacak veriler "Veritabani_Ismi.sql"
dosyasina yazilir.
Bu dosyayi sikistirarak saklamak icin (yaklasik 1/8 sikistirma gozlemledim)
asagidaki gibi bir komut kullanilabilir:
ÇIKTI:
1. mysqldump -uKullaniciadi -pSifre Veritabani_Ismi | gzip > Veritabani_Ismi.gz
Alinan yedeklerin veritabaninda tekrar yaratilmasi icin -gerekli oldugu takdirde- :
ÇIKTI:
1. mysql -uKullaniciadi -pSifre Veritabani_Ismi < Veritabani_Ismi.sql
Veya eger yedegi sikistirarak aldiysaniz :
ÇIKTI:
1. gunzip < Veritabani_Ismi.gz | mysql -uKullaniciAdi -p Veritabani_Ismi
Linux altinda yardim almak icin asagidaki gibi bir komut giriniz :
ÇIKTI:
1. man mysqldump
Resmi Mysqldump dokumanlari asagidaki linkten alinabilir :
[url=http://www.mysql.com/]http://www.mysql.com/[/url]
Yukarida anlatilan islemleri PHPMyAdmin programini kullanarak da yapabilirsiniz:
[url=http://www.phpwizard.com/]http://www.phpwizard.com/[/url]
[b]2007.12.14 cuma günü güncelleme: [/b]
>> [color=#0040FF]mysqldump[/color] [b]-p[/b] [color=#BF0000]db_ad[/color] [color=#FFBF80]>[/color] [color=#0080FF]db.sql[/color]
islem cok basit..Hamdi
31.01.2007[url=http://dev.mysql.com/doc/refman/5.0/en/mysqldump.html]http://dev.mysql.com/doc/refman/5.0/en/mysqldump.html[/url]
--compatible=name
mysql 4.0 verisoyonu kullanan servere , mysql 41 den veri aktarmak istedigimde karakter hatasi veriyordu. bunun icin mysql41 de mysqldump yaparken 40 a göre yedeklemem gerekiyordu komut ise söyle:
mysqldump -u <kullaniciAdi> -p --opt <veritabani> | --compatible=mysql40 > kaynakyer.sql
tiklayinca sifre sorar yazarsiniz ve yedekleme baslar:)
kolay gelsinmiftahulkuluub
29.09.2007Anlattıklarından zerre kadar bir şey anlamadım
:lol:ankebut-57
02.10.2007[quote author="miftahulkuluub"]Anlattıklarından zerre kadar bir şey anlamadım
:lol:[/quote]
[color=#8000FF][b]Ben anlasam herhalde kendi sitemi kurardım şimdiye.[/b][/color]Hamdi
08.10.2007[quote author="miftahulkuluub"]Anlattıklarından zerre kadar bir şey anlamadım
:lol:[/quote]
Kusuruma bakma bir kac hafta sonra okuyabildim mesajini
yapmangereken islem cok basit.
1. ssh diye bir program var bunu googlede aratip download et
2. bu programi kurma islemini yap
3. Daha sonra ftp ile baglanir gibi bu programla serverdeki sitene baglan. Dreamhost ta ssh baglantisi izin veriliyor. girebilirsin yani
4. baglanti sonrasi yeni bir terminal ac:)) Terminal kullandigin programda göreceksin. mantigi windowsta dos sayfasi varya onun gibi bisi ama bu simsiyah degil beyaz ekran olarak karsina cikar
5. ssh terminalini actiktan sonra. yukaridaki islemleri yapabilirsiniz.
[b]
Kisaca yukaridaki islemi yapabilmek icin önce SSH nedir bunu ögrenmek gerekiyor. bu konu ile alakali yazilar linux sayfasinda yer aliyor olmasi lazim.[/b]
FTP bir sofrada yemek yemek oluyorsa. SSH kral sofrasi oluyor:))
sadece ögrenmen gereken sey kral sofrasinin adabi;))
Gerisi mi bir elin yagda diger elinde balda olacak mi:)
[quote]Ben anlasam herhalde kendi sitemi kurardım şimdiye.[/quote]
Bu site kurmaktan öte birislem.cok basit bilgilerle site kurulabilir. bu islemler ise biraz daha özele kaciyor. Profosyanellesmek icin bir adim diyebiliriz:)hayalbekcisi
22.10.2007aslında resimli anlatım olsa daha kolay anlaşılır
Hamdi
28.10.2007[quote author="hayalbekcisi"]aslında resimli anlatım olsa daha kolay anlaşılır[/quote]
evet dogru:)) cok süper fikirde kim resimliyecek
Konular
- SoftException in Application.cpp:302 (Error500) düzenleme
- Root girisli yüklenen drupal dil ve diger eklenti hatalari
- linux serverde yeni ip ekleme islemi
- Web Sitem Güvendemi?
- Linux üzerine site ve forumlar
- Linux recovery üzerinden harddisk baglama (mount)
- SQL Sorgusunda saat ve haftaya göre aratma (DAYOFWEEK)
- Submit JavaScript ile formda nasıl yapılabilir
- Gönderme FORM un da resim kullanma
- Java script ile form verilerini kontrol edebilme
- Size Teşekkür Edenler Var!
- Flash ile grafiksel gösterimler (charts)
- MySQL Replikasyon İşlemi
- Çoklu MySQL Veritabanı Tamir Etme
- Templates Siteleri
- Drupal themaları
- Python programlama dilinin tarihi
- Python kullanan yazılım ve kurumlar
- Python sözdizimi (syntax)
- Python dilini nasıl ve nereden indirebilirim?
- Python ile MySQL bağlantısı
- OpenCV ile Webcam sorgulama
- Python ile MSQL de tablo oluşturma ve veri ekleme
- Dmoza eklenen ve silinen siteleri takip et
- DMOZ 'a sitenizi kabul ettirmenin püf noktaları
- SEO için 30 Altın İpucu
- Alan adı Tescil Ederken Yapılan Hata
- Sitenizi Hızlı Indexletmek
- SEO Sektörü Neden Pahalıdır?
- XHTML’in seo açısından önemi