标签: read-replication

Spring Boot 和 AWS RDS 只读副本

在这里,我试图在 AWS RDS 中实现以下目标。我有一个正在运行的 MySQL 数据库实例。我正在考虑创建只读副本,以便拥有一些额外的负载共享功能。

我有一个在 EC2 上运行的 Spring Boot 应用程序。目前我连接到数据库的方式是在 application.yml 中添加以下属性:

datasource:
    type: com.zaxxer.hikari.HikariDataSource
    url: jdbc:mysql://DB_HOSTNAME:3306/DB_DATABASE?useUnicode=true&characterEncoding=utf8&useSSL=false&useLegacyDatetimeCode=false&serverTimezone=UTC
    username: DB_USERNAME
    password: DB_PASSWORD
Run Code Online (Sandbox Code Playgroud)

我的问题是:

  • 如果我创建只读副本,是否需要编写一些特殊代码来连接到它?
  • 我是否需要多个连接池,每个数据库实例一个连接池?
  • 从代码角度来看,这是如何可扩展的,如果我有 5 个只读副本,我如何在代码中管理它?
  • 如何将数据库调用定向到不同的副本?这个决定的依据是什么?

如果有任何链接/视频/文档,您可以指出我。Spring Boot 不是必需的,我需要了解什么是从 Java 应用程序利用只读副本的好方法。

谢谢

amazon-web-services amazon-rds spring-data-jpa spring-boot read-replication

8
推荐指数
1
解决办法
6512
查看次数

在 RDS MySQL 只读副本上创建用户

是否可以/建议创建只能访问 RDS MySQL 只读副本而不是主数据库服务器的用户?我有许多高级用户我想授予访问权限,以便他们可以运行运行缓慢的查询,但不想让他们访问主生产数据库本身。尝试直接在服务器上执行此操作,我得到ERROR 1290 (HY000): The MySQL server is running with the --read-only option so it cannot execute this statement,因此猜测我必须在 db 参数组或类似的地方执行此操作。无论如何,想法?

mysql amazon-web-services amazon-rds read-replication

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

从 RDS postgres 只读副本流式传输大型结果集并且 sqlalchemy 提前终止

我正在尝试使用 SQLAlchemy 运行大型查询,并在设置为只读副本的 Postgres 9.4 RDS 服务器上使用以下代码。

    # self.sa_engine is a SQLAlchemy engine
    with self.sa_engine.connect() as conn:
        conn = conn.execution_options(stream_results=True)

        # pd = pandas
        # self.sql = "select * from mylargetable"
        for chunk in  pd.read_sql(self.sql, conn, chunksize=50000):
            # do stuff, write file, etc....
Run Code Online (Sandbox Code Playgroud)

问题是大约 30-60 秒后我收到以下错误。在此期间,文件正在按预期写入。

TransactionRollbackError: terminating connection due to conflict with recovery
DETAIL:  User query might have needed to see row versions that must be removed.
Run Code Online (Sandbox Code Playgroud)

我在 google 上搜索到的所有内容都表明要在 RDS 中的只读副本上设置以下参数:

hot_standby_feedback=1
max_standby_archive_delay=600000
max_standby_streaming_delay=600000
Run Code Online (Sandbox Code Playgroud)

设置这些参数后,我预计仅当查询运行时间超过 10 分钟时才会出现上述错误,但我在 30-60 …

postgresql amazon-web-services amazon-rds read-replication

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

如何重新同步 AWS RDS 只读副本

有没有办法修复已停止与主数据库同步的只读副本?我已经在删除它并创建一个新的过程中,因为我找不到这个答案,但很高兴知道它是否再次发生。

数据库是带有 Innodb 表的 MySQL 数据库。

amazon-web-services amazon-rds read-replication

6
推荐指数
1
解决办法
9689
查看次数

我们可以使用云形成模板将 RDS 只读副本升级为主吗?

我们可以使用控制台和 CLI 轻松提升 RDS 只读副本,但有没有办法让主访问意味着使用云形成提升为主数据库?

amazon-web-services amazon-rds aws-cloudformation read-replication

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

“多可用区部署”和“只读副本版本多可用区部署”的区别

概括

