一分钟搞定!CentOS 7.9上用Ansible自动化部署SQL Server 2019

不熟悉整个流程的朋友可以先看之前的部署文章,手动部署一遍

一步步教你在CentOS 7.9上安装SQL Server 2019

前言

这套Ansible脚本属于红帽官方出品,是一套mssql的自动化运维脚本,能够实现mssql的单实例部署和AlwaysOn集群的部署,它会自动判断当前操作系统的类型和版本,查找适合当前Linux系统安装的SQL Server版本, 然后更新相应的yum仓库,自动下载SQL Server安装包然后安装。

linux-system-roles脚本支持SQL Server 2017到SQL Server 2022。

因为这次部署的操作系统版本是CentOS7.9,所以只能安装的SQL Server最高版本是 SQL Server 2019,Ansible会自动安装好SQL Server 2019。

使用Ansible 2.9版本安装SQL Server

  • 0、查看当前的操作系统版本

可以看到当前版本是CentOS 7.9

[root@2_mssql_68 ~]# cat /etc/redhat-release 

CentOS Linux release 7.9.2009 (Core)
  • 1、确保控制机已经安装好Ansible

Ansible版本是2.9,Python版本是2.7.5,即使是旧机器,这套ansible脚本也可以使用!

[root@2_mssqll_68 ~]# ansible --version
ansible 2.9.27
  config file = /etc/ansible/ansible.cfg
  configured module search path = [u'/root/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python2.7/site-packages/ansible
  executable location = /usr/bin/ansible
  python version = 2.7.5 (default, Jun 28 2022, 15:30:04) [GCC 4.8.5 20150623 (Red Hat 4.8.5-44)]
  • 2、创建主机文件inventory,因为在本机安装,直接使用local
echo "[sqlgroup]" > myhosts
echo localhost ansible_connection=local >> myhosts [root@2_mssqll_68 ~]# cat myhosts
[sqlgroup]
localhost ansible_connection=local
  • 3、 测试被控机器的连通性
[root@2_mssqll_68 ~]# ansible all -i myhosts -m ping
localhost | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/libexec/platform-python"
    },
    "changed": false,
    "ping": "pong"
}
  • 4、安装ansible角色

需要安装红帽官方的rhel-system-roles 角色

yum install -y ansible-collection-microsoft-sql rhel-system-roles
  • 5、编辑playbook文件mssql.yml

需要修改mssql.yml文件里的mssql_password和mssql_edition参数,实际上,还有其他的参数,参数比较多,文末会放出各个参数含义的文档,如果没有开启防火墙服务,那么需要去掉防火墙的那个play

mssql_edition的值有:Enterprise、Standard、Web、Developer、Express、Evaluation,或一个格式为 #####-#####-#####-#####-##### 的数据库产品密钥,其中 # 是数字或字母。如果要指定版本,可以使用参数mssql_version: 2019

vi mssql.yml
---
- hosts: localhost
vars:
mssql_accept_microsoft_odbc_driver_17_for_sql_server_eula: true
mssql_accept_microsoft_cli_utilities_for_sql_server_eula: true
mssql_accept_microsoft_sql_server_standard_eula: true
mssql_password: 'RedH@123!'
mssql_edition: 'Developer'
mssql_enable_sql_agent: true
mssql_install_fts: false
mssql_install_powershell: true
mssql_tune_for_fua_storage: true
mssql_datadir: "/data/mssql/1433/database"
mssql_logdir: "/data/mssql/1433/database" roles:
- microsoft.sql.server - hosts: localhost
tasks:
- firewalld:
service: mssql
permanent: yes
immediate: yes
state: enabled
  • 6、运行Playbook文件

在当前路径下执行,大概运行1分钟就安装完成,大概有30个任务tasks

[root@2_mssqll_68 ~]# ansible-playbook -vvv -i myhosts  mssql.yml 
TASK [microsoft.sql.server : Configure the forceencryption setting] ******************************
task path: /usr/share/ansible/collections/ansible_collections/microsoft/sql/roles/server/tasks/main.yml:472
skipping: [localhost] => {
    "changed": false, 
    "skip_reason": "Conditional result was False"
}
META: ran handlers
META: ran handlers PLAY RECAP ***************************************************************************************
localhost                  : ok=30   changed=0    unreachable=0    failed=0    skipped=41   rescued=0    ignored=0   
  • 7、查看SQL Server服务是否在运行

看到Active: active (running) 字样就表示SQL Server服务已经启动,安装成功

