我们有一个主从复制配置如下.
在主人:
postgresql.conf 复制配置如下(为简洁起见,注释行):
max_wal_senders = 1
wal_keep_segments = 8
Run Code Online (Sandbox Code Playgroud)
在奴隶上:
与postgresql.conf主人相同.recovery.conf看起来像这样:
standby_mode = 'on'
primary_conninfo = 'host=master1 port=5432 user=replication password=replication'
trigger_file = '/tmp/postgresql.trigger.5432'
Run Code Online (Sandbox Code Playgroud)
在最初设置时,我们执行了一些简单的测试并确认复制正常.但是,当我们进行初始数据加载时,只有一些数据进入了从属.
Slave的日志现在填充了如下所示的消息:
< 2015-01-23 23:59:47.241 EST >LOG: started streaming WAL from primary at F/52000000 on timeline 1
< 2015-01-23 23:59:47.241 EST >FATAL: could not receive data from WAL stream: ERROR: requested WAL segment 000000010000000F00000052 has already been removed
< 2015-01-23 23:59:52.259 EST >LOG: started streaming WAL from primary at F/52000000 on timeline …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用Python和Boto框架将日志发送到AWS CloudWatch Logs。我正在这样做:
res=logs.put_log_events("FOO", "BAR",
[{'timestamp':int(round(time.time() * 1000)),
'message':time.strftime("%m/%d/%Y %H:%M:%S")+' Scheduled monitoring check' }],
sequence_token=None)
Run Code Online (Sandbox Code Playgroud)
我每次运行都会收到错误消息:
boto.logs.exceptions.InvalidSequenceTokenException: InvalidSequenceTokenException: 400 Bad Request
{u'message': u'The given sequenceToken is invalid. The next expected sequenceToken is: 49540113336360065754596906019042392283494234157161146226', u'expectedSequenceToken': u'49540113336360065754596906019042392283494234157161146226', u'__type': u'InvalidSequenceTokenException'}
Run Code Online (Sandbox Code Playgroud)
对我来说,存储该令牌有点不切实际。这没有任何意义,为什么我不能仅附加到日志流?
我该如何解决?
我打电话ecs.create_service是这样的:
createServiceResponse = ecs.create_service(
clientToken='abc123',
cluster=options.cluster,
serviceName=options.service,
desiredCount=1,
taskDefinition='relay:' + str(revision),
role='ecsServiceRole',
loadBalancers=[
{
'loadBalancerName': options.elb,
'containerName': 'relay',
'containerPort': 8080
}
]
)
Run Code Online (Sandbox Code Playgroud)
请注意,clientToken中的值目前是abc123,但我尝试了各种不同的字符串.这个文件说我需要提供它以确保幂等性(http://boto3.readthedocs.org/en/latest/reference/services/ecs.html)但是我一直收到这个错误:
Traceback (most recent call last):
File "./deploy.py", line 103, in <module>
'containerPort': 8080
File "/usr/local/lib/python2.7/site-packages/botocore/client.py", line 301, in _api_call
return self._make_api_call(operation_name, kwargs)
File "/usr/local/lib/python2.7/site-packages/botocore/client.py", line 386, in _make_api_call
raise ClientError(parsed_response, operation_name)
botocore.exceptions.ClientError: An error occurred (InvalidParameterException) when calling the CreateService operation: Creation of service was not idempotent.
Run Code Online (Sandbox Code Playgroud)
为什么?
我们有一个使用 SQL 数据库的企业应用程序。数据库访问特征大约是90%的读取。更新或创建的数据需要立即更新。缓存需要高度确定地正确失效。98% 的情况下,实体是通过其主键引用的。
该应用程序基于 Node.js,并且是 AWS 原生的。由于该应用程序是 AWS 原生的,因此我希望依赖 AWS 的托管服务,而不是托管我自己的服务。一种选择是实现基于 Redis 的读取缓存。检索实体后,我们会检查缓存,如果数据未缓存,我们会将其放入缓存中,然后再将其交给用户。更新这些实体的代码部分将使主键的缓存失效。
一般来说,在计算机科学中,缓存一致性是最难解决的问题之一。我认为,与其实现 Redis 缓存并考虑所有可能的场景以使其正确失效,不如配置一个专门用于读取频繁访问的实体的 Aurora 只读副本更为明智。RDBMS 在缓存方面比我们自己构建的任何东西都做得更好。
因此,我面临两个选择 - 努力实现自己的缓存,或使用只读副本。我个人的意见是使用只读副本。
一如既往,我们非常感谢任何建议。
我们在AWS RDS平台上运行PostgreSQL 9.3.每天凌晨1点我们都在做全球VACUUM ANALYZE工作.
昨天我们观察到性能严重下降,结果发现VACUUM ANALYZE过去5天我们有5个进程停滞不前.在相同的时间段内,磁盘利用率增加了45千兆字节.
我杀了它pg_terminate_backend但没有太大的影响.这些过程看起来已经死亡,但性能仍然严重下降.由于我们使用的是AWS RDS,我们已经执行了重启,故障转移和性能立即得到了显着改善.
今天早上我查了一下,发现VACUUM ANALYZE再次卡住了5个小时.我杀了它,但我怀疑它还在那里.
经过进一步调查,我确认auto_vacuum已正确启用,这意味着我们不需要运行手动,VACUUM但我们可能需要ANALYZE在部分或全部表上运行.
在我的研究中,我发现了这篇文章:http://rhaas.blogspot.com/2011/03/troubleshooting-stuck-vacuums.html和http://wiki.postgresql.org/wiki/Introduction_to_VACUUM,_ANALYZE,_EXPLAIN,_and_COUNT.
最后,我有以下问题:
在AWS ECS中的Docker容器中运行时,我的Java应用程序似乎没有"打开文件"限制.经过进一步调查,我发现打开文件限制默认为1024.
通常,在Linux中我会编辑/etc/security/limits.conf.当我在Docker容器中修改该文件时,这似乎不会生效.
我知道我也可以传递命令行ulimit参数,docker run如此处所述.但我没有直接访问ECS中的Docker命令行.必须有一种方法可以通过任务定义来完成它.我该如何做到这一点?
postgresql ×2
python ×2
amazon-ec2 ×1
amazon-ecs ×1
boto ×1
boto3 ×1
caching ×1
docker ×1
mysql ×1
node.js ×1
performance ×1
redhat ×1
redis ×1
replication ×1
vacuum ×1