AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Firebird Backup/Restore mit FIBPlus
Thema durchsuchen
Ansicht
Themen-Optionen

Firebird Backup/Restore mit FIBPlus

Ein Thema von Chemiker · begonnen am 28. Jun 2009 · letzter Beitrag vom 4. Dez 2010
Antwort Antwort
Seite 1 von 3  1 23      
Benutzerbild von Chemiker
Chemiker

Registriert seit: 14. Aug 2005
1.859 Beiträge
 
Delphi 11 Alexandria
 
#1

Firebird Backup/Restore mit FIBPlus

  Alt 28. Jun 2009, 19:44
Datenbank: FB • Version: 2 • Zugriff über: FIBPlus
Hallo,

bei FIBPlus gibt’s die Komponenten pFIBBackupService und pFIBRestoreService gibt es irgendwo ein gutes Beispiel wie man sie einsetzen kann?

Bis bald Chemiker
wer gesund ist hat 1000 wünsche wer krank ist nur einen.
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#2

Re: Firebird Backup/Restore mit FIBPlus

  Alt 28. Jun 2009, 19:57
So ungefähr :

Delphi-Quellcode:
procedure TfrmSicherung.btnSicherungClick(Sender: TObject);
begin
  inherited;
  SchreibeJournal ('Datensicherung gestartet');
  StatusMemo.Show;
  StatusMemo.Lines.Clear;
  with BackupService do begin
// ServerName := 'localhost';
    LoginPrompt := False;
    Params.Add('user_name='+User);
    Params.Add('password='+Password);
    Active := True;
    try
      Verbose := True;
      // You can set here any your necessary options
      Options := [NonTransportable, IgnoreLimbo];
      DatabaseName := DBgdb;
      BackupFile.Clear;
      BackupFile.Add(DBgbk);
      ServiceStart;
    finally
      Active := False;
      ShowMessage ('lokale Datensicherung beendet !'+#10#13+'Die Datei '+
                     ExtractFilePath (ParamStr (0))+'DB\DB.FBK'+
                    ' sollte aber noch auf ein externes Medium kopiert werden!');
      SchreibeJournal ('Datensicherung beendet');
      Close;
    end;
  end;
end;

procedure TfrmSicherung.FormCreate(Sender: TObject);
begin
  inherited;
  DBgdb := ExtractFilePath (ParamStr (0))+'DB\DB.FDB';
  DBgbk := ExtractFilePath (ParamStr (0))+'DB\DB.FBK';
  User := 'SYSDBA';
  Password := 'masterkey';
end;

Delphi-Quellcode:
inherited frmSicherung: TfrmSicherung
  Left = 408
  Top = 263
  Width = 491
  Height = 423
  Caption = 'Systemsteuerung'
  PixelsPerInch = 96
  TextHeight = 16
  object Label1: TLabel [1]
    Left = 16
    Top = 8
    Width = 128
    Height = 20
    Caption = 'Datensicherung'
    Font.Charset = DEFAULT_CHARSET
    Font.Color = clBlue
    Font.Height = -16
    Font.Name = 'MS Sans Serif'
    Font.Style = [fsBold]
    ParentFont = False
  end
  inherited sbDrucker: TStatusBar
    Top = 377
    Width = 483
  end
  inherited pnlEscEnde: TGfghPanel
    TabOrder = 3
  end
  object StatusMemo: TMemo
    Left = 16
    Top = 88
    Width = 457
    Height = 241
    Font.Charset = DEFAULT_CHARSET
    Font.Color = clWindowText
    Font.Height = -11
    Font.Name = 'MS Sans Serif'
    Font.Style = []
    ParentFont = False
    ScrollBars = ssBoth
    TabOrder = 1
    Visible = False
  end
  object btnSicherung: TButton
    Left = 16
    Top = 40
    Width = 75
    Height = 25
    Caption = 'Start'
    TabOrder = 2
    OnClick = btnSicherungClick
  end
  object BackupService: TpFIBBackupService
    OnTextNotify = BackupServiceTextNotify
    BlockingFactor = 0
    Options = []
    Left = 440
    Top = 344
  end
