问题描述
正在创建一个微服务架构。每个服务都需要自己的数据库,所以他在Azure的资源组中创建了一个SQL Server资源。但是,这些数据库是在服务部署时通过代码创建的。在Azure中,这会导致一个新创建的数据库附加到我的SQL Server上,也就是我想要的结果。但不幸的是,数据库的配置是Azure的默认配置,有32GB的大小,花费的费用比应该多得多。我只需要每个数据库不超过100MB,甚至可以选择“无服务器”计算层级选项以支付更少的费用。所以我创建了一个数据库模板,现在我正在尝试将其分配为SQL Server资源的默认模板,以便每当微服务创建一个新的数据库时使用。这是否可能?
解决方案
请注意以下操作注意版本差异及修改前做好备份。
方案1
使用ARM模板是模板化Azure资源的自然工具。我建议按照以下方式组织你的解决方案:
1. 使用ARM或Bicep模板部署你的数据库,使用Microsoft.Sql/servers/databases
资源类型。这样可以让你控制数据库的大小,或将其包含在不同的层级中等等。
2. 你的微服务在获取新的数据库后,构建出模式,但不影响数据库的大小等等。
以下是一个示例ARM模板的部分代码:
{
"type": "Microsoft.Sql/servers/databases",
"apiVersion": "2019-06-01-preview",
"name": "[concat(parameters('serverName'), '/', parameters('databaseName'))]",
"location": "[parameters('location')]",
"properties": {
"collation": "[parameters('collation')]",
"edition": "[parameters('edition')]",
"maxSizeBytes": "[parameters('maxSizeBytes')]",
"requestedServiceObjectiveName": "[parameters('requestedServiceObjectiveName')]"
},
"dependsOn": [
"[resourceId('Microsoft.Sql/servers', parameters('serverName'))]"
]
}
在上面的示例中,我们定义了一个Microsoft.Sql/servers/databases
资源,它代表了一个数据库。你可以在properties
部分设置数据库的大小、层级等属性。在你的微服务中,你可以使用这个ARM模板来部署新的数据库,并根据需要填充模式。
方案2
使用ARM模板可以更好地控制数据库的大小和配置,但需要一些额外的配置和管理。如果你只是想简单地更改数据库的大小,你也可以直接在Azure门户中手动更改数据库的配置。
另一种方法是直接在Azure门户中手动更改数据库的配置。你可以按照以下步骤进行操作:
1. 登录到Azure门户。
2. 导航到你的SQL Server资源。
3. 在SQL Server资源的概述页面中,找到你想要更改配置的数据库。
4. 点击数据库名称进入数据库的概述页面。
5. 在数据库的概述页面中,找到“配置”部分。
6. 在“配置”部分,你可以更改数据库的大小、层级等配置。
请注意,这种方法更适合简单的更改数据库的大小和配置。如果你需要更复杂的配置和管理,使用ARM模板可能更合适。