Amazon RDS 有两种主要不同类型的副本,多可用区副本和只读副本,很容易找到它们的区别。

但是,只读副本已于 2018 年 1 月支持多可用区部署。

“多可用区部署”和“只读副本版本多可用区部署”的主要区别是什么?

在当前数据库添加Multi-AZ Deployment的两种方式如下:

情况 1:(原始、多可用区部署)

实例操作
? 修改
?指定了“多可用区部署”选项

情况二:(只读副本版多可用区部署)

实例操作
? 创建只读副本
? 指定了“多可用区部署”选项

amazon-web-services amazon-rds read-replication multi-az

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

对 AWS RDS 只读副本数据库感到困惑。为什么我可以编辑行?

编辑:我不是要编辑只读副本。我是说我确实编辑了它,但我对为什么能够编辑感到困惑。

我在美国西部有一个数据库。我在孟买做了一个只读副本,所以印度的用户不会遇到缓慢的问题。出于好奇,我尝试在 Mumbai 只读副本数据库中编辑一行,希望得到一个拒绝我的写入尝试的安全错误(毕竟它是一个 READ 副本)。但是写操作成功了。这是为什么?这不应该是只读数据库吗?

然后我去了主数据库,希望至少可以同步写入过程,但是我的写入执行没有持续。主数据库现在与地方不同。

我还尝试在主数据库中编辑数据,希望它能将其复制到从数据库,但也失败了。

显然,我不明白什么。

database amazon-web-services amazon-rds aurora read-replication

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

Postgresql 只读副本中未使用索引。为什么?

我在 Amazon RDS 生产数据库上有一个相对较大的表(在 2M 条记录范围内)。我希望对多个字段进行分组,包括表中日期的月份(server_time)。为了加快速度,我在 master 数据库上创建了一个索引,如下所示:

create index on build_requests(group_id, artifact_id, account_id, number_of_interfaces, date_trunc('month', server_build_time));
Run Code Online (Sandbox Code Playgroud)

然后,正如您所期望的,对数据进行分组的查询使用主服务器上的索引:

GroupAggregate  (cost=0.55..311308.09 rows=1633231 width=85)
  Group Key: group_id, artifact_id, account_id, number_of_interfaces, date_trunc('month'::text, server_build_time)
  ->  Index Scan using build_requests_group_id_artifact_id_account_id_number_of_in_idx on build_requests  (cost=0.55..262417.68 rows=1898335 width=85)
Run Code Online (Sandbox Code Playgroud)

然而,等待一个多小时后,只读副本仍然没有使用索引:

GroupAggregate  (cost=434678.88..488313.41 rows=1633179 width=85)
  Group Key: group_id, artifact_id, account_id, number_of_interfaces, (date_trunc('month'::text, server_build_time))
  ->  Sort  (cost=434678.88..439424.56 rows=1898274 width=85)
        Sort Key: group_id, artifact_id, account_id, number_of_interfaces, (date_trunc('month'::text, server_build_time))
        ->  Seq Scan on build_requests  (cost=0.00..55053.43 rows=1898274 width=85)
Run Code Online (Sandbox Code Playgroud)

使用 pgadmin 登录只读副本,我发现索引仍然存在。这是一个问题,因为只读副本上的查询速度较慢(5 分钟 vs 3 …

sql postgresql amazon-web-services read-replication

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

我们如何使用 AWS 云形成模板创建跨区域 RDS 只读副本?

我很容易找到了一种使用 AWS 云形成在同一区域创建 RDS 只读副本的方法,但是:
1. 我们可以使用 CF 模板在不同的区域创建相同的副本吗?
2. 也可以使用CF模板将其提升为primary吗?

amazon-web-services amazon-rds aws-cloudformation read-replication

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

如何获取 RDS 只读副本的凭据?

我已为生产 RDS 实例创建了只读副本,但我不知道在哪里可以看到该副本的登录凭据。

当我进入秘密管理屏幕并尝试创建新秘密时,副本实例不存在。

而且我不知道密码(通常在控制台创建数据库后会显示密码)。

我如何获得以下信息?用户名、密码、数据库名

credentials amazon-web-services amazon-rds read-replication aws-secrets-manager

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