end
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von Chemiker
Chemiker

Registriert seit: 14. Aug 2005
1.859 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: Firebird Backup/Restore mit FIBPlus

  Alt 29. Jun 2009, 07:44
Hallo,

wenn ich über diese Komponenten das Backup und das Restore durchführe, dürfen die Clients keinen Zugriff auf die Datenbank haben, aber wie sieht mit dem Server von Firebird aus muss er vorher runtergefahren werden?

Bis bald Chemiker
wer gesund ist hat 1000 wünsche wer krank ist nur einen.
  Mit Zitat antworten Zitat
TBx
(Administrator)

Registriert seit: 13. Jul 2005
Ort: Stadthagen
1.891 Beiträge
 
Delphi 12 Athens
 
#4

Re: Firebird Backup/Restore mit FIBPlus

  Alt 29. Jun 2009, 07:58
Wieso dürfen die Clients keinen Zugriff auf die Datenbank haben?
Diesen dürfen Sie immer über den Server haben. Auch bei der Datensicherung. Diese ist wie alles andere im Firebird auch transakionsgestützt. Das bedeutet, dass alles, was noch nicht gepostet ist, eben auch nicht gesichert wird.

Und der Server muss den Zugriff sowieso haben, dieser führt die Datensicherung aus!

Beim Restore ist es richtig, da dürfen die Clients keinen Zugriff haben.

Dies kannst DU auf mehrere Arten Erreichen, zu.B. kannst Du die Datenbank zuvor herunterfahren (bringt aber nur was, wenn nicht wie so oft nur auf SYSDBA gearbeitet wird).
Ein anderer gängiger Weg ist es, die DB mit einem anderen Namen zu restoren und dannach umzubenennen.

Gruß

Thomas
Thomas Breitkreuz
Gruß Thomas
- Admin DelphiPRAXIS
- Admin Delphi-Treff
- Embarcadero MVP
  Mit Zitat antworten Zitat
Benutzerbild von Chemiker
Chemiker

Registriert seit: 14. Aug 2005
1.859 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Firebird Backup/Restore mit FIBPlus

  Alt 29. Jun 2009, 22:15
Hallo,

Danke erst mal.

Zusammenfassung:

1. Der Server muss bei Restore und beim Backup laufen.
2. Ein Backup ist auch bei Client zugriff möglich
3. Beim Restore dürfen die Client keinen Zugriff haben.

Zum Punkt 3 stellt sich nur die Frage, wie kann ich gewährleisten das die Clients keinen Zugriff haben, wenn das Restore läuft?

Wenn möglich, würde ich gerne eine Applikation dafür Schreiben, dass das Restore automatisch durchgeführt wird und zuvor die Clients gesperrt werden. Ist das überhaupt möglich und wenn ja, wie kann man das Umsetzen?

Bis bald Chemiker
wer gesund ist hat 1000 wünsche wer krank ist nur einen.
  Mit Zitat antworten Zitat
Benutzerbild von dataspider
dataspider

Registriert seit: 9. Nov 2003
Ort: 04539 Groitzsch
1.351 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Firebird Backup/Restore mit FIBPlus

  Alt 30. Jun 2009, 09:07
Hi,

Man sollte vor dem Backup die DB herunterfahren (ConfigService / ShutDownDataBase).
Jetzt darf nur noch der Besitzer der DB sich anmelden.
Firebird blockt normalerweise alle Benutzer ausser SYSDBA.
Im Backupprozeß[EDIT]Restore, nicht Backup[/EDIT] wird IMHO dann auch zusätzlich SYSDBA geblockt.
Als Errorcode erhält man beim Connectversuch 335544528 (isc_shutdown).
Somit sollte man auf diesen Fehler entsprechend reagieren.

Frank
Frank Reim
  Mit Zitat antworten Zitat
borwin

Registriert seit: 14. Sep 2006
Ort: Rostock
72 Beiträge
 
Delphi 2007 Enterprise
 
#7

Re: Firebird Backup/Restore mit FIBPlus

  Alt 30. Jun 2009, 09:17
Hallo Chemiker,

