SqlSync では2つのデータベースを比較して、どのタプルが追加され、除かれ、変更されたかを知ることができる。また、一方のデータベースを他方のクローンにし、必要な変更を加えながらその状態を保つことができる。同期化にSqlSyncを用いることには、異種エンジン間(たとえば、MySQLからPostgreSQLへ)の同期化ができるというメリットがある。
Ubuntu、Fedora、openSUSEの標準リポジトリにはSqlSyncパッケージがない。そこで、本稿ではバージョン1.0.0-rc1を使い、64ビットのFedora 8マシンでソースからビルドすることにした。プロジェクトのfreshmeatページにもホームページにも書かれていないが、SqlSyncはデータベースへのアクセスにODBCを使う。したがって、unixODBC開発パッケージがインストールされていないと、ビルドは成功しない。
SqlSyncはautotoolsによる自動ビルドを行わず、Makefileを使うので、ビルドに失敗したときは、Makefile.logを見れば失敗理由がわかる。筆者は、-fPIC 位置独立コードオプションなしで共有ライブラリをmakeしようとして、ビルドに失敗したことがある。PICコードの特長はメモリ中のどこにでもロードできることであり、共有ライブラリのコードのコンパイルでこれを使えば、2つのライブラリが同じアドレスを使いたいと主張するとき、一方を別のアドレスに移動できて便利である。また、静的リンクバージョンのビルドでも、やはりリンクに関連して別の問題が発生した。これの解決には、Makefile.defを次のように変更して、makeを実行し、SqlSyncをビルドした。これで、静的にリンクされたsrc/sqlsync_staticツールが得られる。
$ vi Makefile.def - ODBC_STATIC_LIB=`odbc_config --static-libs` -L`odbc_config --lib-prefix` -liconv + ODBC_STATIC_LIB=`odbc_config --static-libs` -L`odbc_config --lib-prefix` -ldl $ make WITH_SHARED=NO WITH_STATIC=YES clean all ...
