+++ title = "Always-on AG configurations" date = 2019-03-21T20:40:20+02:00 weight = 3 chapter = false pre = "3. " +++ ## Create a test DB and Availabilit Group ## - At this stage we can create a test DB to be included in the AG. Do this on node 1: ```SQL USE MASTER GO CREATE DATABASE TestDB GO CREATE TABLE dbo.Employee (EmployeeID int PRIMARY KEY CLUSTERED); GO INSERT INTO dbo.Employee (EmployeeID) Values (1) INSERT INTO dbo.Employee (EmployeeID) Values (2) INSERT INTO dbo.Employee (EmployeeID) Values (3) GO BACKUP DATABASE TestDB TO DISK = '/var/opt/mssql/data/TestDB.bak' WITH FORMAT; GO ``` - Now we can create an AG and add our test DB to it. Do this on node 1: ```SQL USE MASTER CREATE AVAILABILITY GROUP TestAG WITH (BASIC, CLUSTER_TYPE = EXTERNAL) FOR DATABASE TestDB REPLICA ON N'ip-10-0-1-233' WITH ( ENDPOINT_URL = N'TCP://10.0.1.233:5022', FAILOVER_MODE = EXTERNAL, AVAILABILITY_MODE = SYNCHRONOUS_COMMIT), N'ip-10-0-3-82' WITH ( ENDPOINT_URL = N'TCP://10.0.3.82:5022', FAILOVER_MODE = EXTERNAL, AVAILABILITY_MODE = SYNCHRONOUS_COMMIT); GO ``` - To join the second node to the AG and initiate seeding, run the following on the second node (like before, use AWS SSM Session Manager): ```SQL ALTER AVAILABILITY GROUP TestAG JOIN WITH (CLUSTER_TYPE = EXTERNAL); GO ALTER AVAILABILITY GROUP TestAG GRANT CREATE ANY DATABASE; GO ``` - SQL Server Always On Basic AG is configured. ## Add SQL Server and AG to Pacemaker ## - Next we have to enable Pacemaker to access SQL Server and AG. Use SSM Session Manager to run following T-SQL statements on node 1: ```SQL CREATE LOGIN PMLogin WITH PASSWORD=''; GO GRANT VIEW SERVER STATE TO PMLogin; GO GRANT ALTER, CONTROL, VIEW DEFINITION ON AVAILABILITY GROUP:: TO PMLogin; GO ``` - Run these commands on both nodes: ```bash sudo echo "PMLogin" | sudo tee /var/opt/mssql/secrets/passwd sudo echo "" | sudo tee /var/opt/mssql/secrets/passwd sudo chmod 400 /var/opt/mssql/secrets/passwd ``` - Finally, we have to create the AG resource in Pacemaker. Run following on node 1: ```bash sudo pcs resource create TestAG ocf:mssql:ag ag_name=TestAG meta failover-timeout=30s master notify=true ```