mysql yedekleme

Diğer veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
EeCOMP
Üye
Mesajlar: 119
Kayıt: 13 Tem 2003 10:38
Konum: istanbul
İletişim:

mysql yedekleme

Mesaj gönderen EeCOMP »

s.a
mysql veritabanı kulllanılarak hazırlanmış bir programım var yedekleme yapmak istiyorum günlük yedek alıcak bunu nasıl yaptırabilirim
yardımlarınız için şimdiden teşekkürler
s.a
Kainat dahi bir programdır ve şüphesiz onun bir programcısı vardır...
mkysoft
Kıdemli Üye
Mesajlar: 3110
Kayıt: 26 Ağu 2003 12:35
Konum: Berlin
İletişim:

Mesaj gönderen mkysoft »

Kod: Tümünü seç

procedure Tfr_yedek.bt_yedekle_dershaneClick(Sender: TObject);
var
  dosyasay: integer;
  sonuc : TSearchRec;
  tablolar: string;
begin
  dg_kapa.FileName := copy(DateToStr(now),1,2)+'-'+copy(DateToStr(now),4,2)+'-'+copy(DateToStr(now),7,4)+'_'+copy(timeToStr(now),1,2)+'-'+copy(timeToStr(now),4,2)+'-'+copy(timeToStr(now),7,4)+'_dershane';
  dosyasec := false;
  dg_kapa.Execute;
  if dosyasec=false then exit;
  try
    mkdir(extractfilepath(application.exename)+'\Yedek');
  except
    dosyasay := FindFirst(extractfilepath(application.exename)+'\Yedek\*.*', faAnyFile - faDirectory, sonuc);
    while dosyasay = 0 do
    begin
      deletefile(extractfilepath(application.exename)+'\Yedek\'+sonuc.Name);
      dosyasay := FindNext(sonuc);
    end;
    FindClose(sonuc);
  end;
  tablo_oku.Close;
  tablo_oku.SQL.Clear;
  tablo_oku.SQL.Add('show tables FROM dershane');
  tablo_oku.Open;
  tablolar:=  tablo_oku.Fields[0].Text;
  tablo_oku.Next;
  while tablo_oku.Eof = false do
  begin
    tablolar:=tablolar+','+tablo_oku.Fields[0].Text;
    tablo_oku.Next;
  end;
  tablo_oku.Close;
  tablo_oku.SQL.Clear;
  tablo_oku.SQL.Add('backup table '+tablolar+' to '''+stringreplace(extractfilepath(application.exename),'\','/',[rfReplaceAll])+'/Yedek''');
  tablo_oku.ExecSQL; //burada tüm tabloların istediğim klasöre yedeklenmesini sağladım.
  zip_kapa.FileName := dg_kapa.FileName;
  dosyasay := FindFirst(extractfilepath(application.exename)+'\Yedek\*.*', faAnyFile - faDirectory, sonuc);//burada abrivia companentiyle çıkan yedeklerin zip lenmesini sağladım.
  while dosyasay = 0 do
  begin
    zip_kapa.AddFiles(extractfilepath(application.exename)+'\Yedek\'+sonuc.Name,0);
    dosyasay := FindNext(sonuc);
  end;
  FindClose(sonuc);
    dosyasay := FindFirst(extractfilepath(application.exename)+'\Yedek\*.*', faAnyFile - faDirectory, sonuc);
    while dosyasay = 0 do
    begin
      deletefile(extractfilepath(application.exename)+'\Yedek\'+sonuc.Name);
      dosyasay := FindNext(sonuc);
    end;
  FindClose(sonuc);
 rmdir(extractfilepath(application.exename)+'\Yedek'); //buraya kadar oluşan templeri sildim.
 tablo_oku.Close;
 tablo_oku.SQL.Clear;
 tablo_oku.SQL.Add('update ayarlar set yedek_tarih="'+mtarih(now())+'"');
 tablo_oku.ExecSQL; //yedeklendiğine dair kayıt.
 messagedlg('Dershane için yedek alma işlemi başarıyla tamamlandı.', mtInformation ,[mbOK], 0);
end;
ben bu şekilde yapıyorum. mantığnı kısaca yazayım zamanım yok. anlayamazsam bana cevap yap. mysql otomatik olarak tabloları kendisi yedekliyor. bende onları zipliyorum. restore table ilede aynı mantıkla yedekleri geri yükleyebilirsin. eğer kullanıcı eski yedeklere göz adatacsa bir tane yedek databasi oluşturup geri yüklemeyi oraya yaptır. programda orayı kullansın
rahim123
Üye
Mesajlar: 29
Kayıt: 03 Ara 2003 05:49

mysql backup table ile yedekleme hatası

Mesaj gönderen rahim123 »

bu şekilde yedek alıyorum myisam tablolarım... yedeğimi aldıktan sonra nasıl restore edicem kopyala yapıştır yapıca err :2 hatası veriyo nedendir
.net icat oldu mertlik bozuldu
mkysoft
Kıdemli Üye
Mesajlar: 3110
Kayıt: 26 Ağu 2003 12:35
Konum: Berlin
İletişim:

Mesaj gönderen mkysoft »

kopyala yapıştır yapınca olmaz.
restore table komutunu kullanarak yapmalısın. kopyala yapıştır yaparsan olmaz. Çünkü yedekleme esnasında indexleri yedeklemiyor. Geri yükleme yaparken indexleri tekrar oluşturur.
Cevapla