Linux
如何從數據目錄恢復 Postgresql 集群
在我們的辦公室裡,我們有一個執行 Debian 5 的開發數據庫伺服器,在這台伺服器上,我們執行了一個 postgresql 8.1,但是由於伺服器無法訪問網際網路,我們使用 pg_dump_all 備份了整個集群,但是轉儲文件隨後失去了我們安裝了很多版本,8.1 版本本身都不能辨識數據庫集群,所以我的問題是,有沒有辦法重新安裝相同的 postgres 8.1 並告訴他從數據文件夾中獲取舊集群?或者備份應該只通過轉儲文件?我只有數據文件夾,但 9.2、8.4 或相同的 8.1 都無法辨識集群。這是我在嘗試使用 pg 8.1 初始化同一個集群時遇到的錯誤
postgres@Desarrollo-SDQ-VE:/opt/postgres/8.1/bin$ ./postgres -D /databases/postgresql/8.1/ve/ -c config_file=/etc/postgresql/8.1/ve/postgresql.conf [2012-11-13 10:42:22 AST:18359id] 2012-11-13 10:42:22 AST 2012-11-13 10:42:22.137 AST FATAL: database files are incompatible with server [2012-11-13 10:42:22 AST:18359id] 2012-11-13 10:42:22 AST 2012-11-13 10:42:22.138 AST DETAIL: The database cluster was initialized with HAVE_INT64_TIMESTAMP but the server was compiled without HAVE_INT64_TIMESTAMP. [2012-11-13 10:42:22 AST:18359id] 2012-11-13 10:42:22 AST 2012-11-13 10:42:22.138 AST HINT: It looks like you need to recompile or initdb.
任何想法?
這是我要做的:
- 下載
postgresql-8.1_8.1.8-1.diff.gz
,postgresql-8.1_8.1.8-1.dsc
並postgresql-8.1_8.1.8.orig.tar.gz
從http://archive.debian.org/debian/pool/main/p/postgresql-8.1/在與您打算安裝的作業系統相同的機器上下載。dpkg-source -x postgresql-8.1_8.1.8-1.dsc
- 檢查
debian/rules
配置選項。由此可見:
DEB_CONFIGURE_EXTRA_FLAGS := --mandir=\$${prefix}/share/postgresql/8.1/man \ --with-docdir=\$${prefix}/share/doc/postgresql-doc-8.1 \ --datadir=\$${prefix}/share/postgresql/8.1 \ --bindir=\$${prefix}/lib/postgresql/8.1/bin \ --includedir=\$${prefix}/include/postgresql/ \ --enable-nls \ --enable-integer-datetimes \ --enable-thread-safety \ --enable-debug \ --disable-rpath \ --with-tcl \ --with-perl \ --with-python \ --with-pam \ --with-krb5 \ --with-openssl \ --with-gnu-ld \ --with-tclconfig=/usr/lib/tcl$(TCL_VER) \ --with-tkconfig=/usr/lib/tk$(TCL_VER) \ --with-includes=/usr/include/tcl$(TCL_VER) \ --with-pgport=5432 \ $(ARCH_OPTS) \ CFLAGS='$(CFLAGS)' \ LDFLAGS='$(LDFLAGS)'
這應該可以幫助您進行自己的原始碼建構。特別是我認為您可能需要
--enable-integer-datetimes
.或者,您可以
dpkg-buildpackage -rfakeroot -uc -b
建構包,然後將其複製到目標伺服器並安裝它。