找不到使用官方 aws_db_instance 资源激活 PostGIS 扩展的方法,是否还有其他选项可以使用 Terraform 激活它?
在 Mysql (Amazon RDS) 上,当我尝试运行以下 SQL 查询时
UPDATE
table1 INNER JOIN table2 USING (CommonColumn)
SET
table1.col1 = table2.x,
table1.col2 = table2.y
Run Code Online (Sandbox Code Playgroud)
大约 52 秒后,我始终收到此错误:
Error Code: 1205. Lock wait timeout exceeded; try restarting transaction
Run Code Online (Sandbox Code Playgroud)
我应该如何解决这个问题?
table2 有大约 1700 万条记录,table2 是 table1 的子集,有 400 万条记录。问题可能是表的大小还是我的查询有问题?
我正在运行 RDS MySQL 服务器,并且正在将我当前的环境迁移到此服务器。我可以很好地连接 MySQL Workbench,但是当我尝试通过我的 .NET 应用程序与实体框架连接时,我得到以下信息:
EntityException: The underlying provider failed on Open.
...
MySqlException (0x80004005): Unable to connect to any of the specified MySQL hosts.
...
SocketException (0x2af9): No such host is known
Run Code Online (Sandbox Code Playgroud)
我的连接字符串如下所示:
<add name="MyEntities" connectionString="metadata=res://*/Database.csdl|res://*/Database.ssdl|res://*/Database.msl;provider=MySql.Data.MySqlClient;provider connection string="server=name.*.eu-west-1.rds.amazonaws.com,3306;user id=Username;password=Password;persist security info=True;database=DBName"" providerName="System.Data.EntityClient" />
Run Code Online (Sandbox Code Playgroud)
因为我可以在 MySQL Workbench 中连接,所以我相信 AWS 上的安全设置是正确的。希望你们中的一些人能指出我正确的方向。
我已经从现有的 RDS PostgreSQL 数据库恢复了一个快照。现在我想重命名该数据库,但在 AWS 文档中的任何地方都找不到如何执行此操作。
我也找不到如何使用主密码(我希望让我这样做)。
我有一个在 AWS 中启动的 RDS 实例,运行 SQL Server 2012。我能够正常登录和创建新数据库(通过 SSMS 和 sqlcmd.exe)。
我面临的问题是,由于在 RDS 创建过程中没有足够的“godmode”帐户设置权限,我无法为我的每个应用程序数据库创建用户。
我在此 RDS 实例上有 > 5 个应用程序及其数据库,并希望对其进行设置,以便每个应用程序都有自己的登录名,并且仅是其自己数据库的用户。
我可以创建登录名,但我不能将该登录名作为用户分配给数据库。这是不能做的事吗?我知道 RDS 有限制,但这似乎应该是可能的。我的用例不可能那么独特!
我正在尝试像这样设置用户:
DECLARE @Username nvarchar(255) = 'test1';
DECLARE @Password nvarchar(255) = 'sUp3rS3crEt';
USE [Application1]
IF NOT EXISTS
(SELECT name
FROM master.sys.server_principals
WHERE name = @Username)
BEGIN
EXEC sp_addlogin @Username, @Password
END
BEGIN
EXEC sp_adduser @Username, @Username, 'db_owner'
END
Run Code Online (Sandbox Code Playgroud)
在 sp_adduser 上失败
Msg 15247, Level 16, State 1, Procedure sp_adduser, Line 35 [Batch Start Line 0]
User does not …Run Code Online (Sandbox Code Playgroud) 我不知道(也不可能找到例子)的连接字符串传递给sqlalchemy的create_engine(),让我连接到mysql数据库Amazon Web Service RDS。文档很简单,但我绊倒了。文档状态:
mysql+mysqldb://<user>:<password>@<host>[:<port>]/<dbname>
Run Code Online (Sandbox Code Playgroud)
让我们说:
hellothereComp<'/"/>{}]:["licatedsandbox.cbaspyqqzfab.us-west-2.rds.amazonaws.com3306nameofdatabase这有什么问题?
conn_str = 'mysql+mysqldb://<hellothere>:<Comp<'/"/>{}]:["licated>@<sandbox.cbaspyqqzfab.us-west-2.rds.amazonaws.com>[:<3306>]/<nameofdatabase>'
engine = sqlalchemy.create_engine(conn_str, echo=True)
Run Code Online (Sandbox Code Playgroud)
错误信息
Traceback (most recent call last): File
"C:/GitHub/blah/data/__init__.py", line 16, in <module> main() File
"C:/GitHub/blah/data/__init__.py", line 12, in main init_db() File
"C:/GitHub/blah/data/__init__.py", line 8, in init_db
DbSessionFactory.global_init(db_file=dbfilepath) File
"C:\GitHub\blah\data\dbsession.py", line 25, in global_init engine =
sqlalchemy.create_engine(conn_str, echo=True) File
"C:\Python\Anaconda3\envs\CE\lib\site-packages\sqlalchemy\engine\__init__.py",
line 387, in create_engine return strategy.create(*args, **kwargs)
File
"C:\Python\Anaconda3\envs\CE\lib\site-packages\sqlalchemy\engine\strategies.py", …Run Code Online (Sandbox Code Playgroud) 我的问题有两个部分:
关于第 (1) 部分:如果我理解正确,所有实例修改都是在备用服务器上进行的,然后 AWS 通过在主服务器更新时将 CNAME 翻转到备用服务器来进行故障转移,所以如果我要创建任何类型的实例修改并选择“立即应用”,它应该会导致故障转移,对吗?
关于第 (2) 部分:我正在专门寻找一种监视 Oracle RDS 实例故障转移的方法,无论是通过 lambda 函数、bash 脚本还是其他方式。据我所知,即使我允许所有 ICMP 流量通过安全组,也不可能对 RDS 使用 ping。我可以使用 telnet 或 SQL 客户端毫无问题地进行连接。不过,我想要的是某种方式,例如在故障转移期间定期 ping 数据库以查看与连接字符串关联的 IP 何时切换以及需要多长时间。有什么建议?
我们在 West-1(加利福尼亚北部)有几个 MySQL RDS 实例,并希望使用 QuickSight 创建一些报告。第一个问题是 QuickSight 仅在 West-2(俄勒冈)可用并且没有显示我们的 RDS,所以我在 West-2 中创建了一个只读副本数据库。
我仍然无法连接到我的实例,并显示以下错误:连接失败。确保您的实例可从相应的 Amazon QuickSight IP 地址范围访问。
我已经在入站规则中创建了一个允许 IP 54.70.204.128/27 的安全组并将其应用于我的实例。最终允许我连接到实例的是将实例的“公开可用”字段设置为“是”。
但是,我的老板更喜欢它保持“否”,我们还能够使用 MySQL SSH 连接方法通过 DOMO 连接到非公共实例。
是否可以在不将“公共可访问”设置为“是”的情况下使 QuickSight 和 RDS 之间的连接正常工作?
mysql database-connection amazon-web-services amazon-rds amazon-quicksight
如果要自己动手,在 AWS RDS 管理控制台中按“启动数据库实例”就相当于启动服务器守护程序。
控制台还具有将“安全组”关联到数据库实例的设置。
安全组本身具有“入站”和“出站”流量的设置。
“入站”流量意味着来自某处某个客户端的对服务器的请求。
“出站”流量是什么意思?这些仅仅是数据库服务器的响应吗?在这种情况下,入站和出站始终具有相同的端口范围和 IP 地址是否有意义?
与先前问题的关系:
此 RDS 实例将与 ElasticBeanstalk 实例耦合,而不是VPC。
;我正在尝试将使用分号而不是逗号作为分隔符的CSV 文件从 S3 导入到 AWS RDS Postgres 表。
SELECT aws_s3.table_import_from_s3 ('tmp_foo','','(format csv, delimiter '','', header)', 'my-bucket', 'path/file.csv','eu-west-1');
Run Code Online (Sandbox Code Playgroud)
这会失败并出现错误
ERROR: Semicolon is not allowed in options
Run Code Online (Sandbox Code Playgroud)
同样的事情使用delimiter '',''效果很好。
如何转义分号以使其起作用?例如delimiter ''\;''不起作用。
从 S3 导入是最新 RDS Postgres 版本中提供的 AWS 扩展: https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/PostgreSQL.Procedural.Importing.html
我正在使用 Postgres Aurora 11.6。
amazon-rds ×10
mysql ×4
postgresql ×3
amazon-s3 ×1
csv ×1
deadlock ×1
failover ×1
monitoring ×1
python ×1
python-3.x ×1
sql ×1
sqlalchemy ×1
t-sql ×1
terraform ×1
timeout ×1