[root@2_mssqll_68 ~]# systemctl status mssql-server.service --no-pager
● mssql-server.service - Microsoft SQL Server Database Engine
   Loaded: loaded (/usr/lib/systemd/system/mssql-server.service; enabled; vendor preset: disabled)
   Active: active (running) since Sun 2025-02-09 11:36:06 CST; 4s ago
     Docs: https://docs.microsoft.com/en-us/sql/linux
 Main PID: 999 (sqlservr)
   CGroup: /system.slice/mssql-server.service
           └─999 /opt/mssql/bin/sqlservr Feb 09 11:36:06 2_mysql_68 systemd[1]: Started Microsoft SQL Server Database Engine.
  • 8、连接数据库并查看当前数据库版本

Ansible自动识别到当前操作系统版本是centos7.X,然后安装适配当前系统版本的最高SQL Server版本SQL Server 2019

/opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P "RedH@123!"  -Q "SELECT @@VERSION"

  • 9、查看SQL Server实例的数据目录结构
  • 系统库和tempdb数据库都放在同一个目录下,如果是生产环境需要注意分开,/var/opt/mssql/secrets目录是用来存放证书文件,特别是在搭建AlwaysOn集群的时候
[root@2_mssqll_68 ~]#  tree /var/opt/mssql/
/var/opt/mssql/
├── data
│   ├── Entropy.bin
│   ├── master.mdf
│   ├── mastlog.ldf
│   ├── modellog.ldf
│   ├── model.mdf
│   ├── model_msdbdata.mdf
│   ├── model_msdblog.ldf
│   ├── model_replicatedmaster.ldf
│   ├── model_replicatedmaster.mdf
│   ├── msdbdata.mdf
│   ├── msdblog.ldf
│   ├── tempdb2.ndf
│   ├── tempdb3.ndf
│   ├── tempdb4.ndf
│   ├── tempdb.mdf
│   └── templog.ldf
├── log
│   ├── errorlog
│   ├── errorlog.1
│   ├── errorlog.2
│   ├── errorlog.3
│   ├── errorlog.4
│   ├── HkEngineEventFile_0_133835034943490000.xel
│   ├── HkEngineEventFile_0_133835034997660000.xel
│   ├── HkEngineEventFile_0_133835048280420000.xel
│   ├── HkEngineEventFile_0_133835457796360000.xel
│   ├── log_1.trc
│   ├── log_2.trc
│   ├── log_3.trc
│   ├── log.trc
│   ├── mssql-conf
│   │   └── mssql-conf.log
│   ├── sqlagent.1
│   ├── sqlagent.out
│   ├── sqlagentstartup.log
│   ├── system_health_0_133835034957910000.xel
│   ├── system_health_0_133835035001390000.xel
│   ├── system_health_0_133835048284420000.xel
│   └── system_health_0_133835457809610000.xel
├── mssql.conf
└── secrets
    └── machine-key 4 directories, 39 files

Playbook脚本中用到的参数解释和Playbook脚本源代码地址

需要解释的是,这套脚本可以完成mssql的单实例安装和AlwaysOn集群的部署,可以说红帽官方真的非常贴心!编写好Playbook脚本五分钟就可以部署好3个节点的AlwaysOn集群!

第一个网址有AlwaysOn搭建示例参考

  • https://github.com/linux-system-roles/mssql

  • https://github.com/redhat-cop/sqlserver-coi/tree/master/ansible

本文版权归作者所有,未经作者同意不得转载。

