SQL Server 2016 Failover +AlwaysOn 增加数据库到可用性组

SQL Server Failover +AlwaysOn 增加数据库到可用性组
前面几篇文章都已经详细介绍了SQL Server Failover +AlwaysOn 的配置,今天我们主要介绍SQL Server Failover Cluster+AlwaysOn下 增加数据库到可用性组
我们首先需要创建一个数据库及表
SQL Server 2016 Failover  +AlwaysOn 增加数据库到可用性组
数据库名称
HAGroupDB2
SQL Server 2016 Failover  +AlwaysOn 增加数据库到可用性组
创建表
SQL Server 2016 Failover  +AlwaysOn 增加数据库到可用性组
给表插入数据
SQL Server 2016 Failover  +AlwaysOn 增加数据库到可用性组
我们把这个数据库增加到高可用性组中;当前新建的数据库没有同步
SQL Server 2016 Failover  +AlwaysOn 增加数据库到可用性组
我们再高可用性组下增加数据库
SQL Server 2016 Failover  +AlwaysOn 增加数据库到可用性组
提示需要我们完整备份一下
SQL Server 2016 Failover  +AlwaysOn 增加数据库到可用性组
所以我们备份
SQL Server 2016 Failover  +AlwaysOn 增加数据库到可用性组
我们同时也备份事务日志
SQL Server 2016 Failover  +AlwaysOn 增加数据库到可用性组
备份完成后,我们换需要将备份的数据库和事物log在节点3上进行还原
SQL Server 2016 Failover  +AlwaysOn 增加数据库到可用性组
还原数据库
SQL Server 2016 Failover  +AlwaysOn 增加数据库到可用性组
还原时候,选项中必须选择还原状态:RESTORE WITH NORECOVERY
SQL Server 2016 Failover  +AlwaysOn 增加数据库到可用性组
数据库还原完成
SQL Server 2016 Failover  +AlwaysOn 增加数据库到可用性组
我们查看还原状态
SQL Server 2016 Failover  +AlwaysOn 增加数据库到可用性组
再还原事物日志
SQL Server 2016 Failover  +AlwaysOn 增加数据库到可用性组
SQL Server 2016 Failover  +AlwaysOn 增加数据库到可用性组
还原选项---我们选择第二个选项---RESOTRE WITH NORECOVERY
SQL Server 2016 Failover  +AlwaysOn 增加数据库到可用性组
还原完成
SQL Server 2016 Failover  +AlwaysOn 增加数据库到可用性组
我们还原了数据库和事务日志后,数据库的状态未正在还原状态
SQL Server 2016 Failover  +AlwaysOn 增加数据库到可用性组
接下来我们就开始增加数据库到AG中了
SQL Server 2016 Failover  +AlwaysOn 增加数据库到可用性组
我们选择Join only
SQL Server 2016 Failover  +AlwaysOn 增加数据库到可用性组
我们链接已存在的副本服务器
SQL Server 2016 Failover  +AlwaysOn 增加数据库到可用性组
连接成功
SQL Server 2016 Failover  +AlwaysOn 增加数据库到可用性组
加入成功
SQL Server 2016 Failover  +AlwaysOn 增加数据库到可用性组
我们查看AG中的数据库信息
SQL Server 2016 Failover  +AlwaysOn 增加数据库到可用性组
查看集群数据库的状态,也成为了已同步
SQL Server 2016 Failover  +AlwaysOn 增加数据库到可用性组
SQL Server 2016 Failover  +AlwaysOn 增加数据库到可用性组
我们查看面板,一切正常
SQL Server 2016 Failover  +AlwaysOn 增加数据库到可用性组
综合上面的操作,我们可以使用powershell来完成

$DatabaseBackupFile = "\\share\backups\MyDatabase.bak"  
$LogBackupFile = "\\share\backups\MyDatabase.trn"  
$MyAgPrimaryPath = "SQLSERVER:\SQL\PrimaryServer\InstanceName\AvailabilityGroups\MyAg"  
$MyAgSecondaryPath = "SQLSERVER:\SQL\SecondaryServer\InstanceName\AvailabilityGroups\MyAg"  

Backup-SqlDatabase -Database "MyDatabase" -BackupFile $DatabaseBackupFile -ServerInstance "PrimaryServer\InstanceName"  
Backup-SqlDatabase -Database "MyDatabase" -BackupFile $LogBackupFile -ServerInstance "PrimaryServer\InstanceName" -BackupAction 'Log'  

Restore-SqlDatabase -Database "MyDatabase" -BackupFile $DatabaseBackupFile -ServerInstance "SecondaryServer\InstanceName" -NoRecovery  
Restore-SqlDatabase -Database "MyDatabase" -BackupFile $LogBackupFile -ServerInstance "SecondaryServer\InstanceName" -RestoreAction 'Log' -NoRecovery  

Add-SqlAvailabilityDatabase -Path $MyAgPrimaryPath -Database "MyDatabase"  
Add-SqlAvailabilityDatabase -Path $MyAgSecondaryPath -Database "MyDatabase"