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

梦见你的名字  金牌会员 | 2025-2-13 12:27:09 | 来自手机 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 966|帖子 966|积分 2898

一分钟搞定!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
  1. [root@2_mssql_68 ~]# cat /etc/redhat-release 
  2. CentOS Linux release 7.9.2009 (Core)
复制代码
 


  • 1、确保控制机已经安装好Ansible
Ansible版本是2.9,Python版本是2.7.5,纵然是旧机器,这套ansible脚本也可以利用!
  1. [root@2_mssqll_68 ~]# ansible --version
  2. ansible 2.9.27
  3.   config file = /etc/ansible/ansible.cfg
  4.   configured module search path = [u'/root/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
  5.   ansible python module location = /usr/lib/python2.7/site-packages/ansible
  6.   executable location = /usr/bin/ansible
  7.   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
  1. echo "[sqlgroup]" > myhosts
  2. echo localhost ansible_connection=local >> myhosts
  3. [root@2_mssqll_68 ~]# cat myhosts
  4. [sqlgroup]
  5. localhost ansible_connection=local
复制代码



  • 3、 测试被控机器的连通性
  1. [root@2_mssqll_68 ~]# ansible all -i myhosts -m ping
  2. localhost | SUCCESS => {
  3.     "ansible_facts": {
  4.         "discovered_interpreter_python": "/usr/libexec/platform-python"
  5.     },
  6.     "changed": false,
  7.     "ping": "pong"
  8. }
复制代码



  • 4、安装ansible脚色
需要安装红帽官方的rhel-system-roles 脚色
  1. 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
  1. vi mssql.yml
  2. ---
  3. - hosts: localhost
  4.   vars:
  5.     mssql_accept_microsoft_odbc_driver_17_for_sql_server_eula: true
  6.     mssql_accept_microsoft_cli_utilities_for_sql_server_eula: true
  7.     mssql_accept_microsoft_sql_server_standard_eula: true
  8.     mssql_password: 'RedH@123!'
  9.     mssql_edition: 'Developer'
  10.     mssql_enable_sql_agent: true
  11.     mssql_install_fts: false
  12.     mssql_install_powershell: true
  13.     mssql_tune_for_fua_storage: true
  14.     mssql_datadir: "/data/mssql/1433/database"
  15.     mssql_logdir: "/data/mssql/1433/database"
  16.   roles:
  17.     - microsoft.sql.server
  18. - hosts: localhost
  19.   tasks:
  20.     - firewalld:
  21.         service: mssql
  22.         permanent: yes
  23.         immediate: yes
  24.         state: enabled
复制代码



  • 6、运行Playbook文件
在当前路径下执行,大概运行1分钟就安装完成,大概有30个任务tasks
  1. [root@2_mssqll_68 ~]# ansible-playbook -vvv -i myhosts  mssql.yml 
  2. TASK [microsoft.sql.server : Configure the forceencryption setting] ******************************
  3. task path: /usr/share/ansible/collections/ansible_collections/microsoft/sql/roles/server/tasks/main.yml:472
  4. skipping: [localhost] => {
  5.     "changed": false, 
  6.     "skip_reason": "Conditional result was False"
  7. }
  8. META: ran handlers
  9. META: ran handlers
  10. PLAY RECAP ***************************************************************************************
  11. localhost                  : ok=30   changed=0    unreachable=0    failed=0    skipped=41   rescued=0    ignored=0   
复制代码



  • 7、查看SQL Server服务是否在运行
看到Active: active (running) 字样就表示SQL Server服务已经启动,安装成功
  1. [root@2_mssqll_68 ~]# systemctl status mssql-server.service --no-pager
  2. ● mssql-server.service - Microsoft SQL Server Database Engine
  3.    Loaded: loaded (/usr/lib/systemd/system/mssql-server.service; enabled; vendor preset: disabled)
  4.    Active: active (running) since Sun 2025-02-09 11:36:06 CST; 4s ago
  5.      Docs: https://docs.microsoft.com/en-us/sql/linux
  6.  Main PID: 999 (sqlservr)
  7.    CGroup: /system.slice/mssql-server.service
  8.            └─999 /opt/mssql/bin/sqlservr
  9. 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
  1. /opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P "RedH@123!"  -Q "SELECT @@VERSION"
复制代码




  • 9、查看SQL Server实例的数据目录结构
  • 系统库和tempdb数据库都放在同一个目录下,如果是生产情况需要注意分开,/var/opt/mssql/secrets目录是用来存放证书文件,特殊是在搭建AlwaysOn集群的时候
  1. [root@2_mssqll_68 ~]#  tree /var/opt/mssql/
  2. /var/opt/mssql/
  3. ├── data
  4. │   ├── Entropy.bin
  5. │   ├── master.mdf
  6. │   ├── mastlog.ldf
  7. │   ├── modellog.ldf
  8. │   ├── model.mdf
  9. │   ├── model_msdbdata.mdf
  10. │   ├── model_msdblog.ldf
  11. │   ├── model_replicatedmaster.ldf
  12. │   ├── model_replicatedmaster.mdf
  13. │   ├── msdbdata.mdf
  14. │   ├── msdblog.ldf
  15. │   ├── tempdb2.ndf
  16. │   ├── tempdb3.ndf
  17. │   ├── tempdb4.ndf
  18. │   ├── tempdb.mdf
  19. │   └── templog.ldf
  20. ├── log
  21. │   ├── errorlog
  22. │   ├── errorlog.1
  23. │   ├── errorlog.2
  24. │   ├── errorlog.3
  25. │   ├── errorlog.4
  26. │   ├── HkEngineEventFile_0_133835034943490000.xel
  27. │   ├── HkEngineEventFile_0_133835034997660000.xel
  28. │   ├── HkEngineEventFile_0_133835048280420000.xel
  29. │   ├── HkEngineEventFile_0_133835457796360000.xel
  30. │   ├── log_1.trc
  31. │   ├── log_2.trc
  32. │   ├── log_3.trc
  33. │   ├── log.trc
  34. │   ├── mssql-conf
  35. │   │   └── mssql-conf.log
  36. │   ├── sqlagent.1
  37. │   ├── sqlagent.out
  38. │   ├── sqlagentstartup.log
  39. │   ├── system_health_0_133835034957910000.xel
  40. │   ├── system_health_0_133835035001390000.xel
  41. │   ├── system_health_0_133835048284420000.xel
  42. │   └── system_health_0_133835457809610000.xel
  43. ├── mssql.conf
  44. └── secrets
  45.     └── machine-key
  46. 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

  •  
     
 

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

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

梦见你的名字

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表