Firebird数据库镜像
Firebird shadow - jonney_wang - 博客园 (cnblogs.com)
火鸟数据库的shadow,即实时镜像。
主库发生变化,shadow也跟随变化,防止任何意外造成主库损坏无法使用,当然shadow可以有多个。
1、创建shadow的准备:修改Firebird.conf配置文件,追加一个数据库目录 DatabaseAccess = Restrict db; shadow
我这里安装目录下db目录是数据库主目录,shadow目录作为镜像目录。这两个目录是平级的,不存在shadow目录必须放镜像的误导,
只是目录命名为了放置镜像数据库。因为镜像shadow数据库不能随便指定目录。
2、创建shadow镜像的脚本: create shadow 1 'C:\Program Files\Firebird\Firebird_3_0\shadow\test.sd1';
提交事务后,会在shadow目录下生成 test.sd1的镜像数据库文件,且和主库保持同步。
可以根据需要生成多个镜像库。
3、确认镜像库是激活状态:
打开isql命令行,连接test数据库: connect test user sysdba password 1234;
连接成功后,输入命令显示当前数据库的信息: show database; 即显示以下,则说明镜像库test.sd1正常。
Database: test Owner: SYSDBA Shadow 1: "C:\PROGRAM FILES\FIREBIRD\FIREBIRD_3_0\SHADOW\TEST.SD1" auto PAGE_SIZE 16384 Number of DB pages allocated = 8179 Number of DB pages used = 180 Number of DB pages free = 7999 Sweep interval = 20000 Forced Writes are ON Transaction - oldest = 22605 Transaction - oldest active = 23455 Transaction - oldest snapshot = 23455 Transaction - Next = 23484 ODS = 12.0 Database not encrypted Default Character set: UTF8
4、删除其中一个shadow镜像,若不能直接删除,提示进程占用,重启Firebird服务,或关掉服务,直接将镜像文件删除即可。
再次用isql命令查看,镜像已经删除。
5、将镜像库shadow恢复设定为可连接活动库。假设主库损坏,关掉Firebird服务,将主库删掉,再将shadow镜像库重命名为原来库名称,
再次开启Firebird服务即可使用。这时防止意外,需要再次为其设定shadow镜像库。
最后,根据官方文档,在将镜像库设定为生产库时,需要命令 gfix -ac[tivate] <shadow_file_name> ,即 gfix -ac test.sd1
这样做可以,不操作也可,估计是以前版本必须这样做,我测试版本是V3.0.4 。
若执行了 gfix -ac test.sd1 命令,即原来正常的镜像库test.sd1就取消去shadow身份了,再次查看test库信息时,shadow就没有了。
激活镜像库的命令要小心,否则镜像从库就不能实时同步主库信息了。
注:gfix.exe 即在安装目录下。