使用PowerShell管理MySQL Database on Azure
本文主要介绍如何通过PowerShell实现更多MySQL Database on Azure的创建、查看、删除、更改等操作。建议您先阅读利用Azure 资源管理器与 PowerShell 来部署使用MySQL Database on Azure,该文介绍了如何下载使用Azure PowerShell, 如何利用PowerShell来快速创建MySQL Database on Azure数据服务。
在开始之前,请确保已将 Azure PowerShell 准备就绪。
注意:本文主要针对Azure PowerShell 0.9*版本,如果您使用1.0.0+版本,请参考Azure PowerShell 1.0.0以上版本在中国Azure使用的注意事项。将下述命令当中AzureResource改为AzureRmResource运行。
目录
1. 了解 Azure 资源模板和资源组
大多数部署和运行在 Azure 中的应用程序是通过不同云资源类型的组合构建的。Azure资源管理器模板使你能够集中部署和管理这些不同的资源,只需对资源和关联的配置及部署参数进行 JSON 描述即可。
1.1 了解MySQL Database on Azure的资源类型参数信息
目前,MySQL Database on Azure的Json File中定义了六种资源类型: Servers, Databases, Users, Privileges, FirewallRules, Backups。用户可以通过"Get","New","Set","Remove"指令分别对上述六种资源类型进行查看、创建、修改、删除的操作。 您可以通过下载Json模板文件来了解更多MySQL Database on Azure 服务的API参数定义。
2. 创建操作
通过New指令可以创建MySQL服务器、数据库、用户、用户权限、备份、防火墙规则等。
2.1 创建服务器
编辑运行以下命令,定义您的服务器名称、位置、版本等信息来完成服务器创建。
New-AzureRmResource -ResourceType "Microsoft.MySql/servers" -ResourceName testPSH -ApiVersion 2015-09-01 -ResourceGroupName resourcegroupChinaEast -Location chinaeast -SkuObject @{name='MS4'} -PropertyObject @{version = '5.5'}
2.2 创建服务器防火墙原则
编辑运行以下命令,定义您的防火墙原则名称、IP允许列表范围(起始IP地址,终止IP地址)等信息来完成防火墙原则的创建。
New-AzureRmResource -ResourceType "Microsoft.MySql/servers/firewallRules" -ResourceName testPSH/rule1 -ApiVersion 2015-09-01 -PropertyObject @{startIpAddress="0.0.0.0"; endIpAddress="255.255.255.255"} -ResourceGroupName resourcegroupChinaEast
2.3 创建数据库
编辑运行以下命令,定义您的数据库名称、字符集等信息完成数据库创建。
New-AzureRmResource -ResourceType "Microsoft.MySql/servers/databases" -ResourceName testPSH/demodb -ApiVersion 2015-09-01 -ResourceGroupName resourcegroupChinaEast -PropertyObject @{collation='utf8_general_ci'; charset='utf8'}
2.4 创建用户
编辑运行以下命令,定义您的用户名、密码等信息完成数据库创建。
New-AzureRmResource -ResourceType "Microsoft.MySql/servers/users" -ResourceName testPSH/admin -ApiVersion 2015-09-01 -ResourceGroupName resourcegroupChinaEast -PropertyObject @{password='abc123'}
2.5 添加用户权限
编辑运行以下命令,设置数据库读写权限给用户。权限分为"Read"以及"ReadWrite"。
New-AzureRmResource -ResourceType "Microsoft.MySql/servers/databases/privileges" -ResourceName testPSH/demodb/admin -ApiVersion 2015-09-01 -ResourceGroupName resourcegroupChinaEast -PropertyObject @{level='ReadWrite'}
2.6 创建按需备份文件
编辑运行以下命令,制定备份文件名称,创建按需备份文件。
New-AzureRmResource -ResourceType "Microsoft.MySql/servers/backups" -ResourceName testPSH/back1 -ApiVersion 2015-09-01 -ResourceGroupName resourcegroupChinaEast -PropertyObject @{}
2.7 服务器备份恢复 (基于快照的恢复)
编辑运行以下命令,通过制定快照来恢复服务器。 其中,server和region的信息必填,backup不指定的情况下,默认通过最新的快照拷贝进行恢复。
New-AzureRmResource -ResourceType "Microsoft.MySql/servers" -ResourceName testrestore -ApiVersion 2015-09-01 -ResourceGroupName resourcegroupChinaEast -Location ChinaEast -Properties @{creationSource=@{server='testPSH';region='chinaEast' ; backup = 'testpsh1b0a9038-6953-42ad-ac8e-42f73180825b'};version = '5.5'}
3. 查看操作
通过Get指令可以查看当前MySQL服务器、数据库、用户、用户权限、备份、防火墙规则等列表,也可以查看详细参数配置。
3.1 查看服务器列表
备注
** 注意:“在Azure管理门户上创建的实例,按照实例所处的区域分别在默认资源组:Default-MySql-ChinaEast以及Default-MySql-ChinaNorth**
编辑运行以下命令,查看当前所有服务器列表
Get-AzureRmResource -ResourceType "Microsoft.MySql/servers" -ApiVersion 2015-01-01 -ResourceGroupName resourcegroupchinaeast
备注
** 注意:与其他指令不同,查看服务器中的“-ApiVersion 2015-01-01”,指向ARM的API,其他指令中,均为“-ApiVersion 2015-09-01”,指向MySQL的API。**
3.2 查看数据库列表及参数
编辑运行以下命令,查看当前资源组内某个服务器的所有数据库列表:
Get-AzureRmResource -ResourceType "Microsoft.MySql/servers/databases" -Name testPSH -ApiVersion 2015-09-01 -ResourceGroupName resourcegroupChinaEast
3.3 查看用户列表及参数
编辑运行以下命令,查看当前资源组内某个服务器的所有用户列表:
Get-AzureRmResource -ResourceType "Microsoft.MySql/servers/users" -Name testPSH -ApiVersion 2015-09-01 -ResourceGroupName resourcegroupChinaEast
3.4 查看用户权限列表及参数
编辑运行以下命令,查看当前资源组内某个数据库的用户权限:
Get-AzureRmResource -ResourceType "Microsoft.MySql/servers/databases/privileges" -Name testPSH/demodb -ApiVersion 2015-09-01 -ResourceGroupName resourcegroupChinaEast
3.5 查看备份列表及参数
编辑运行以下命令,查看当前资源组内某个服务器的所有备份文件:
Get-AzureRmResource -ResourceType "Microsoft.MySql/servers/backups" -Name testPSH -ApiVersion 2015-09-01 -ResourceGroupName resourcegroupChinaEast
3.6 查看防火墙规则列表及参数
编辑运行以下命令,查看当前资源组内某个服务器的所有防火墙规则:
Get-AzureRmResource -ResourceType "Microsoft.MySql/servers/firewallRules" -Name testPSH -ApiVersion 2015-09-01 -ResourceGroupName resourcegroupChinaEast
3.7 查看慢查询日志
编辑运行以下命令,查看当前资源组内某个服务器的所有慢查询日志:
Get-AzureRmResource -ResourceType "Microsoft.MySql/servers/slowlogs" -Name testPSH -ApiVersion 2015-09-01 -ResourceGroupName resourcegroupChinaEast
4. 修改操作
通过Set指令可以完成账户密码修改,权限修改,某些服务器参数修改等配置工作。
4.1 修改账户密码
编辑运行以下命令,修改某个账户密码。
Set-AzureRmResource -ResourceType "Microsoft.MySql/servers/users" -ResourceName testPSH/admin -ApiVersion 2015-09-01 -ResourceGroupName resourcegroupChinaEast -PropertyObject @{password='abc1234'} -UsePatchSemantics
4.2 修改某个用户的读写权限
编辑运行以下命令,修改某个用户的读写权限。
Set-AzureRmResource -ResourceType "Microsoft.MySql/servers/databases/privileges"
-ResourceName testPSH/demodb/admin -ApiVersion 2015-09-01 -ResourceGroupName resourcegroupChinaEast -PropertyObject @{level='Read'} -UsePatchSemantics
4.3 允许所有Azure服务访问
编辑运行以下命令,允许所有Azure服务访问指定服务器。
Set-AzureRmResource -ResourceType "Microsoft.MySql/servers" -ResourceName testPSH -ApiVersion 2015-09-01 -ResourceGroupName resourcegroupChinaEast -PropertyObject @{allowAzureServices='true'} -UsePatchSemantics
4.4 修改默认每日备份时间
编辑运行以下命令,修改指定服务器的默认日备起始时间(此处为北京时间UTC+8),0-24可选。
Set-AzureRmResource -ResourceType "Microsoft.MySql/servers" -ResourceName testPSH -ApiVersion 2015-09-01 -ResourceGroupName resourcegroupChinaEast -PropertyObject @{dailyBackupTimeInHour='5'} -UsePatchSemantics
4.5 开启慢查询日志
编辑运行以下命令,开启慢查询日志。
Set-AzureRmResource -ResourceType "Microsoft.MySql/servers" -ResourceName testPSH -ApiVersion 2015-09-01 -ResourceGroupName resourcegroupChinaEast -PropertyObject @{options=@{slow_query_log='ON'}} -UsePatchSemantics
4.6 修改防火墙原则
编辑运行以下命令,更改已有的防火墙原则。
Set-AzureRmResource -ResourceType "Microsoft.MySql/servers/firewallRules" -ResourceName testPSH/rule1 -ApiVersion 2015-09-01 -PropertyObject @{startIpAddress="1.1.1.1"} -ResourceGroupName resourcegroupChinaEast -UsePatchSemantics
4.7 修改部分MySQL服务器设置
以wait_timeout参数为例,其他参数详见Json文件,编辑运行以下命令,更改wait_timeout默认值。
Set-AzureRmResource -ResourceType "Microsoft.MySql/servers" -ResourceName testPSH -ApiVersion 2015-09-01 -ResourceGroupName resourcegroupChinaEast -PropertyObject @{options=@{wait_timeout=70}} -UsePatchSemantics
对其他参数的修改,可以参考下面Json文件的定义,参数的有效值范围可参考定制MySQL Database on Azure服务器参数:
"options": {
"type": "object",
"properties": {
"div_precision_increment": {
"type": "integer"
},
"event_scheduler": {
"type": "string"
},
"group_concat_max_len": {
"type": "integer"
},
"innodb_adaptive_hash_index": {
"type": "string"
},
"innodb_lock_wait_timeout": {
"type": "integer"
},
"interactive_timeout": {
"type": "integer"
},
"log_bin_trust_function_creators": {
"type": "string"
},
"log_queries_not_using_indexes": {
"type": "string"
},
"long_query_time": {
"type": "number"
},
"max_allowed_packet": {
"type": "integer"
},
"server-id": {
"type": "integer"
},
"slow_query_log": {
"type": "string"
},
"sql_mode": {
"type": "string"
},
"wait_timeout": {
"type": "integer"
}
}
}
4.8 修改MySQL服务器性能版本
Set-AzureRmResource -ResourceType "Microsoft.MySql/servers" -ResourceName testPSH -ApiVersion 2015-09-01 -ResourceGroupName resourcegroupChinaEast -SkuObject @{name="MS4"} -UsePatchSemantics
5. 删除操作
通过Remove指令可以删除MySQL服务器、数据库、用户、备份、防火墙规则等。
5.1 删除服务器
编辑运行以下命令,删除指定服务器。
Remove-AzureRmResource -ResourceType "Microsoft.MySql/servers" -ResourceName testPSH -ApiVersion 2015-09-01 -ResourceGroupName resourcegroupChinaEast
5.2 删除服务器防火墙原则
编辑运行以下命令,删除指定防火墙。
Remove-AzureRmResource -ResourceType "Microsoft.MySql/servers/firewallRules" -ResourceName testPSH/rule1 -ApiVersion 2015-09-01 -ResourceGroupName resourcegroupChinaEast
5.3 删除数据库
编辑运行以下命令,删除指定数据库。
Remove-AzureRmResource -ResourceType "Microsoft.MySql/servers/databases" -ResourceName testPSH/demodb -ApiVersion 2015-09-01 -ResourceGroupName resourcegroupChinaEast
5.4 删除用户
编辑运行以下命令,删除指定用户。
Remove-AzureRmResource -ResourceType "Microsoft.MySql/servers/users" -ResourceName testPSH/admin -ApiVersion 2015-09-01 -ResourceGroupName resourcegroupChinaEast
5.5 删除备份文件
编辑运行以下命令,删除指定备份文件。
Remove-AzureRmResource -ResourceType "Microsoft.MySql/servers/backups" -ResourceName testPSH/back1 -ApiVersion 2015-09-01 -ResourceGroupName resourcegroupChinaEast
6 其它操作
6.1 Restart a server
编辑运行以下命令,重启当前资源组中的服务器。
Set-AzureRmResource -ResourceType "Microsoft.MySql/servers" -ResourceName testPSH -ApiVersion 2015-09-01 -ResourceGroupName resourcegroupChinaEast -PropertyObject @{setRestart='true'} -UsePatchSemantics
6.2 Download slowlogs
编辑运行以下命令,下载当前资源组中特定服务器的指定慢查询日志。
Set-AzureRmResource -ResourceType "Microsoft.MySql/servers/slowlogs" -ResourceName testPSH/testslowlogname -ApiVersion 2015-09-01 -ResourceGroupName resourcegroupChinaEast -PropertyObject @{copyDestinationContainerUri=”your container uri";CopyDestinationSasToken="your container sasToken"} -UsePatchSemantics
以下为带参数下载慢查询日志的代码示例。
$container = New-AzureStorageContainer -Context $account.Context -Name newcontainer
$sasToken = New-AzureStorageContainerSASToken -Name $container.Name -Permission rcw -StartTime (Get-Date).AddDays(-1) -Protocol HttpsOnly -ExpiryTime (Get-Date).AddDays(1) -Context $account.Context
Set-AzureRmResource -ResourceType "Microsoft.MySql/servers/slowlogs" -ResourceName testPSH/testslowlogname -ApiVersion 2015-09-01 -ResourceGroupName resourcegroupChinaEast -PropertyObject @{copyDestinationContainerUri=”$($container.CloudBlobContainer.Uri.AbsoluteUri)";CopyDestinationSasToken="$sasToken"} -UsePatchSemantics
随着MySQL Database on Azure提供的功能增多,我们也会陆续更新相应的PowerShell指南。