TIBBackupServiceのオプション

解決


studio-take  2013-05-06 17:18:49  No: 44509

いつもお世話になってます。

Firebirdのバックアップを自動で取ってくれる常駐アプリを作っています。
で、TIBBackupServiceのコーディングで、オプションの部分だけどう設定すればいいのかわかりません。
正直、IBConsoleで手動バックアップのときも適当なんですが、気持ちが悪いのでどう設定するのがおすすめか教えて頂けないでしょうか。
ヘルプの情報が少なくて困ってます。

with IBBackupService do
begin
  Active := True;
  Verpose := True;
  Options := [****,****];
  BackupFile.Add('c:\NewApl\apl.gbk');
  ServiceStart;
end;

Delphi7ent+XP


DEKO  2013-05-06 19:28:32  No: 44510

> ヘルプの情報が少なくて困ってます。
これ↓以上の情報が必要なのですか?具体的には何が知りたいのでしょう?

[IBServices.TBackupOptions]
http://docwiki.embarcadero.com/Libraries/ja/IBServices.TBackupOptions


DEKO  2013-05-06 19:36:46  No: 44511

Delphi 7 のヘルプは容量不足のせい (WinHlp32 の限界) で腐ってますけど、

TIBBackupService

プロパティ

Options

Options プロパティを使うと,データベースのバックアップのオプションを選択できます。TBackupOptions の値を以下に示します。

TBackupOptions を直接キーワード検索

で、先述のリンク先と同じ情報が出てきます。


studio-take  2013-05-07 04:12:12  No: 44512

わざわざありがとうございます。
ネット検索不足でした。
あやふやな理解でしかないですが、
通常「Limboトランザクション=true」くらいで十分なような気がしますが、いかがでしょう。
全量バックアップなら「チェックサム無視」も入れておいた方がいいでしょうか?


DEKO  2013-05-07 04:46:24  No: 44513

> ネット検索不足でした。
いえいえ、D7 ヘルプで件の情報を見つけられなかった (読んでいなかった) のでしたら、
上にも書いてあるように D7 ヘルプは腐ってますので仕方の無い事かと思います。
DocWiki は結構マトモなので、Delphi 7 をお使いの場合でも一度検索してみる事をオススメします。

> 通常「Limboトランザクション=true」くらいで十分なような気がしますが、いかがでしょう。
> 全量バックアップなら「チェックサム無視」も入れておいた方がいいでしょうか?
"チェックサム無視" は基本的に DB ファイルが壊れている時にしか機能せず、
(経験上)本格的に壊れている時はこのフラグを立てていても
異常終了でバックアップできない事が多いという悩ましいフラグです (w

やっぱり Limbo のみくらいで妥当ですかね。


studio-take  2013-05-07 07:45:25  No: 44514

バックアップらしきことはできるようになりました。
が、元DBのサイズ42.5MBに対し、出力できているのが29MBです。
IBConsoleだと44MBできています。
オプションも同じようにしています。

with IBBackup do
begin
  try
    try
      Active := True;
      Verbose := True;
      //Options
      Options := [];
      if frmMain.cbxIgnoreChecksums.Checked then
        Options := Options + [IgnoreChecksums];
      if frmMain.cbxIgnoreLimbo.Checked then
        Options := Options + [IgnoreLimbo];
      if frmMain.cbxMetadataOnly.Checked then
        Options := Options + [MetadataOnly];
      if frmMain.cbxNoGarbageCollection.Checked then
        Options := Options + [NoGarbageCollection];
      if frmMain.cbxNonTransportable.Checked then
        Options := Options + [NonTransportable];
      if frmMain.cbxConvertExtTables.Checked then
        Options := Options + [ConvertExtTables];
      //
      BackupFile.Add(frmMain.edtBackupPath.Text + '\MANUAL' + FormatDateTime('yyyymmdd',now) + frmMain.edtFileName.Text);
      ServiceStart;
      frmMain.barInfo.SimpleText := FormatDateTime('hh:mm:ss',Now) + ':バックアップに成功しました。';
    except
      frmMain.barInfo.SimpleText := FormatDateTime('hh:mm:ss',Now) + ':バックアップに失敗しました。';
    end;
  finally
    Active := False;
  end;
end;


DEKO  2013-05-07 08:16:40  No: 44515

> 元DBのサイズ42.5MBに対し、出力できているのが29MBです。
> IBConsoleだと44MBできています。

元DB: 42.5MB
バックアップファイル: 29MB
IBConsole バックアップ: 44MB

IBConsole も内部的には TIBBackupService を使っているので、そこまでの差が出るとは思えません...むしろ IBConsole のバックアップファイルがデカ過ぎる気がします。お使いの IBConsole はどこで入手されたものでしょう?

[Firebird のデータベースファイルをバックアップ/リストアするには?]
http://ht-deko.minim.ne.jp/tech040.html#tech075
ここにあるコードでも同じ結果になりますか?

それと、IBX は Delphi 7 最新の 7.11 でしょうか?

[IBX 7.11 for D7 w/ IB 2007 support]
http://cc.embarcadero.com/item/24267


DEKO  2013-05-07 09:37:39  No: 44516

IBConsole がウチのサイトにある ANSI 版で、

[IBConsole 日本語版+α]
http://ht-deko.minim.ne.jp/junkbox.html#IBCONSOLE

Delphi 7 の IBX が 7.11 で、

[IBX 7.11 for D7 w/ IB 2007 support]
http://cc.embarcadero.com/item/24267
(Delphi 2007 の 11.11 と Delphi 7 の 7.11 は同等品)

記述したコードが以下のものと同等ならば、

[Firebird のデータベースファイルをバックアップ/リストアするには?]
http://ht-deko.minim.ne.jp/tech040.html#tech075

理屈的には同じサイズのバックアップファイルができるハズです。

# 上記バックアップ/リストアのロジックは
# IBConsole のバックアップ/リストアロジックを
# 最小限のコードになるまで削ったものなのです。
#  (オプション指定が省かれているだけで、ロジック的にはほぼ等価です)


studio-take  2013-05-07 16:02:21  No: 44517

> それと、IBX は Delphi 7 最新の 7.11 でしょうか?
IBXは7.11です。

> [Firebird のデータベースファイルをバックアップ/リストアするには?]
http://ht-deko.minim.ne.jp/tech040.html#tech075
> ここにあるコードでも同じ結果になりますか?

while IBBackupService1.IsServiceRunning do
  Application.ProcessMessages;

では、動かなかったので、
While not IBBackuppService.EOF do
  Bar.SimpleText := GetNextLine;
で代用しました。

やっぱり29MBでした。


studio-take  2013-05-07 16:06:00  No: 44518

IBConsoleは、書籍Firebird加藤大受さんのカスタムタイプです。


DEKO  2013-05-07 19:29:44  No: 44519

> やっぱり29MBでした。
正常にリストアできて、内容が正しいのであれば問題はないのですが...。
なんかちょっと引っ掛かりますね。

# むしろ IBConsole の結果のほうが。


DEKO  2013-05-07 19:35:50  No: 44520

> 書籍Firebird加藤大受さんのカスタムタイプです。
バイナリの方であれば 1.0.0.310 (Delphi 5 製) で、
ソースをビルドすると 1.0.0.337 だったと思います。

ウチで公開しているものも 1.0.0.337 ベースなので
大差があるようには思えませんね。


studio-take  2013-05-08 04:38:21  No: 44521

自分、管理の方は全然自信がないので、保存と削除以外放置しているのですが、
昔のアウトルックみたいにレコードの肥大化ってあるんでしょうか?


DEKO  2013-05-08 07:57:07  No: 44522

> 昔のアウトルックみたいにレコードの肥大化ってあるんでしょうか?
あります。バックアップ&リストアを行うと、
パックされますのでファイルサイズが小さくなります。

"スイープ" というのもあるのですが、
こちらは内部 (構造) をキレイにしてくれるだけで、ファイルサイズは変わりません。
(デフラグみたいなものです)


studio-take  2013-05-08 08:08:04  No: 44523

ということは、
上記でおっしゃられてるようにIBConsoleの増える方が異常なんですね。

「firebird パック」で検索したらバックアップ&リストアで圧縮するって技を見つけましたが、怖いのでやめときます。

ありがとうございました。
リストアのコードも書けそうです。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加