mssql
WiltonDB / Babelfish 内核,提供 Microsoft SQL Server 协议与语法兼容能力
mssql 配置模板使用 WiltonDB / Babelfish 数据库内核替代原生 PostgreSQL,提供 Microsoft SQL Server 线缆协议(TDS)与 T-SQL 语法兼容能力。
完整教程请参考:Babelfish (MSSQL) 内核使用说明
配置概览
- 配置名称:
mssql - 节点数量: 单节点
- 配置说明:WiltonDB / Babelfish 配置模板,提供 SQL Server 协议兼容
- 适用系统:
el8,el9,u22,u24 - 适用架构:
x86_64 - 相关配置:
meta
启用方式:
./configure -c mssql [-i <primary_ip>]
配置内容
源文件地址:pigsty/conf/mssql.yml
all:
children:
infra: { hosts: { 10.10.10.10: { infra_seq: 1 }} ,vars: { repo_enabled: false }}
etcd: { hosts: { 10.10.10.10: { etcd_seq: 1 }} ,vars: { etcd_cluster: etcd }}
#----------------------------------------------#
# Babelfish Database Cluster
#----------------------------------------------#
pg-meta:
hosts:
10.10.10.10: { pg_seq: 1, pg_role: primary }
vars:
pg_cluster: pg-meta
pg_users:
- {name: dbuser_meta ,password: DBUser.Meta ,pgbouncer: true ,roles: [dbrole_admin] ,comment: pigsty admin user }
- {name: dbuser_view ,password: DBUser.Viewer ,pgbouncer: true ,roles: [dbrole_readonly] ,comment: read-only viewer }
- {name: dbuser_mssql ,password: DBUser.MSSQL ,superuser: true ,pgbouncer: true ,roles: [dbrole_admin] ,comment: babelfish superuser }
pg_databases:
- name: mssql
baseline: mssql.sql # 初始化 babelfish 数据库
extensions:
- { name: uuid-ossp }
- { name: babelfishpg_common }
- { name: babelfishpg_tsql }
- { name: babelfishpg_tds }
- { name: babelfishpg_money }
- { name: pg_hint_plan }
- { name: system_stats }
- { name: tds_fdw }
owner: dbuser_mssql
parameters: { 'babelfishpg_tsql.migration_mode' : 'multi-db' }
comment: babelfish MSSQL compatible database
- {name: meta ,baseline: cmdb.sql ,comment: pigsty meta database ,schemas: [pigsty]}
pg_hba_rules:
- {user: dbuser_view , db: all ,addr: infra ,auth: pwd ,title: 'allow grafana access' }
- {user: dbuser_mssql ,db: mssql ,addr: intra ,auth: md5 ,title: 'allow mssql dbsu intranet access' }
node_crontab: [ '00 01 * * * postgres /pg/bin/pg-backup full' ]
# Babelfish Ad Hoc Settings
pg_mode: mssql # MSSQL 兼容模式
pg_packages: [ wiltondb, pgsql-common ] # 安装 WiltonDB 内核
pg_libs: 'babelfishpg_tds, pg_stat_statements, auto_explain'
pg_default_services: # TDS 端口 1433 服务路由
- { name: primary ,port: 5433 ,dest: 1433 ,check: /primary ,selector: "[]" }
- { name: replica ,port: 5434 ,dest: 1433 ,check: /read-only ,selector: "[]" , backup: "[? pg_role == `primary` || pg_role == `offline` ]" }
- { name: default ,port: 5436 ,dest: postgres ,check: /primary ,selector: "[]" }
- { name: offline ,port: 5438 ,dest: postgres ,check: /replica ,selector: "[? pg_role == `offline` || pg_offline_query ]" , backup: "[? pg_role == `replica` && !pg_offline_query]" }
vars:
version: v4.0.0
admin_ip: 10.10.10.10
region: default
infra_portal:
home : { domain: i.pigsty }
nodename_overwrite: false
node_repo_modules: node,infra,pgsql
node_tune: oltp
pg_version: 15 # WiltonDB 基于 PostgreSQL 15
pg_conf: oltp.yml
#----------------------------------------------#
# PASSWORD
#----------------------------------------------#
grafana_admin_password: pigsty
grafana_view_password: DBUser.Viewer
pg_admin_password: DBUser.DBA
pg_monitor_password: DBUser.Monitor
pg_replication_password: DBUser.Replicator
patroni_password: Patroni.API
haproxy_admin_password: pigsty
minio_secret_key: S3User.MinIO
etcd_root_password: Etcd.Root
配置解读
mssql 模板让您可以使用 SQL Server Management Studio (SSMS) 或其他 SQL Server 客户端工具连接 PostgreSQL。
关键特性:
- 使用 TDS 协议(端口 1433),兼容 SQL Server 客户端
- 支持 T-SQL 语法,迁移成本低
- 保留 PostgreSQL 的 ACID 特性和扩展生态
- 支持
multi-db和single-db两种迁移模式
连接方式:
# 使用 sqlcmd 命令行工具
sqlcmd -S 10.10.10.10,1433 -U dbuser_mssql -P DBUser.MSSQL -d mssql
# 使用 SSMS 或 Azure Data Studio
# Server: 10.10.10.10,1433
# Authentication: SQL Server Authentication
# Login: dbuser_mssql
# Password: DBUser.MSSQL
适用场景:
- 从 SQL Server 迁移到 PostgreSQL
- 需要同时支持 SQL Server 和 PostgreSQL 客户端的应用
- 希望利用 PostgreSQL 生态同时保持 T-SQL 兼容性
注意事项:
- WiltonDB 基于 PostgreSQL 15,不支持更高版本特性
- 部分 T-SQL 语法可能存在兼容性差异,请参考 Babelfish 兼容性文档
- 需要使用
md5认证方式(而非scram-sha-256)