配置Always On AG

2023-11-05 12:40
文章标签 配置 always ag

本文主要是介绍配置Always On AG,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1、准备测试环境的服务器

在 Always On AG 中如果需要自动 Failover 至少需要集群中有 3 台服务器,但是我只是测试功能,因此只使用了两台服务器。并且本文不涉及任何 Pacemaker 的设置,完全是数据库层面的 AG 配置。

 

我使用的是 Google Compute Engine 的2台 VM,最低配的 1vCPU,3.75GB 内存。

 

 

 

 

如果要通过远程客户端配置 SQL Server,则需要在 VPC network 的 Firewall rules 中将 1433 端口开放,如果是在虚拟机本地的 sqlcmd 中操作,则无需配置。

2操作系统:CentOS7

cat /etc/centos-release

CentOS Linux release 7.4.1708 (Core)

 

在 /etc/hosts 中配置双方服务器的名称和IP地址的解析,以保证两台机器可以通过服务器名称互相访问。

重要!服务器主机的 hostname 必须少于等于 15 个字符,否则在配置过程会出现各种莫名其妙的权限报错。

3、 启用AlwaysOn AG功能

执行范围:在所有机器上执行

安装完的 SQL Server,默认是没有启用 AlwaysOn AG 功能的,需要手工开启,开启的方法很简单。开启该功能需要重启数据库实例。

 

/opt/mssql/bin/mssql-conf set hadr.hadrenabled  1

systemctl restart mssql-server

 

4、启用 AlwaysOn_health 事件

执行范围:在所有机器上执行

这一步不是必须的。

ALTER EVENT SESSION  AlwaysOn_health ON SERVER WITH (STARTUP_STATE=ON);

 

 5、 创建数据库复制的用户



执行范围:在所有机器上执行



CREATE LOGIN dbm_login WITH PASSWORD = ‘YourPassword’;

CREATE USER dbm_user FOR LOGIN dbm_login;

7

 

  创建认证



执行范围:在 Primary Replica 机器上执行



CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'YourPassword';

CREATE CERTIFICATE dbm_certificate WITH SUBJECT = 'dbm';

BACKUP CERTIFICATE dbm_certificate

   TO FILE = '/var/opt/mssql/data/dbm_certificate.cer'

   WITH PRIVATE KEY (

   FILE = '/var/opt/mssql/data/dbm_certificate.pvk',

   ENCRYPTION BY PASSWORD = 'YourPassword'

   );



将生成的 dbm_certificate.cer 和 dbm_certificate.pvk 文件 scp 到另外一台服务器的相同位置并修改属主,这台服务器就是 Secondary Replica。

 

cd /var/opt/mssql/data

chown mssql:mssql dbm_certificate.*



然后在这台服务器上导入认证。

 

执行范围:在 Secondary Replica 机器上执行

 

CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'YourPassword';

CREATE CERTIFICATE dbm_certificate

AUTHORIZATION dbm_user

FROM FILE = '/var/opt/mssql/data/dbm_certificate.cer'

WITH PRIVATE KEY (

FILE = '/var/opt/mssql/data/dbm_certificate.pvk',

DECRYPTION BY PASSWORD = 'YourPassword'

);

8创建数据库复制的 Endpoint

 

执行范围:在所有机器上执行

 

CREATE ENDPOINT [Hadr_endpoint]

AS TCP (LISTENER_PORT = 5022)

FOR DATA_MIRRORING (

ROLE = ALL,

AUTHENTICATION = CERTIFICATE dbm_certificate,

ENCRYPTION = REQUIRED ALGORITHM AES

);

ALTER ENDPOINT [Hadr_endpoint] STATE = STARTED;

use master

GRANT CONNECT ON ENDPOINT::[Hadr_endpoint] TO [dbm_login];

9 创建 Availability Groups

 

创建 Availability Groups

执行范围:在 Primary Replica 机器上执行

