SQL Server Failover +AlwaysOn 增加数据库到可用性组
前面几篇文章都已经详细介绍了SQL Server Failover +AlwaysOn 的配置,今天我们主要介绍SQL Server Failover Cluster+AlwaysOn下 增加数据库到可用性组
我们首先需要创建一个数据库及表
SQL Server 2016 Failover +AlwaysOn 增加数据库到可用性组_第1张图片
数据库名称
HAGroupDB2
SQL Server 2016 Failover +AlwaysOn 增加数据库到可用性组_第2张图片
创建表
SQL Server 2016 Failover +AlwaysOn 增加数据库到可用性组_第3张图片
给表插入数据
SQL Server 2016 Failover +AlwaysOn 增加数据库到可用性组_第4张图片
我们把这个数据库增加到高可用性组中;当前新建的数据库没有同步
SQL Server 2016 Failover +AlwaysOn 增加数据库到可用性组_第5张图片
我们再高可用性组下增加数据库
SQL Server 2016 Failover +AlwaysOn 增加数据库到可用性组_第6张图片
提示需要我们完整备份一下
SQL Server 2016 Failover +AlwaysOn 增加数据库到可用性组_第7张图片
所以我们备份
SQL Server 2016 Failover +AlwaysOn 增加数据库到可用性组_第8张图片
我们同时也备份事务日志
SQL Server 2016 Failover +AlwaysOn 增加数据库到可用性组_第9张图片
备份完成后,我们换需要将备份的数据库和事物log在节点3上进行还原
SQL Server 2016 Failover +AlwaysOn 增加数据库到可用性组_第10张图片
还原数据库
SQL Server 2016 Failover +AlwaysOn 增加数据库到可用性组_第11张图片
还原时候,选项中必须选择还原状态:RESTORE WITH NORECOVERY
SQL Server 2016 Failover +AlwaysOn 增加数据库到可用性组_第12张图片
数据库还原完成
SQL Server 2016 Failover +AlwaysOn 增加数据库到可用性组_第13张图片
我们查看还原状态
SQL Server 2016 Failover +AlwaysOn 增加数据库到可用性组_第14张图片
再还原事物日志
SQL Server 2016 Failover +AlwaysOn 增加数据库到可用性组_第15张图片
SQL Server 2016 Failover +AlwaysOn 增加数据库到可用性组_第16张图片
还原选项---我们选择第二个选项---RESOTRE WITH NORECOVERY
SQL Server 2016 Failover +AlwaysOn 增加数据库到可用性组_第17张图片
还原完成
SQL Server 2016 Failover +AlwaysOn 增加数据库到可用性组_第18张图片
我们还原了数据库和事务日志后,数据库的状态未正在还原状态
SQL Server 2016 Failover +AlwaysOn 增加数据库到可用性组_第19张图片
接下来我们就开始增加数据库到AG中了
SQL Server 2016 Failover +AlwaysOn 增加数据库到可用性组_第20张图片
我们选择Join only
SQL Server 2016 Failover +AlwaysOn 增加数据库到可用性组_第21张图片
我们链接已存在的副本服务器
SQL Server 2016 Failover +AlwaysOn 增加数据库到可用性组_第22张图片
连接成功
SQL Server 2016 Failover +AlwaysOn 增加数据库到可用性组_第23张图片
加入成功
SQL Server 2016 Failover +AlwaysOn 增加数据库到可用性组_第24张图片
我们查看AG中的数据库信息
SQL Server 2016 Failover +AlwaysOn 增加数据库到可用性组_第25张图片
查看集群数据库的状态,也成为了已同步
SQL Server 2016 Failover +AlwaysOn 增加数据库到可用性组_第26张图片
SQL Server 2016 Failover +AlwaysOn 增加数据库到可用性组_第27张图片
我们查看面板,一切正常
SQL Server 2016 Failover +AlwaysOn 增加数据库到可用性组_第28张图片
综合上面的操作,我们可以使用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"