我需要的是基本上在本地计算机上创建远程数据库的只读镜像。如果镜子能够定期自我更新,它也会很整洁。
数据库版本为Postgresql 9.3
。
这样做的原因是我需要对该数据库执行选择,并且在我的互联网连接上需要很长时间。
我找到this article但它需要访问我目前没有的远程服务器。那么有没有一种方法可以直接访问服务器?我所拥有的只是数据库名称,域名,端口,用户名和密码。
答案 0 :(得分:2)
如果您只能使用用户名和密码访问数据库,我将创建一个简单的脚本,删除当前的本地数据库并从刚刚恢复的数据库转储中重新填充它。
脚本看起来像这样
#!/bin/bash
REMOTE_PSQL_OPTIONS="-h <remote_host> -p <remote_port> -U <remote_user>"
LOCAL_PSQL_OPTIONS="-h localhost -p <local_port> -U <local_user>"
# retrieve the database locally
echo "Remote database fetch"
pg_dump $REMOTE_PSQL_OPTIONS <remote_db_name> > /tmp/my_db.sql
# install locally
echo "Local install in temporary database"
psql $LOCAL_PSQL_OPTIONS postgres "CREATE DATABASE my_tmp_db"
psql $LOCAL_PSQL_OPTIONS my_tmp_db -f /tmp/my_db.sql
# switch databases
echo "Installing the new database version"
psql $LOCAL_PSQL_OPTIONS postgres
# backup the current local db
psql $LOCAL_PSQL_OPTIONS postgres "ALTER DATABASE current_db_name RENAME TO current_db_name_backup;"
# rename the tmp db to the expected local database name
psql $LOCAL_PSQL_OPTIONS postgres "ALTER DATABASE my_tmp_db RENAME TO current_db_name;"
# if you trust this script, uncomment this line that clean old backups
# psql $LOCAL_PSQL_OPTIONS postgres "DROP DATABASE current_db_name_backup;"
希望有所帮助。
如果你有任何ssh访问权限,你可以在transfert之前gzip sql转储但是现在这是你唯一的选择。