CREATE AVAILABILITY GROUP [ag1]

   WITH (CLUSTER_TYPE = EXTERNAL)

   FOR REPLICA ON

   N'centos1' WITH (

  ENDPOINT_URL = N'tcp://centos1:5022',

  AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,

  FAILOVER_MODE = EXTERNAL,

  SEEDING_MODE = AUTOMATIC

   ),

   N'centos2' WITH (

  ENDPOINT_URL = N'tcp://centos2:5022',

  AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,

  FAILOVER_MODE = EXTERNAL,

  SEEDING_MODE = AUTOMATIC

   );

 

ALTER AVAILABILITY GROUP [ag1] GRANT CREATE ANY DATABASE;



在主库上创建了 AG 之后,备库需要加入 AG。

 

执行范围:在 Secondary Replica 机器上执行

 

ALTER AVAILABILITY GROUP [ag1] JOIN WITH (CLUSTER_TYPE = EXTERNAL);

ALTER AVAILABILITY GROUP [ag1] GRANT CREATE ANY DATABASE;

10

 

  将数据库加入 AG

 



这里新建一个数据库 db1,将它加入到 ag1 中。由于上面设置的 SEEDING_MODE 参数为 AUTOMATIC,因此这个 db1 数据库将会在备库实例中自动创建,后续对于该库进行的任何操作也会自动复制到备库中。

 

执行范围:在 Primary Replica 机器上执行

 

CREATE DATABASE [db1];

ALTER DATABASE [db1] SET RECOVERY FULL;

BACKUP DATABASE [db1]

   TO DISK = N'/var/opt/mssql/data/db1.bak';

 

ALTER AVAILABILITY GROUP [ag1] ADD DATABASE [db1];

11

 

  允许 Secondary Replica 可以被只读访问



在以上的创建过程中创建出来的 AG 中的备库是不允许被访问的,如果要访问将会遇到以下错误。

 

The target database, ‘db1’, is participating in an availability group and is currently not accessible for queries. Either data movement is suspended or the availability replica is not enabled for read access. To allow read-only access to this and other databases in the availability group, enable read access to one or more secondary availability replicas in the group. For more information, see the ALTER AVAILABILITY GROUP statement in SQL Server Books Online.

 

执行范围:在 Primary Replica 机器上执行,立刻生效。

 

use master

ALTER AVAILABILITY GROUP ag1

   MODIFY REPLICA ON

   N'centos2' WITH (

  SECONDARY_ROLE (ALLOW_CONNECTIONS = ALL )

   );

12测试



在主库中随便创建一张新表,再插入几条记录。

 

1> use db1

2> select * into t_test from sys.databases;

3> insert into t_test select * from t_test;

4> GO

Changed database context to 'db1'.

 

(5 rows affected)

 

(5 rows affected)



在备库中查询,这张表已经复制成功。

 

1> use db1

2> select count(*) from t_test;

3> GO

Changed database context to 'db1'.

 

-------

 10

 

(1 rows affected)



如果在备库中尝试更新数据,将会遇到以下错误。

 

1> delete from t_test;

2> GO

Msg 3906, Level 16, State 2, Server centos2, Line 1

Failed to update database "db1" because the database is read-only.

13  监控 AG 状态

 

通过以下这些视图可以监控 AG 中各个部分的状态。

 

group的监控



select * from sys.availability_groups;

select * from sys.availability_groups_cluster;

select * from sys.dm_hadr_availability_group_states;



replica 的监控

 

select * from sys.availability_replicas;

select * from sys.dm_hadr_availability_replica_states;

select * from sys.dm_hadr_availability_replica_cluster_nodes;

select * from sys.dm_hadr_availability_replica_cluster_states;



在 AG 中的 database 的监控

 

select * from sys.availability_databases_cluster;

select * from sys.dm_hadr_database_replica_states;

select * from sys.dm_hadr_database_replica_cluster_states;

select name,database_id,replica_id,group_database_id from sys.databases;



参考文档

本文配置步骤的参考文档为:

 

https://docs.microsoft.com/en-us/sql/linux/sql-server-linux-availability-group-configure-ha?view=sql-server-linux-2017

 

转载于:https://www.cnblogs.com/guarderming/p/10375570.html

这篇关于配置Always On AG的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/349930

