我有一个 Windows 2022 作为 RDS 服务器。现在我需要将用户迁移到另一台服务器。即使他指定,也无法仅迁移一名用户。The action can't be completed because the file is open in System
对于 NTUSER.DAT 文件。无法理解出了什么问题。
我有一个脚本,可以从快照创建一个新实例,将其添加到我的安全组,设置主密码并将其设置为公开可用
在该过程的每个阶段我都会使用:
aws rds wait db-instance-available --db-instance-identifier MY_IDENTIFIER
脚本的最后部分需要连接到服务器并对数据运行 sql 脚本,但此时失败并显示:
ERROR 1045 (28000): Access denied for user '[email protected]' (using password: YES)
我知道连接字符串是正确的(一段时间后),我可以使用它并毫无问题地连接!
我阅读了“Amazon RDS 故障排除”指南,可以确认我没有错过任何内容,此外,它在一段延迟后确实连接的事实证明我的设置正确。
该文档指出,状态设置为“正在创建”,然后在每个操作完成时设置为“可用” - 我希望我的等待语句等到这一点。
我想知道“可用”后是否会发起进一步的更改?有人经历过这个吗?
我有一个无法从公共 Internet 访问的 RDS 实例。通过控制台从备份执行还原后,我希望能够连接到数据库并获得一个 psql shell,以便我可以执行基本测试以确认还原成功。
使用 SSM 会话管理器,可以通过 AWS 控制台在 EC2 实例中获取 shell。有没有类似的东西可以让我们在 postgres RDS 中获得一个 shell?或者是否有必要在 VPC 中创建一个 EC2 实例并从那里连接?
我有一个 RDS Aurora MySQL 5.7 和许多连接到它的独立应用程序。其中一些是实时网站,而另一些是批处理服务(主要连接到阅读器)。最近的一个事件导致会话数量激增并让作者下台。我们怀疑这是批处理作业之一。
我的问题是,有没有办法限制每个 MySQL 用户或数据库的资源/连接/会话数量?如果没有,除了为每个应用程序创建一个单独的 RDS 以确保不会删除其余部分之外,还有什么更好的办法吗?
谢谢
我已经阅读了很多关于这个主题的帖子,但没有一篇是关于 AWS RDS MySQL 数据库的。从三天前开始,我在 AWS EC2 实例中运行一个 python 脚本,该脚本在我的 AWS RDS MySQL 数据库中写入行。我必须写 3500 万行,所以我知道这需要一些时间。我定期检查数据库的性能,三天后(今天)我意识到数据库正在变慢。开始时,前 100,000 行仅在 7 分钟内写入(这是我正在使用的行的示例)
0000002178-14-000056 AccountsPayableCurrent us-gaap/2014 20131231 0 USD 266099000.0000
三天后,数据库已经写入了 5,385,662 行,但现在写 100,000 行需要将近 3 个小时。怎么了?
我正在运行的 EC2 实例是 t2.small。如果需要,您可以在此处查看规格:EC2 SPECS 。我正在运行的 RDS 数据库是 db.t2.small。在此处查看规格:RDS SPECS
我将在此处附上一些关于数据库和 EC2 实例性能的图表: Db CPU / Db Memory / Db Write IOPS / Db Write Throughput / EC2 Network in (bytes) / EC2 Network out (bytes)
如果你能帮助我,那就太好了。非常感谢。
编辑 1:我如何插入行? 正如我之前所说,我有一个在 EC2 实例上运行的 python 脚本,该脚本读取文本文件,使用这些值进行一些计算,然后将每个“新”行写入数据库。这是我的一小段代码。 我如何阅读文本文件?
for i in path_list:
notify("Uploading: " + i)
num_path = "path/" + i + "/file.txt"
sub_path = "path/" + i + "/file.txt"
try:
sub_dict = {}
with open(sub_path) as sub_file:
for line in sub_file:
line = line.strip().split("\t")
sub_dict[line[0]] = line[1] # Save cik for every accession number
sub_dict[line[1] + "-report"] = line[25] # Save report type for every CIK
sub_dict[line[1] + "-frecuency"] = line[28] # Save frecuency for every CIK
with open(num_path) as num_file:
for line in num_file:
num_row = line.strip().split("\t")
# Reminder: sometimes in the very old reports, cik and accession number does not match. For this reason I have to write
# the following statement. To save the real cik.
try:
cik = sub_dict[num_row[0]]
except:
cik = num_row[0][0:10]
try: # If there is no value, pass
value = num_row[7]
values_dict = {
'cik': cik,
'accession': num_row[0][10::].replace("-", ""),
'tag': num_row[1],
'value': value,
'valueid': num_row[6],
'date': num_row[4]
}
sql = ("INSERT INTO table name (id, tag, value_num, value_id, endtime, cik, report, period) "
"VALUES ('{}', '{}', '{}', '{}', '{}', '{}', '{}', '{}', '{}', '{}')".format(
values_dict['cik'] + values_dict['accession'] + values_dict['date'] + values_dict['value'].split(".")[0] + "-" + values_dict['tag'],
values_dict['tag'],
float(values_dict['value']),
values_dict['valueid'],
values_dict['date'],
int(values_dict['cik']),
sub_dict[values_dict['cik'] + "-report"],
sub_dict[values_dict['cik'] + "-frecuency"]
))
cursor.execute(sql)
connection.commit()
我知道没有什么except:
可以try
表达的,但这只是脚本的一部分。我认为重要的部分是我如何插入每一行。如果我不需要使用这些值进行计算,我将使用Load Data Infile
将文本文件写入数据库。我只是意识到commit
每次插入一行时可能不是一个好主意。我将尝试在 10,000 行左右之后提交。
我试图让 GPO 仅在用户登录 RDS 场时才应用于用户。具体来说,我需要将他们的 Outlook 缓存设置为更短的时间。
我创建了 RDS GPO 并添加了我的设置。当我将 GPO 仅应用于“RDS 服务器组”和“RDS 用户组”时,我没有看到我应用的任何设置。当我运行 gpresult /scope user /v 时,唯一应用的策略是默认域。
如果我将 RDS GPO 添加到域级别,它工作得很好(应用了合并模式下的环回处理),所有用户都可以在所有机器上获得应用的设置。包括域管理员。这不是我的本意。因此,到目前为止,我将 RDS GPO 仅链接到 RDS OU,以防止管理员帐户和普通工作站出现问题。环回处理仍处于启用状态,但该策略并未按照我想要的方式应用。
RDS 服务器是 2019 标准。
我有一个带有 SQL Server 标准版的 RDS 实例。该数据库用于事务,我想创建只读副本,但我希望新副本是 MySQL/MariaDB 或 PostgreSQL。这是因为我们计划使用直接从我们的数据库中提取数据的报告软件。
我不知道是否有可能实现这一目标。我知道可以用某种语言编写一些应用程序并使用 cron 作业每分钟执行一次,但我正在寻找更有效和优雅的解决方案。
有人有这方面的经验吗?我已经阅读过有关 SymmetricDS 的信息,但有人对这个软件和两个 RDS 实例有经验吗?
设想
您希望使用(至少)Windows Server 2016 在高可用性模式下配置远程桌面服务连接代理。
您已完成并验证所有先决条件:
- 可以通过网络访问数据库(所有防火墙和路由都可以),
- 数据库权限正常(
db_creator
对于包含所有目标 RDS CB 主机的组), - SQL 驱动程序已安装且连接字符串正确。
您可以通过向导开始配置高可用性:
或通过 Powershell:
Set-RDConnectionBrokerHighAvailability `
-ClientAccessName "rds.contoso.com" `
-DatabaseConnectionString "DRIVER=SQL Server Native Client 11.0;SERVER=db.contoso.com;Trusted_Connection=Yes;APP=Remote Desktop Services Connection Broker;DATABASE=rdscbha"
您省略了“存储数据库的文件夹”,或者-DatabaseFilePath
因为它是可选的,并且您的 MSSQL 已经配置了默认存储新数据库的位置。
问题
您在 GUI 上收到以下错误消息:
或 PowerShell 上的以下错误:
连接字符串中指定的数据库 DRIVER=SQL Server Native Client 11.0;SERVER=db.contoso.com;Trusted_Connection=Yes;APP=Remote Desktop Services Connection Broker;DATABASE=master 在 RD 连接代理服务器 RDS-01 中不可用.CONTOSO.COM。确保数据库服务器在网络上可用,SQL Server Native Client 安装在所有 RD 连接代理服务器上,并且 RD 连接代理服务器的计算机帐户是数据库服务器上 RDS 管理服务器组的成员。 + CategoryInfo : NotSpecified: (:) [Write-Error], RDManagementException + FullyQualifiedErrorId : SetRdmsHighAvailability,Microsoft.PowerShell.Commands.WriteErrorCommand + PSComputerName:本地主机
诊断
你真的很确定一切都很好。您可以使用 PowerShell SQL 工具和正确的驱动程序以SYSTEM
用户身份启动 PowerShell,并根据自己的喜好创建数据库。psexec -is powershell
没有什么是错的。
不过,有一点很奇怪。您使用 GUI 向导或 PowerShell 命令检查您的防火墙,您绝对没有看到任何 SQL 服务器连接尝试。
怎么了?