我试图在CentoOS服务器上安装PG(postgres)gem,但是它一直说Postgres太旧了,即使我把它升级到了9.1.3(按照这里的说明http://www.davidghedini。 com / pg / entry / install_postgresql_9_on_centos )。 我正在使用CentOS 5.8(和Ruby 1.9.3) 这是错误消息: Building native extensions. This could take a while… ERROR: Error installing pg: ERROR: Failed to build gem native extension. /usr/local/bin/ruby extconf.rb checking for pg_config… yes Using config values from /usr/bin/pg_config checking for libpq-fe.h… yes checking for libpq/libpq-fs.h… yes checking for pg_config_manual.h… yes […]
我正在研究PostgreSQL复制解决scheme。 我知道这些解决scheme的两个品种 低级别 – 涉及stream式日志传送,PostgreSQL 9.x中提供的热备份function 高级别 – 在SQL查询级别工作的Slony,Londiste 我的数据库不是非常繁忙和巨大(至less现在)。 但是我想避免由于Amazon EC2故障造成的停机(就像最近发生的那样)。 我的解决scheme是维护一个不同的可用区域中的奴隶,将保持与我的主数据库实例同步。 这样,当主人瘫痪时,我可以故障转移到它。 需要考虑的一点是,这需要连续复制从主机到从机的数据,这将成为跨EC2可用性区域的networkingstream量。 这不是免费的。 现在每GB的成本是1美分,但是在阅读了PostgreSQL食谱的一些计算之后,我发现即使数据库stream量很低,成本也会增长很多。 例如,在“PostgreSQL 9pipe理手册”的“热物理备份和连续归档”一章中,我读到: 如果archive_timeout设置为30秒,我们将每天生成至less2 * 60 * 24 = 2880个文件,每个文件大小为16 MB,因此每天总计46 GB(最小值) [而且我假设在数据库上的stream量最小] 我唯一的要求是,在主服务器上执行的每个写入SQL查询都应在从服务器上重播。 如果这是在事件callback时完成的,那么这将是完美的,因为只有当数据库被修改时,主站和从站之间才会有数据传输,即使没有发生数据库更改,也不是每隔30秒左右。 因此,我认为伦迪斯特可能是我的解决scheme,但我不能100%肯定它是这样工作的。 你有什么build议?
我正在尝试configuration在SERVER_A上运行的PostgreSQL实例,以连接到SERVER_B上的另一个PostgreSQL实例。 我在SERVER_A上运行一个shell脚本,最终需要连接并执行一个pg_restore到驻留在SERVER_B上的数据库中。 SERVER_B在亚马逊的AWS上。 通常情况下,要进入机器,我会运行以下命令: # ssh -i .ssh/server-dev.pem [email protected] [root@dev]# ssh -i .ssh/dev1mac 0.0.0.0 …在Postgres实例驻留在0.0.0.0 任何人都可以帮我解释一下如何使用上面的信息在SERVER_A上configurationPostgres? 我一直在寻找pg_hba.conf,但坦率地说,我从来没有这样做过,从文档,我不清楚如何实现我想要的结果。 有没有更简单的方法可以让我跳过configurationPostgres,而是从我的shell脚本运行一系列的命令来实现恢复? 我会感谢任何帮助,谢谢!
比方说,我有位于目录/A1表空间A ,我想将它(一切)移动到目录/A2 ? 我使用openSUSE + PostgreSQL 9.1,如果这可以简化任何事情 – 我可以阻止它(整个服务器)没有问题。 请注意我正在询问整个表空间,表空间已经包含数据!
我在Open-E存储系统上为在XenServer主机上运行的多个虚拟机使用了一个iscsi卷。 有时候,当虚拟机(因此也是在存储系统上)有非常高的磁盘I / O负载时,我在vm控制台上得到这个错误信息: [2594520.161701] INFO: task kjournald:117 blocked for more than 120 seconds. [2594520.161787] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message. [2594520.162194] INFO: task flush-202:0:229 blocked for more than 120 seconds. [2594520.162274] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message. [2594520.162801] INFO: task postgres:1567 blocked for more than 120 seconds. [2594520.162882] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" […]
我正在build立一个包含postgresql数据库的新系统,并试图locking哪些机器能够打开到数据库的连接。 我试图使用allow_user_postgresql_connect布尔来实现这一目标,但到目前为止一直无法让它阻止任何连接。 我正在testing2台服务器数据库和客户端如下。 都是运行postgres 8.4.7-2的RHEL6u2; DB# getenforce Enforcing DB# getsebool allow_user_postgresql_connect allow_user_postgresql_connect –> on DB# service postgresql start starting postgresql service: [ OK ] Client# getenforce Enforcing Client# getsebool allow_user_postgresql_connect allow_user_postgresql_connect –> off Client-> psql -h DB "sslmode=require dbname=mydb" postgres connects 我已经尝试所有组合的allow_user_postgresql_connect在两台机器上没有能够导致它拒绝连接。 应该如何设置这个布尔值来防止机器上的用户连接到数据库? 我对SElinux很陌生,所以可能会忽略一些明显的东西。
我是相当新的postgresql。 我检查了文档,找不到有关如何进行页面级locking的任何信息。 我明白,我可以设置一个表,像这样的locking模式:LOCK TABLE myTable IN LOCKMODE ROW EXCLUSIVE; 我将如何实现页面级locking我的会话? 让我知道,如果我似乎有一个误解的基本面。
我的本地可以连接到远程,但无法连接到dbserver。 远程可以连接到dbserver(使用psql)。 我想从我的本地运行SQL脚本对数据库。 我正在寻找一种方法来在远程打开一个psql,并指定我的标准input和标准输出到我的本地与SSH。 现在在愚蠢的选项我这样做: ssh remote psql -h db report password run my commands 我可以用这种方式在脚本中完成它,但是它的丑陋和dosnt允许我与psql进行交互式会话。 PSQL="PGPASSWORD=mypassword psql -h dbserver -d report" SQL="SELECT 1" ssh remote "$PSQL –command 'COPY ($SQL) TO STDOUT WITH CSV;'" Ps- Python也行。
作为服务器升级的一部分,我们将从32位Linux迁移到64位Linux(如果Gentoo有所作为)和Postgresql 9.1到9.2。 我有一个时间用pg_upgrade升级数据库… 我的第一个尝试是将旧的(32位9.1)pgsql bin&lib目录,更新系统,然后在更新的(64位)系统上运行: pg_upgrade -b pgsql.old/bin -B /usr/lib64/postgresql-9.2/bin -d data.old -D data.new 这会失败,因为pg_upgrade尝试运行错误的libpq.so.5(64位系统版本,而不是pgsql.old / lib中的32位版本)运行pgsql.old / bin / pg_ctl。 如果我将LD_LIBRARY_PATH设置为指向pgsql.old / lib,那么我可以手动运行旧的32位pg_ctl,但是这似乎对pg_upgrade没有帮助。 所以我想我只是安装了64位Postgresql 9.1和9.2。 现在当我运行: pg_upgrade -b /usr/lib64/postgresql-9.1/bin -B /usr/lib64/postgresql-9.2/bin -d data.old -D data.new 二进制文件运行正常,但升级失败,提前: old and new pg_controldata alignments are invalid or do not match 我猜是由于在数据库中的32位和64位alignment问题? 我知道,pg_dump / pg_restore将工作得很好,但出于速度的原因,我想尽可能使用pg_upgrade。 这不是一次性交易 – 我们有几百个系统需要以自动的方式进行更新(通过适当脚本的可启动拇指驱动器)。
我有一个PostgreSQL数据库使用一个神秘的文本编码,我不能改变这一点。 有没有办法以UTF-7透明地对文本进行存储(对于通知的客户端),以便数据库引擎不会抱怨它不能转换Unicode字符,但客户端仍然可以使用任何Unicode字符? 我可以手动进行这种转换,但我希望有一种方法可以在不进行手动转换的情况下完成。