一分钟搞定!CentOS 7.9上用Ansible自动化部署SQL Server 2019的更多相关文章

  1. CENTOS --5分钟搞定Nginx安装的教程

    1. 安装gcc(centos 7之后一般已自带,可以在第6步失败后再安装) yum install gcc gcc-c++ 2. 安装pcre yum install -y pcre pcre-de ...

  2. JS组件系列——又一款MVVM组件:Vue(一:30分钟搞定前端增删改查)

    前言:关于Vue框架,好几个月之前就听说过,了解一项新技术之后,总是处于观望状态,一直在犹豫要不要系统学习下.正好最近有点空,就去官网了解了下,看上去还不错的一个组件,就抽空研究了下.最近园子里vue ...

  3. 一分钟搞定AlloyTouch图片轮播

      一分钟搞定AlloyTouch图片轮播 轮播图也涉及到触摸和触摸反馈,同时,AlloyTouch可以把惯性运动打开或者关闭,并且设置min和max为运动区域,超出会自动回弹.除了一般的竖向滚动,A ...

  4. 五分钟搞定Go.js

    五分钟搞定Go.js  1.基于html5~因为Go.js是一个依赖于HTML5特性的JavaScript库,所以需要确保您的页面声明它是一个HTML5文档,当然需要加载库 <!DOCTYPE ...

  5. Spring Boot 返回 XML 数据,一分钟搞定!

    Spring Boot 返回 XML 数据,前提必须已经搭建了 Spring Boot 项目,所以这一块代码就不贴了,可以点击查看之前分享的 Spring Boot 返回 JSON 数据,一分钟搞定! ...

  6. zookeeper-架构设计与角色分工-《每日五分钟搞定大数据》

    本篇文章阅读时间5分钟左右 点击看<每日五分钟搞定大数据>完整思维导图   zookeeper作为一个分布式协调系统,很多组件都会依赖它,那么此时它的可用性就非常重要了,那么保证可用性的同 ...

  7. zookeeper核心-zab协议-《每日五分钟搞定大数据》

    上篇文章<paxos与一致性>说到zab是在paxos的基础上做了重要的改造,解决了一系列的问题,这一篇我们就来说下这个zab. zab协议的全称是ZooKeeper Atomic Bro ...

  8. windows+mysql集群搭建-三分钟搞定集群

    注:本文来源:  陈晓婵   <  windows+mysql集群搭建-三分钟搞定集群   > 一:mysql集群搭建教程-基础篇 计算机一级考试系统要用集群,目标是把集群搭建起来,保证一 ...

  9. 转载-30分钟搞定后台登录界面(103个后台PSD源文件、素材网站)

    原文:30分钟搞定后台登录界面(103个后台PSD源文件.素材网站)   目录 一.界面预览 二.PSD源文件预览 三.工具分享 四.资源说明 五.素材下载网站 六.下载 去年八月时要做一个OA系统为 ...

  10. 【转】让你10分钟搞定Mac--最简单快速的虚拟安装

    文章出处:让你10分钟搞定Mac--最简单快速的虚拟安装http://bbs.itheima.com/thread-106643-1-1.html (出处: 黑马程序员训练营论坛) 首先说明一下. 第 ...

随机推荐

  1. Python之pandas读取Excel

    #! -*- coding utf-8 -*- """ 模块功能:读取当前文件夹下的Source里的Excel文件,显示其相关信息 说明:默认把Excel的第一行当做列名 ...

  2. 交易系统:电商、O2O、线下门店购物流程详解

    大家好,我是汤师爷~ 新零售业务涉及多个销售渠道,每个渠道都有其独特的业务特点,需要相应的营销方式.运营策略和供应链管理. 主要销售渠道包括:实体门店(包括直营连锁店.加盟门店).电商平台销售(如淘宝 ...

  3. Java 动态设置 JVM 参数的方法

    Java虚拟机(JVM)在运行Java应用时,其性能调优和资源管理至关重要.虽然许多JVM参数在启动时通过命令行设置,但在应用运行期间动态调整某些参数也是可行的.通过动态设置JVM参数,开发者可以更有 ...

  4. 教你自创工作流,赋予AI助理个性化推荐超能力

    之前,我们已经完成了工作流的基本流程和整体框架设计,接下来的任务就是进入实际操作和实现阶段.如果有同学对工作流的整体结构还不够熟悉,可以先参考一下这篇文章,帮助你更好地理解和掌握工作流的各个部分: 本 ...

  5. 【矩阵压缩】codeforces 1980 E. Permutation of Rows and Columns

    题目链接 https://codeforces.com/problemset/problem/1980/E 题意 共输入\(T\)组测试用例,每组测试用例第一行输入两个整数\(n, m\),分别代表输 ...

  6. 内网穿透之http代理服务器

    在公网访问内网http服务可以用内网穿透工具,例如frp和nps等优秀工具.但我发现这类工具会在服务器启动不止一个端口,对于有些网络审查来说很容易发现在进行内网穿透.因此我想是否可以只在服务器启动一个 ...

  7. Qt开发经验小技巧256-260

    默认QDialog窗体右下角有个拉伸尺寸的手柄,通过它可以对窗体拉伸大小,这个控件很容易被遗忘但是又经常可以看到,他的名字叫QSizeGrip,可以通过setSizeGripEnabled来启用或者禁 ...

  8. Qt数据库应用22-文件编码格式识别

    一.前言 在做数据导入导出的过程中,如果应用场景多了,相信各位都会遇到一个问题就是文件编码的问题,有些文件是ANSI编码,有些是utf8编码,有些又是utf8带bom编码,不同的文件编码如果都用同一种 ...

  9. Qt编写安防视频监控系统64-子模块8飞行轨迹

    一.前言 飞行轨迹子模块是专为无人机打造的模块,也可以作为机器人移动模块,通过传入一个经纬度值,实时更新设备的位置和绘制轨迹,模块已经内置了接口进行处理,支持不同设备不同的轨迹颜色(这个功能好). 这 ...

  10. OpenCV4.1.0编译时提示“CV_BGR2GRAY”: 未声明的标识符

    OpenCV版本为4.1.0 使用CV_BGR2GRAY时报错: "CV_BGR2GRAY": 未声明的标识符 解决方法一:添加头文件:#include <opencv2/i ...