我在 RDS AWS PostgreSQL 实例中有一个现有数据库。我需要在这个实例中再创建一个数据库,因为启动一个单独的集群会很昂贵。似乎没有任何选项可以在此实例中再创建一个数据库。我知道我可以为此目的创建一个单独的模式(如在 MySQL 中),但我需要将这些资源分开,因此需要一个单独的数据库。
如果可能,请告诉我。PostgreSQL 9.6.5
我有一个当前在 EC2 上运行的数据库。由于我必须将它移到更大的机器上,因此出现了使用 RDS 的问题。
价钱:
我可以按需获得带有两个 SSD(每个 16GB)、两个 vCPU 和 4GB 内存的EC2 c3.large实例,价格为每小时 0.132 美元[1]。
最接近的(考虑价格)RDS机器db.m3.medium每小时 0.125 美元(单可用区)[2]。这台机器有相同数量的内存,但只有一个 vCPU [3]。此外,我将不得不为存储和 io [2]付费。
因此,这两个的价格将非常相似。
EC2 的优势:
RDS的优势:
RDS 能否覆盖 EC2 的优势(尤其是 2.)?还有其他优点吗?
首先,我搜索并找到了几篇与此错误相关的帖子,其中大多数都指向 RAM 问题或 SSL 问题,我尝试通过在命令行中添加 sslmode=disabled 来克服 SSL 的可能性:
psql -U waypoint -d waypoint -W -c "alter table telemetria_data.historico alter clase type smallint, alter valor type real[], alter power type smallint, alter voltaje type real;" -h localhost -v sslmode=disable
Run Code Online (Sandbox Code Playgroud)
但同样的消息出现了:
SSL SYSCALL error: EOF detected
connection to server was lost
Run Code Online (Sandbox Code Playgroud)
关于可能的内存问题,我不知道如何解决。
数据结构是这个问题中描述的数据结构,正如您可能发现的那样,这将是一个非常长的运行查询,以完成对所有继承表的完整更改表。
操作系统:
Linux ip-10-1-0-9 3.16.0-4-amd64 #1 SMP Debian 3.16.36-1+deb8u2 (2016-10-19) x86_64 GNU/Linux
Run Code Online (Sandbox Code Playgroud)
PostgreSQL:
PostgreSQL 9.4.9 on x86_64-unknown-linux-gnu, compiled by gcc (Debian 4.9.2-10) 4.9.2, 64-bit
Run Code Online (Sandbox Code Playgroud)
更新 2017-06-01 13:50 …
标题说明了一切。奇怪的是找不到这方面的结果。
我需要定期将 RDS 上的 PostgreSQL 转储到 S3 上的文件中(以便在 AWS 之外的其他地方使用它)。
有没有比运行脚本更好的方法,该脚本pg_dump使用例如运行并将结果上传到 S3 boto3?
我正在运行 PostgreSQL 9.6.3 的 RDS 实例:select version();返回PostgreSQL 9.6.3 on x86_64-pc-linux-gnu [...]。
我发现在从 RDS 控制台发出停止命令并启动后,数据库总是报告数据库系统没有正确关闭,需要恢复。此行为已由至少一位其他 RDS PostgreSQL 用户 ( https://forums.aws.amazon.com/message.jspa?messageID=809401#809401 )独立验证。
查询
select name, setting
from pg_settings
where name in ('fsync', 'wal_sync_method', 'synchronous_commit');
Run Code Online (Sandbox Code Playgroud)
报告说fsync = on,wal_sync_method = fdatasync(适用于 Linux 系统),和synchronous_commit = on。
发出停止命令后,我在日志中看到以下内容:
2017-10-12 16:37:36 UTC::@:[3464]:LOG: received fast shutdown request
2017-10-12 16:37:36 UTC::@:[3464]:LOG: aborting any active transactions
2017-10-12 16:37:36 UTC::@:[3515]:LOG: autovacuum launcher shutting down
2017-10-12 16:37:36 UTC::@:[3512]:LOG: shutting down
2017-10-12 16:37:36 …Run Code Online (Sandbox Code Playgroud) 我们在 AWS 上有一个主/单个流副本 Postgres 9.3 db。负载并不是特别高 - 这是一个开发/登台环境。(生产显示了类似的指标)。重点是 Cloudwatch 中显示的“ReplicaLag”在白天在 0 到 200 秒之间剧烈振荡。我已将 max_wal_senders 从 5 更改为 10,没有任何更改。
有什么诊断建议吗?

(这是一个 t2.small master 和 t2.small replica,但是生产实例很大,并且表现出同样的问题。CPU < 2%,连接 < 60,iops 仅约 5-15 计数/秒)。
我有一个相当大的表(100 万行),我的数据库卡在这个表上的自动清理(> 30 分钟)上,导致整个数据库阻塞。应用程序现在甚至不会加载。
-00:37:31.137859 autovacuum: VACUUM public.users
Run Code Online (Sandbox Code Playgroud)
SELECT n_tup_del, n_tup_upd FROM pg_stat_all_tables WHERE relname = 'users';
Run Code Online (Sandbox Code Playgroud)
这些是我的用户表上的 autovacuum 设置:
-00:37:31.137859 autovacuum: VACUUM public.users
Run Code Online (Sandbox Code Playgroud)
我从慢 PostgreSQL 性能中使用的这些建议设置?不要忘记清空你的数据库
我只需要等待吗?我有哪些选择?
更新
我已升级到 Postgres 9.5,并将我的 RDS IOPS 增加到 900,并且真空过程仍然使 IOPS 达到最大值并且无法对数据库执行任何其他操作。该过程在升级前 1 天的某个时间点运行。
我还删除了我拥有的自定义 autovacuum 设置,现在只使用默认设置。
以下是这些查询结果的附件;
SELECT * FROM pg_stat_activity;
SELECT * FROM pg_stat_database;
SELECT * FROM pg_stat_user_tables;
SELECT * FROM pg_stat_user_indexes;
SELECT * FROM pg_locks;
Run Code Online (Sandbox Code Playgroud)
我有一个 MySQL RDS 实例(“生产”),我需要从中将增量数据复制到另一个 MySQL RDS 实例(“报告”)。“增量数据”是某些表中的新行。目前,我通过一个 PHP 脚本完成此操作,该脚本根据上次更新时间从“生产”查询并将 CSV 文件写入磁盘,然后使用 mysqlimport.exe 将文件导入“报告”。
我目前的方法需要大约 80 秒。这是最强大和最有效的方法吗?我找到了其他用于“一次性”传输的工具,但没有找到“企业增量数据库复制”工具。
由于报告端的批处理操作,我们当前的过程不是“连续”复制。不过这可能是可以协商的。放松这种限制会打开工具,使这变得容易吗?
相关相关文章/问题:亚马逊关于导入数据的文章好像主要是处理批处理(初始加载)的情况。 http://aws.amazon.com/articles/2933
当在同一实例上从一个数据库移动到另一个数据库时,这可以通过存储过程来完成(我的问题是它们是不同的实例)。请参阅:保持 MySQL 暂存数据库在同一台服务器上从生产更新
我不能将两个数据库放在同一个实例上,因为我们的实例负载相当大。
前言:
我们在 AWS 上使用 RDS 来管理我们的 MySQL 数据库。我知道 RDS 创建用于复制的二进制日志。我想收集这些二进制日志并将它们存储在 S3 上,以便随时可以恢复到异地数据库并重播操作。
问题:
我扩展了一个新的 RDS 实例,并尝试了以下操作。
root@aws_test_server:/root# mysqlbinlog -h testing.xxxxxxxx.eu-west-1.rds.amazonaws.com -u myuser -p --read-from-remote-server -t mysql-bin-changelog.000002
Enter password:
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
ERROR: Got error reading packet from server: Could not find first log file name in binary log index file
DELIMITER ;
# End of log file
ROLLBACK /* added by mysqlbinlog */;
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;
root@aws_test_server:/root#
Run Code Online (Sandbox Code Playgroud)
所以二进制日志检索得很好,但是看到二进制日志中的错误..这是什么意思?
我用谷歌搜索了大约 …