Zitat:
Zum Punkt 3 stellt sich nur die Frage, wie kann ich gewährleisten das die Clients keinen Zugriff haben, wenn das Restore läuft?
also grundsätzlich machst Du nur ein Restore, wenn mal was schief gegeangen ist. D.h. die Datenbank oder der Server ist gecrash.
Dann können die clients sowieso nicht arbeiten.
Beim Restore wird die Datenbank neu angelegt. Die alte wird nicht überschrieben. Diese wird vorher gelöscht.
Während des Restore kann sowieso kein Client auf die Datenbank zugreifen.
Somit sehe ich die Sache sehr unkritisch.

Gruß Borwin
  Mit Zitat antworten Zitat
TBx
(Administrator)

Registriert seit: 13. Jul 2005
Ort: Stadthagen
1.891 Beiträge
 
Delphi 12 Athens
 
#8

Re: Firebird Backup/Restore mit FIBPlus

  Alt 30. Jun 2009, 09:59
Zitat von borwin:
also grundsätzlich machst Du nur ein Restore, wenn mal was schief gegeangen ist.
Von diesem Vorgehen ist dringend abzuraten.
Ein erfolgreiches Backup ist noch lange keine Garantie für ein erfolgreiches Restore.
Man sollte nach einem Backup immer auch ein Restore durchführen, nicht ins laufende System sondern an einem seperaten Ort. Sollten dabei Fehler auftreten, hat man noch die Möglichkeit zu reagieren.
Im Fehlerfall nicht reagieren zu können, weil man auch ein Backup hat, das nicht wiederherstellbar ist, wäre ja nun wirklich nicht schön.
Thomas Breitkreuz
Gruß Thomas
- Admin DelphiPRAXIS
- Admin Delphi-Treff
- Embarcadero MVP
  Mit Zitat antworten Zitat
borwin

Registriert seit: 14. Sep 2006
Ort: Rostock
72 Beiträge
 
Delphi 2007 Enterprise
 
#9

Re: Firebird Backup/Restore mit FIBPlus

  Alt 30. Jun 2009, 10:52
Zitat:
Man sollte nach einem Backup immer auch ein Restore durchführen, nicht ins laufende System sondern an einem seperaten Ort.
Da stimme ich Dir 100% zu. Dort gibt es aber keine Probleme mit den Clients.

Gruß Borwin
  Mit Zitat antworten Zitat
Benutzerbild von Chemiker
Chemiker

Registriert seit: 14. Aug 2005
1.859 Beiträge
 
Delphi 11 Alexandria
 
#10

Re: Firebird Backup/Restore mit FIBPlus

  Alt 30. Jun 2009, 22:54
Hallo,

vielen Dank für die vielen Ideen und Anregungen.

Ich habe jetzt mir ein Testtool mit FIBPlus zusammengeschrieben und auch schon getestet. Habe mal aus der Datenbank 2 Mio. Datensätze gelöscht zu Testzwecken.
Backup gezogen geht auch mit angemeldeten Client, aber die Performanz leidet aber merklich darunter. Beim Restore zuvor den Client abgemeldet (Anwendung runtergefahren) und anschließend mit dem Testtool das Restore durchgeführt (Das braucht aber auch seine Zeit bei 40 Mio. Datensätze).
Danach war die DB erheblich verkleinert und die Geschwindigkeit der Datenbank war angestiegen.

Zitat von TBx:
Man sollte nach einem Backup immer auch ein Restore durchführen, nicht ins laufende System sondern an einem seperaten Ort. Sollten dabei Fehler auftreten, hat man noch die Möglichkeit zu reagieren.
Wie würde man so was organisatorisch und technisch umsetzen?

Postulieren wir mal, es wird ein Backup gezogen und der Test ob das Backup i.o. ist wird auf eine andere Weise getestet (nicht im laufenden System), wie kann man dann die DB „reinigen“ sprich gelöschte Datensätze tatsächlich löschen, nicht abgeschlossene Transaktionen schließen usw. und das am liebsten beim laufenden System?

Bis bald Chemiker
wer gesund ist hat 1000 wünsche wer krank ist nur einen.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:29 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz