いつもお世話になってます。
Firebirdのバックアップを自動で取ってくれる常駐アプリを作っています。
で、TIBBackupServiceのコーディングで、オプションの部分だけどう設定すればいいのかわかりません。
正直、IBConsoleで手動バックアップのときも適当なんですが、気持ちが悪いのでどう設定するのがおすすめか教えて頂けないでしょうか。
ヘルプの情報が少なくて困ってます。
with IBBackupService do
begin
Active := True;
Verpose := True;
Options := [****,****];
BackupFile.Add('c:\NewApl\apl.gbk');
ServiceStart;
end;
Delphi7ent+XP
> ヘルプの情報が少なくて困ってます。
これ↓以上の情報が必要なのですか?具体的には何が知りたいのでしょう?
[IBServices.TBackupOptions]
http://docwiki.embarcadero.com/Libraries/ja/IBServices.TBackupOptions
Delphi 7 のヘルプは容量不足のせい (WinHlp32 の限界) で腐ってますけど、
TIBBackupService
↓
プロパティ
↓
Options
↓
Options プロパティを使うと,データベースのバックアップのオプションを選択できます。TBackupOptions の値を以下に示します。
↓
TBackupOptions を直接キーワード検索
で、先述のリンク先と同じ情報が出てきます。
わざわざありがとうございます。
ネット検索不足でした。
あやふやな理解でしかないですが、
通常「Limboトランザクション=true」くらいで十分なような気がしますが、いかがでしょう。
全量バックアップなら「チェックサム無視」も入れておいた方がいいでしょうか?
> ネット検索不足でした。
いえいえ、D7 ヘルプで件の情報を見つけられなかった (読んでいなかった) のでしたら、
上にも書いてあるように D7 ヘルプは腐ってますので仕方の無い事かと思います。
DocWiki は結構マトモなので、Delphi 7 をお使いの場合でも一度検索してみる事をオススメします。
> 通常「Limboトランザクション=true」くらいで十分なような気がしますが、いかがでしょう。
> 全量バックアップなら「チェックサム無視」も入れておいた方がいいでしょうか?
"チェックサム無視" は基本的に DB ファイルが壊れている時にしか機能せず、
(経験上)本格的に壊れている時はこのフラグを立てていても
異常終了でバックアップできない事が多いという悩ましいフラグです (w
やっぱり Limbo のみくらいで妥当ですかね。
バックアップらしきことはできるようになりました。
が、元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;
> 元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
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 のバックアップ/リストアロジックを
# 最小限のコードになるまで削ったものなのです。
# (オプション指定が省かれているだけで、ロジック的にはほぼ等価です)
> それと、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でした。
IBConsoleは、書籍Firebird加藤大受さんのカスタムタイプです。
> やっぱり29MBでした。
正常にリストアできて、内容が正しいのであれば問題はないのですが...。
なんかちょっと引っ掛かりますね。
# むしろ IBConsole の結果のほうが。
> 書籍Firebird加藤大受さんのカスタムタイプです。
バイナリの方であれば 1.0.0.310 (Delphi 5 製) で、
ソースをビルドすると 1.0.0.337 だったと思います。
ウチで公開しているものも 1.0.0.337 ベースなので
大差があるようには思えませんね。
自分、管理の方は全然自信がないので、保存と削除以外放置しているのですが、
昔のアウトルックみたいにレコードの肥大化ってあるんでしょうか?
> 昔のアウトルックみたいにレコードの肥大化ってあるんでしょうか?
あります。バックアップ&リストアを行うと、
パックされますのでファイルサイズが小さくなります。
"スイープ" というのもあるのですが、
こちらは内部 (構造) をキレイにしてくれるだけで、ファイルサイズは変わりません。
(デフラグみたいなものです)
ということは、
上記でおっしゃられてるようにIBConsoleの増える方が異常なんですね。
「firebird パック」で検索したらバックアップ&リストアで圧縮するって技を見つけましたが、怖いのでやめときます。
ありがとうございました。
リストアのコードも書けそうです。
ツイート | ![]() |