腾讯 GreatSQL 全链路实战:从国产化选型到 MGR 集群部署
一、GreatSQL 是谁为什么是信创首选1. 腾讯系国产 MySQL 分支的崛起GreatSQL 是由腾讯云主导维护、万里开源等厂商共同参与的一款开源 MySQL 分支数据库。它基于 MySQL 8.0 内核在完全兼容原生 MySQL 协议与语法的前提下针对金融级应用场景和信创环境进行了深度优化。在 2026 年的技术栈中它已成为替代 Oracle MySQL、Percona Server 的首选国产化方案尤其适合运行在银河麒麟、统信 UOS、OpenEuler 等国产操作系统上。2. 核心优势不只是“兼容”更是“超越”特性维度GreatSQL 增强点解决痛点高兼容性100% 兼容 MySQL 5.7/8.0 协议驱动无需修改Java/Spring Boot 应用可零代码迁移MGR 高可用深度优化 Group Replication支持地理标签、仲裁节点解决原生 MGR 脑裂、流控抖动问题适合多机房部署高性能并行查询引擎 (Turbo)、线程池、InnoDB 锁拆分TPC-C 性能较 MySQL 提升约 30%高并发更稳定高安全表空间国密加密、审计日志、数据脱敏满足金融、政务等保三级要求信创适配官方支持 x86_64 及ARM64飞腾、鲲鹏架构完美运行于国产 CPU 国产 OS 环境二、环境准备与安装部署CentOS/麒麟/统信实战1. 环境预检与依赖安装GreatSQL 对硬件要求极低1C2G 即可运行测试环境。生产环境建议8C16G 起步。# 1. 确认操作系统及架构适配 x86_64 或 aarch64 cat /etc/os-release uname -m # 2. 关闭 SELinux生产环境可配置策略但建议关闭以排除干扰 setenforce 0 sed -i s/SELINUXenforcing/SELINUXdisabled/g /etc/selinux/config # 3. 关闭防火墙或放行端口3306, 33061-MGR systemctl stop firewalld systemctl disable firewalld # 若需开启防火墙firewall-cmd --add-port3306/tcp --permanent firewall-cmd --reload # 4. 安装基础依赖CentOS/麒麟/UOS 通用 yum install -y libaio-devel numactl-devel openssl-devel jemalloc jemalloc-devel2. 下载策略官方源与镜像选择推荐使用二进制包Binary Tarball 部署灵活性最高适合绝大多数国产环境。下载地址Gitee 发行版https://gitee.com/GreatSQL/GreatSQL/releases国内首选官网https://greatsql.cn/版本选择2026年参考稳定版GreatSQL 8.0.32-27 或更高 GA 版本架构根据服务器 CPU 选择x86_64或aarch64# 下载示例x86_64请替换为实际版本 cd /usr/local wget https://gitee.com/GreatSQL/GreatSQL/releases/download/GreatSQL-8.0.32-27/GreatSQL-8.0.32-27-Linux-glibc2.28-x86_64.tar.xz tar xf GreatSQL-8.0.32-27-Linux-glibc2.28-x86_64.tar.xz ln -s GreatSQL-8.0.32-27-Linux-glibc2.28-x86_64 greatsql3. 配置文件详解/etc/my.cnf这是部署的核心环节。GreatSQL 的配置与 MySQL 8.0 高度一致但针对 MGR 和性能做了预设。[mysqld] # 基础目录配置 user mysql port 3306 basedir /usr/local/greatsql datadir /data/greatsql socket /data/greatsql/mysql.sock pid-file mysql.pid # 字符集与网络 character-set-server utf8mb4 collation-server utf8mb4_unicode_ci skip_name_resolve ON bind_address 0.0.0.0 # 性能优化2C4G 测试机配置 innodb_buffer_pool_size 1G innodb_log_file_size 256M max_connections 512 thread_cache_size 100 # 二进制日志MGR 必须开启 server_id 1 log_bin binlog binlog_format ROW gtid_mode ON enforce_gtid_consistency ON # GreatSQL MGR 插件加载 plugin_load_add mysql_clone.so plugin_load_add group_replication.so loose-group_replication_group_name aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaa1 loose-group_replication_local_address 本机内网IP:33061 loose-group_replication_group_seeds 节点1IP:33061,节点2IP:33061,节点3IP:33061 loose-group_replication_start_on_boot OFF loose-group_replication_bootstrap_group OFF # 安全配置 default_authentication_plugin mysql_native_password4. 初始化与启动# 1. 创建数据目录和用户 mkdir -p /data/greatsql useradd -r -s /sbin/nologin mysql chown -R mysql:mysql /data/greatsql /usr/local/greatsql # 2. 设置环境变量 echo export PATH/usr/local/greatsql/bin:$PATH /etc/profile source /etc/profile # 3. 初始化数据库注意GreatSQL 8.0 默认使用 caching_sha2_password建议指定为 native mysqld --defaults-file/etc/my.cnf --initialize-insecure --usermysql # 生产环境建议使用 --initialize 生成随机密码查看 error.log # 4. 启动服务 cp /usr/local/greatsql/support-files/mysql.server /etc/init.d/mysqld systemctl enable mysqld systemctl start mysqld # 5. 首次登录如果使用 -insecure 初始化直接回车 mysql -uroot -p三、进阶实战MGR 集群部署高可用架构GreatSQL 的核心价值在于其增强的 MGR组复制 能力。下面部署一个三节点单主模式集群。1. 节点通用配置Node1, Node2, Node3在三台服务器上重复上述安装步骤确保server_id唯一1, 2, 3loose-group_replication_local_address设置为当前节点的内网IPloose-group_replication_group_seeds包含所有三个节点的 IP2. 引导第一个节点Primary在Node1 上执行-- 1. 创建复制用户 SET SQL_LOG_BIN0; CREATE USER repl% IDENTIFIED BY GreatSQL123; GRANT REPLICATION SLAVE ON *.* TO repl%; FLUSH PRIVILEGES; SET SQL_LOG_BIN1; -- 2. 配置 Group Replication 恢复通道 CHANGE MASTER TO MASTER_USERrepl, MASTER_PASSWORDGreatSQL123 FOR CHANNEL group_replication_recovery; -- 3. 引导集群注意只在第一个节点执行一次 SET GLOBAL group_replication_bootstrap_groupON; START GROUP_REPLICATION; SET GLOBAL group_replication_bootstrap_groupOFF; -- 4. 查看集群状态应为 ONLINE SELECT * FROM performance_schema.replication_group_members;3. 加入其他节点Secondary在Node2 和Node3 上执行-- 只需执行加入命令 CHANGE MASTER TO MASTER_USERrepl, MASTER_PASSWORDGreatSQL123 FOR CHANNEL group_replication_recovery; START GROUP_REPLICATION;验证集群在任一节点插入数据其他节点应即时可见。CREATE DATABASE greatsql_demo; USE greatsql_demo; CREATE TABLE t1 (id INT PRIMARY KEY, name VARCHAR(20)); INSERT INTO t1 VALUES (1, GreatSQL MGR Test);4. GreatSQL MGR 增强特性应用仲裁节点Arbitration Node如果你只有 2 台服务器可以部署一个仲裁节点不存储数据来避免脑裂实现高可用。地理标签Geo Tags在多机房部署时通过配置group_replication_zone_id避免跨机房流量提升性能。四、Java 应用连接与使用详解1. JDBC 连接配置GreatSQL 完全兼容 MySQL Connector/J。你的application.yml或datasource配置无需任何修改。# Spring Boot 配置示例 spring: datasource: url: jdbc:mysql://greatsql-node1:3306/greatsql_demo?useUnicodetruecharacterEncodingutf8useSSLfalseserverTimezoneAsia/Shanghai username: root password: your_password driver-class-name: com.mysql.cj.jdbc.Driver关键点读写分离GreatSQL MGR 单主模式下写操作应发往 Primary 节点读操作可发往 Secondary。可使用GreatSQL Router或ShardingSphere实现自动路由。故障切换当 Primary 节点宕机GreatSQL 会自动选举新 Primary应用端需配置重试机制或利用 JDBC 的autoReconnect参数。2. 数据迁移从 MySQL 到 GreatSQL由于语法完全兼容迁移过程极其简单逻辑备份使用mysqldump从原 MySQL 导出。修改脚本仅需检查存储引擎等极少语法GreatSQL 推荐使用InnoDB。导入在 GreatSQL 中执行 SQL 文件。# 导出 mysqldump -h old_mysql -u root -p --databases your_db backup.sql # 导入 mysql -h greatsql_node -u root -p backup.sql五、运维管理备份、监控与升级1. 备份策略Clone Plugin BinlogGreatSQL 支持 MySQL 8.0 的克隆插件可实现物理级快速备份。-- 安装克隆插件 INSTALL PLUGIN clone SONAME mysql_clone.so; -- 本地备份需配置目录 CLONE LOCAL DATA DIRECTORY /backup/greatsql_clone; -- 远程备份到另一台服务器 CLONE INSTANCE FROM userbackup_host:3306 IDENTIFIED BY password;2. 监控要点MGR 状态监控定期查询performance_schema.replication_group_members。性能监控GreatSQL 提供了增强的INFORMATION_SCHEMA视图可监控并行查询性能。3. 版本升级GreatSQL 遵循 MySQL 8.0 的升级路径。建议采用滚动升级方式适用于 MGR 集群逐台停止 Secondary 节点。升级该节点 GreatSQL 软件包。启动并加入集群。最后升级 Primary 节点需先切换主节点。六、总结2026 年国产数据库选型建议对于身处郑州、从事政务云或金融项目开发的你而言GreatSQL 的选型价值在于信创合规它是目前极少数能同时完美适配ARM 架构鲲鹏/飞腾 和国产 OS麒麟/UOS 的 MySQL 分支且处于腾讯云的技术护城河之内。零迁移成本Java 应用无需改造直接运行极大降低了国产化替代的工期风险。金融级能力MGR 的增强使其具备了同城双活、异地多活的能力这是很多国产数据库难以企及的成熟度。最后提醒在正式上生产前务必在你的国产化环境中如 麒麟 v10 飞腾 CPU进行压力测试重点验证 MGR 网络分区脑裂处理能力。GreatSQL 的仲裁节点特性在资源受限的政务云环境中非常实用。