相关文章

SpringBoot+MyBatis-Flex配置ProxySQL的实现步骤

《SpringBoot+MyBatis-Flex配置ProxySQL的实现步骤》本文主要介绍了SpringBoot+MyBatis-Flex配置ProxySQL的实现步骤,文中通过示例代码介绍的非常详... 目录 目标 步骤 1:确保 ProxySQL 和 mysql 主从同步已正确配置ProxySQL 的

Spring Boot整合log4j2日志配置的详细教程

《SpringBoot整合log4j2日志配置的详细教程》:本文主要介绍SpringBoot项目中整合Log4j2日志框架的步骤和配置,包括常用日志框架的比较、配置参数介绍、Log4j2配置详解... 目录前言一、常用日志框架二、配置参数介绍1. 日志级别2. 输出形式3. 日志格式3.1 PatternL

配置springboot项目动静分离打包分离lib方式

《配置springboot项目动静分离打包分离lib方式》本文介绍了如何将SpringBoot工程中的静态资源和配置文件分离出来,以减少jar包大小,方便修改配置文件,通过在jar包同级目录创建co... 目录前言1、分离配置文件原理2、pom文件配置3、使用package命令打包4、总结前言默认情况下,

VScode连接远程Linux服务器环境配置图文教程

《VScode连接远程Linux服务器环境配置图文教程》:本文主要介绍如何安装和配置VSCode,包括安装步骤、环境配置(如汉化包、远程SSH连接)、语言包安装(如C/C++插件)等,文中给出了详... 目录一、安装vscode二、环境配置1.中文汉化包2.安装remote-ssh,用于远程连接2.1安装2

Redis多种内存淘汰策略及配置技巧分享

《Redis多种内存淘汰策略及配置技巧分享》本文介绍了Redis内存满时的淘汰机制,包括内存淘汰机制的概念,Redis提供的8种淘汰策略(如noeviction、volatile-lru等)及其适用场... 目录前言一、什么是 Redis 的内存淘汰机制?二、Redis 内存淘汰策略1. pythonnoe

windos server2022的配置故障转移服务的图文教程

《windosserver2022的配置故障转移服务的图文教程》本文主要介绍了windosserver2022的配置故障转移服务的图文教程,以确保服务和应用程序的连续性和可用性,文中通过图文介绍的非... 目录准备环境:步骤故障转移群集是 Windows Server 2022 中提供的一种功能,用于在多个

windos server2022里的DFS配置的实现

《windosserver2022里的DFS配置的实现》DFS是WindowsServer操作系统提供的一种功能,用于在多台服务器上集中管理共享文件夹和文件的分布式存储解决方案,本文就来介绍一下wi... 目录什么是DFS?优势:应用场景:DFS配置步骤什么是DFS?DFS指的是分布式文件系统(Distr

关于Maven中pom.xml文件配置详解

《关于Maven中pom.xml文件配置详解》pom.xml是Maven项目的核心配置文件,它描述了项目的结构、依赖关系、构建配置等信息,通过合理配置pom.xml,可以提高项目的可维护性和构建效率... 目录1. POM文件的基本结构1.1 项目基本信息2. 项目属性2.1 引用属性3. 项目依赖4. 构

龙蜥操作系统Anolis OS-23.x安装配置图解教程(保姆级)

《龙蜥操作系统AnolisOS-23.x安装配置图解教程(保姆级)》:本文主要介绍了安装和配置AnolisOS23.2系统,包括分区、软件选择、设置root密码、网络配置、主机名设置和禁用SELinux的步骤,详细内容请阅读本文,希望能对你有所帮助... ‌AnolisOS‌是由阿里云推出的开源操作系统,旨

mysql-8.0.30压缩包版安装和配置MySQL环境过程

《mysql-8.0.30压缩包版安装和配置MySQL环境过程》该文章介绍了如何在Windows系统中下载、安装和配置MySQL数据库,包括下载地址、解压文件、创建和配置my.ini文件、设置环境变量... 目录压缩包安装配置下载配置环境变量下载和初始化总结压缩包安装配置下载下载地址:https://d