一、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/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
# 3. 关闭防火墙或放行端口(3306, 33061-MGR)
systemctl stop firewalld && systemctl disable firewalld
# 若需开启防火墙:firewall-cmd --add-port=3306/tcp --permanent && firewall-cmd --reload
# 4. 安装基础依赖(CentOS/麒麟/UOS 通用)
yum install -y libaio-devel numactl-devel openssl-devel jemalloc jemalloc-devel
2. 下载策略:官方源与镜像选择
**推荐使用二进制包(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 greatsql
-
3. 配置文件详解(/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_password
4. 初始化与启动
# 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 --user=mysql
# 生产环境建议使用 --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, 3) -
loose-group_replication_local_address设置为当前节点的内网IP -
loose-group_replication_group_seeds包含所有三个节点的 IP
2. 引导第一个节点(Primary)
在 Node1 上执行:
-- 1. 创建复制用户
SET SQL_LOG_BIN=0;
CREATE USER 'repl'@'%' IDENTIFIED BY 'GreatSQL@123';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
FLUSH PRIVILEGES;
SET SQL_LOG_BIN=1;
-- 2. 配置 Group Replication 恢复通道
CHANGE MASTER TO MASTER_USER='repl', MASTER_PASSWORD='GreatSQL@123' FOR CHANNEL 'group_replication_recovery';
-- 3. 引导集群(注意:只在第一个节点执行一次)
SET GLOBAL group_replication_bootstrap_group=ON;
START GROUP_REPLICATION;
SET GLOBAL group_replication_bootstrap_group=OFF;
-- 4. 查看集群状态(应为 ONLINE)
SELECT * FROM performance_schema.replication_group_members;
3. 加入其他节点(Secondary)
在 Node2 和 Node3 上执行:
-- 只需执行加入命令
CHANGE MASTER TO MASTER_USER='repl', MASTER_PASSWORD='GreatSQL@123' 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?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/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 + Binlog)
GreatSQL 支持 MySQL 8.0 的克隆插件,可实现物理级快速备份。
-- 安装克隆插件
INSTALL PLUGIN clone SONAME 'mysql_clone.so';
-- 本地备份(需配置目录)
CLONE LOCAL DATA DIRECTORY = '/backup/greatsql_clone';
-- 远程备份到另一台服务器
CLONE INSTANCE FROM 'user'@'backup_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 的仲裁节点特性在资源受限的政务云环境中非常实用。