Read/Read-Write Amazon Web Services RDS 的 URI
Read/Read-Write URIs for Amazon Web Services RDS
我正在使用 HAProxy 为我的应用程序的 AWS RDS (MySQL) 负载平衡,它是使用 Flask 编写的。
HAProxy.cfg 文件具有以下数据库配置
listen mysql
bind 127.0.0.1:3306
mode tcp
balance roundrobin
option mysql-check user haproxy_check
option log-health-checks
server db01 MASTER_DATABSE_ENDPOINT.rds.amazonaws.com
server db02 READ_REPLICA_ENDPOINT.rds.amazonaws.com
我正在使用 SQLALCHEMY,它的 URI 是:
SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://USER:PASSWORD@127.0.0.1:3306/DATABASE'
但是当我在我的测试环境中 运行 一个 API 时,只是从数据库中读取内容的 API 执行得很好,但是 API正在向数据库写入内容的 s 给我的错误主要是:
(pymysql.err.InternalError) (1290, 'The MySQL server is running with the --read-only option so it cannot execute this statement')
我想在这种情况下我现在需要使用 2 个 URL,一个用于 read-only
操作,一个用于 writes
。
Flask 和带有 HAProxy 的 SQLALCHEMY 如何工作?
我如何告诉我的应用程序使用一个 URL 进行 write
操作和其他 HAProxy
URL 到 read-only
操作?
我没有从 SQLAlchemy 的文档中找到任何帮助。
Flask-SQLAlchemy can easily connect to multiple databases. To achieve
that it preconfigures SQLAlchemy to support multiple “binds”.
SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://USER:PASSWORD@DEFAULT:3306/DATABASE'
SQLALCHEMY_BINDS = {
'master': 'mysql+pymysql://USER:PASSWORD@MASTER_DATABSE_ENDPOINT:3306/DATABASE',
'read': 'mysql+pymysql://USER:PASSWORD@READ_REPLICA_ENDPOINT:3306/DATABASE'
}
指绑定:
db.create_all(bind='read') # from read only
db.create_all(bind='master') # from master
我正在使用 HAProxy 为我的应用程序的 AWS RDS (MySQL) 负载平衡,它是使用 Flask 编写的。
HAProxy.cfg 文件具有以下数据库配置
listen mysql
bind 127.0.0.1:3306
mode tcp
balance roundrobin
option mysql-check user haproxy_check
option log-health-checks
server db01 MASTER_DATABSE_ENDPOINT.rds.amazonaws.com
server db02 READ_REPLICA_ENDPOINT.rds.amazonaws.com
我正在使用 SQLALCHEMY,它的 URI 是:
SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://USER:PASSWORD@127.0.0.1:3306/DATABASE'
但是当我在我的测试环境中 运行 一个 API 时,只是从数据库中读取内容的 API 执行得很好,但是 API正在向数据库写入内容的 s 给我的错误主要是:
(pymysql.err.InternalError) (1290, 'The MySQL server is running with the --read-only option so it cannot execute this statement')
我想在这种情况下我现在需要使用 2 个 URL,一个用于 read-only
操作,一个用于 writes
。
Flask 和带有 HAProxy 的 SQLALCHEMY 如何工作?
我如何告诉我的应用程序使用一个 URL 进行 write
操作和其他 HAProxy
URL 到 read-only
操作?
我没有从 SQLAlchemy 的文档中找到任何帮助。
Flask-SQLAlchemy can easily connect to multiple databases. To achieve that it preconfigures SQLAlchemy to support multiple “binds”.
SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://USER:PASSWORD@DEFAULT:3306/DATABASE'
SQLALCHEMY_BINDS = {
'master': 'mysql+pymysql://USER:PASSWORD@MASTER_DATABSE_ENDPOINT:3306/DATABASE',
'read': 'mysql+pymysql://USER:PASSWORD@READ_REPLICA_ENDPOINT:3306/DATABASE'
}
指绑定:
db.create_all(bind='read') # from read only
db.create_all(bind='master') # from master