小编Ole*_*lin的帖子

如何修复无法跟上Master的PostgreSQL 9.3 Slave?

我们有一个主从复制配置如下.

在主人:

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)

postgresql replication redhat

14
推荐指数
1
解决办法
3万
查看次数

Python / Boto-无需序列令牌即可写入AWS CloudWatch Logs

我正在尝试使用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)

对我来说,存储该令牌有点不切实际。这没有任何意义,为什么我不能仅附加到日志流?

我该如何解决?

python boto amazon-web-services

7
推荐指数
3
解决办法
6266
查看次数

使用boto3 ECS获得"创建服务并非幂等".为什么?

我打电话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)

为什么?

python amazon-ec2 amazon-ecs boto3

7
推荐指数
1
解决办法
5641
查看次数

我应该实现自己的缓存还是依赖只读副本?

我们有一个使用 SQL 数据库的企业应用程序。数据库访问特征大约是90%的读取。更新或创建的数据需要立即更新。缓存需要高度确定地正确失效。98% 的情况下,实体是通过其主键引用的。

该应用程序基于 Node.js,并且是 AWS 原生的。由于该应用程序是 AWS 原生的,因此我希望依赖 AWS 的托管服务,而不是托管我自己的服务。一种选择是实现基于 Redis 的读取缓存。检索实体后,我们会检查缓存,如果数据未缓存,我们会将其放入缓存中,然后再将其交给用户。更新这些实体的代码部分将使主键的缓存失效。

一般来说,在计算机科学中,缓存一致性是最难解决的问题之一。我认为,与其实现 Redis 缓存并考虑所有可能的场景以使其正确失效,不如配置一个专门用于读取频繁访问的实体的 Aurora 只读副本更为明智。RDBMS 在缓存方面比我们自己构建的任何东西都做得更好。

因此,我面临两个选择 - 努力实现自己的缓存,或使用只读副本。我个人的意见是使用只读副本。

一如既往,我们非常感谢任何建议。

mysql caching amazon-web-services redis node.js

3
推荐指数
1
解决办法
1028
查看次数

如何处理陷入困境的PostgreSQL 9.3 VACUUM ANALYZE?

我们在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.htmlhttp://wiki.postgresql.org/wiki/Introduction_to_VACUUM,_ANALYZE,_EXPLAIN,_and_COUNT.

最后,我有以下问题:

  1. 在没有启用auto_vacuum的情况下运行手动VACUUM是否正确?
  2. 如何监控auto_vacuum的进度和性能?我怎么知道它与手册VACUUM没有卡在同一个地方?
  3. 我还需要定期运行ANALYZE吗?
  4. 有没有办法启用自动ANALYZE,类似于auto_vacuum?

postgresql performance vacuum amazon-web-services

2
推荐指数
2
解决办法
3487
查看次数

如何为在AWS ECS中运行的Docker容器配置"ulimits"?

在AWS ECS中的Docker容器中运行时,我的Java应用程序似乎没有"打开文件"限制.经过进一步调查,我发现打开文件限制默认为1024.

通常,在Linux中我会编辑/etc/security/limits.conf.当我在Docker容器中修改该文件时,这似乎不会生效.

我知道我也可以传递命令行ulimit参数,docker run如此处所述.但我没有直接访问ECS中的Docker命令行.必须有一种方法可以通过任务定义来完成它.我该如何做到这一点?

amazon-web-services docker

2
推荐指数
1
解决办法
4576
查看次数