我正在尝试使用来自s_clientXP 上OpenSSL 的 SSL 连接到 AWS 上的 PostgreSQL 服务器。我可以使用这个连接到第三方s_client。在服务器和 XP 上,我都使用 openssl 版本 0.9.8.k。
当我尝试连接到我的服务器时,我得到了结果:
CONNECTED(00000003)
2036:error:140790E5:SSL routines:SSL23_WRITE:ssl handshake failure:s23_lib.c:188
:
在 Postgres 日志中,我看到了以下条目:
2009-10-30 13:58:08 UTC LOG: invalid length of startup packet
我很感激任何关于在哪里寻找让这个工作的建议。也许有一个公共 AWS 映像我可以查看已知可以在哪个 PostgreSQL 上工作?
我知道这个问题听起来很挑衅,但事实并非如此。我最近发现 MySQL 在很多领域都存在限制,并且越来越喜欢 PostgreSQL。它的扩展性更好,并且比 MySQL 更尊重 SQL 标准。
我仍然是 PostgreSQL 世界的新手,并且由于我愿意在我未来的所有项目中远离 MySQL,我想知道的是:MySQL 是否有任何特定的特性使它做得更好(如更多高性能或更用户友好等..)比在 PostgreSQL 中?
我想知道我会从 MySQL 中错过什么。我已经发现 MySQL 中的 AUTO_INCREMENT 字段比 PostgreSQL 中的 SEQUENCES 更方便,而且过去在 Windows 中的部署是有问题的(不再是问题了。对我来说从来都不是问题)。
还有什么?
根据您的经验,哪个数据库服务更难扩展?MySQL 还是 Postgres?我知道 MySQL 有几个开箱即用的缩放/集群功能,但是对于 Postgres,没有一个是开箱即用的。CMIIW。
编辑:
对不起,这里的混淆,我的问题是指横向扩展(水平扩展),即集群、分片等。我知道两者都可以水平扩展,但哪个更容易实现?
谢谢你的分享。
我有一个包含大约 200 万行交易数据的表,用于分析。每周我们都会用新数据重新加载它,因此我们一直使用 TRUNCATE 将其清除,然后插入新行。
表上有几个索引。如果我不删除并重新创建索引,我是否需要在每次截断和重新填充后重新编制索引,还是没有必要?我应该在 TRUNCATE 之后运行 VACUUM 还是这也是不必要的?
我想将 postgresql 与 django 一起使用,因此执行了以下操作:
sudo apt-get install libpq-dev python-dev
sudo apt-get update
workon myenv
sudo pip install psycopg2
Run Code Online (Sandbox Code Playgroud)
在settings.py正确配置我之后,我运行
./manage.py syncdb
Run Code Online (Sandbox Code Playgroud)
但是会抛出异常:
django.core.exceptions.ImproperlyConfigured: Error loading psycopg2 module: No module named psycopg2
Run Code Online (Sandbox Code Playgroud)
数据库配置:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'mydb',
'USER': 'postgres',
'PASSWORD': 'password1234',
'HOST': 'localhost',
'PORT': '',
}
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 PostgreSql 在我自己的服务器上运行 tinyRSS。但是我不断收到此错误:
LOG: provided user name (tinyrss) and authenticated user name (apache) do not match
FATAL: Peer authentication failed for user "tinyrss"
Run Code Online (Sandbox Code Playgroud)
我知道 postgresql 使用基于主机的身份验证,并且由于我没有与主机相同的帐户名(tinyrss),因此我需要使用用户名映射,因此我将此行添加到pg_ident.conf:
# MAPNAME SYSTEM-USERNAME PG-USERNAME
tinyrss hongyi tinyrss
Run Code Online (Sandbox Code Playgroud)
和下pg_hba.conf:
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
# local all all peer
# IPv4 local connections:
host all all 127.0.0.1/32 ident map=tinyrss
# IPv6 local connections:
host all all ::1/128 ident
Run Code Online (Sandbox Code Playgroud)
我能知道我做错了什么以及解决方法吗?提前致谢!
正如在GRANT SELECT 对 postgresql 中的所有表的问题中所讨论的那样,从 PG 9.0 开始,您可以使用如下命令将所有现有表的权限批量授予用户 u:
GRANT ALL ON ALL TABLES IN SCHEMA public TO u;
Run Code Online (Sandbox Code Playgroud)
以 u 身份登录,您现在可以对预先存在的表 a 执行此操作:
SELECT * FROM a;
Run Code Online (Sandbox Code Playgroud)
但是,如果您现在创建表 b 并执行以下操作:
SELECT * FROM b;
Run Code Online (Sandbox Code Playgroud)
你得到:
ERROR: permission denied for relation b
SQL state: 42501
Run Code Online (Sandbox Code Playgroud)
这可以通过重新执行来解决
GRANT ALL ON ALL TABLES IN SCHEMA public TO u;
Run Code Online (Sandbox Code Playgroud)
但是每次创建表后都必须记住这样做是一个问题。
有没有办法让 PostgreSQL 自动将这些全局授权应用于新创建的表?
~ 提前致谢 ~ 肯
无法将用户切换到 postgres。
postgres 用户的 Ulimit 设置设置了合理的限制。我们没有达到最大值。
/var/log/messages 中没有错误。
错误:
BETA -bash-4.2# sudo su - postgres
su: /bin/bash: Resource temporarily unavailable
Run Code Online (Sandbox Code Playgroud)
设置:
BETA -bash-4.2# ps -auxww | grep -i postgr | wc -l
503
BETA -bash-4.2# lsof | grep -i postgr | wc -l
35225
BETA -bash-4.2#
Run Code Online (Sandbox Code Playgroud)
postgres 进程的 Ulimit。
BETA -bash-4.2# cat /proc/26230/limits
Limit Soft Limit Hard Limit Units
Max cpu time unlimited unlimited seconds
Max file size unlimited unlimited bytes
Max data size unlimited unlimited bytes
Max stack size …Run Code Online (Sandbox Code Playgroud) 当我连接到远程服务器上的 psql 时
>psql -h {hostname}
psql: could not connect to server: Connection timed out (0x0000274C/10060). Is the server running on host "{hostname}" (194.58.98.133) and accepting TCP/IP connections on port 5432?
Run Code Online (Sandbox Code Playgroud)
在服务器上:
netstat -nlp | grep 5432
tcp 0 0 0.0.0.0:5432 0.0.0.0:* LISTEN 29609/postmaster
tcp 0 0 :::5432 :::* LISTEN 29609/postmaster
unix 2 [ ACC ] STREAM LISTENING 2107633273 29609/postmaster /tmp/.s.PGSQL.5432
Run Code Online (Sandbox Code Playgroud)
服务器上没有 iptables。ping 服务器成功。
我做错了什么?
是否可以或建议将 pg_dump 输出流/管道传输到 S3?
我们正在将大型数据集转储到我们的实例中,并且数据库大小很大。因此尝试优化本地磁盘空间(避免转储的临时空间)并直接在 S3 上创建备份。
我们在 Ubuntu 16.04 上有一个 PostgreSQL v9.6.3。