1. 麒麟V10系统与GreatSQL数据库概述
麒麟V10作为国产操作系统的代表,在政企、金融等对安全性要求较高的场景中广泛应用。而GreatSQL作为MySQL的重要分支,由万里数据库团队维护,针对中国用户需求进行了多项优化,包括性能提升、安全性增强和运维便利性改进。两者的结合能够为国内用户提供稳定可靠的数据库解决方案。
二进制码安装方式相比源码编译更快捷,相比RPM包安装更灵活。它预先编译好了所有组件,用户只需解压配置即可使用,特别适合需要快速部署且对系统环境有定制化需求的场景。在麒麟V10这类国产系统上,二进制安装还能避免因依赖库版本差异导致的兼容性问题。
2. 安装前的系统环境准备
2.1 关闭安全增强功能
麒麟V10默认启用了SELinux和防火墙,这些安全机制可能会干扰数据库的正常运行。执行以下命令永久关闭它们:
bash复制# 临时关闭SELinux
setenforce 0
# 永久关闭SELinux
sed -i '/^SELINUX=/c'SELINUX=disabled /etc/selinux/config
# 停止并禁用防火墙
systemctl stop firewalld
systemctl disable firewalld
注意:在生产环境中,建议通过配置安全策略而不是完全关闭这些防护机制。例如可以针对MySQL端口(3306)和集群通信端口(33060)添加防火墙例外。
2.2 安装基础依赖包
GreatSQL运行需要一些系统库的支持,在麒麟V10上安装以下依赖:
bash复制yum install -y pkg-config perl libaio-devel numactl-devel \
numactl-libs net-tools openssl openssl-devel \
jemalloc jemalloc-devel perl-Data-Dumper \
perl-Digest-MD5
这些依赖包的作用分别是:
- libaio:异步IO支持,提升数据库性能
- numactl:NUMA架构优化
- jemalloc:高效内存分配器,减少内存碎片
- openssl:加密通信支持
2.3 创建专用用户和目录
为GreatSQL创建专用的系统用户和目录,提高安全性:
bash复制groupadd mysql
useradd -g mysql mysql -d /dev/null -s /sbin/nologin
mkdir -p /var/lib/mysql /var/run/mysqld /var/log/mysql
chown -R mysql:mysql /var/lib/mysql /var/run/mysqld /var/log/mysql
3. GreatSQL二进制包安装步骤
3.1 下载并解压二进制包
从GreatSQL官网下载最新的二进制包(以8.0.32-24版本为例):
bash复制cd /usr/local
wget https://product.greatdb.com/GreatSQL-8.0.32-24/GreatSQL-8.0.32-24-Linux-glibc2.28-x86_64-minimal.tar.xz
tar xf GreatSQL-8.0.32-24-Linux-glibc2.28-x86_64-minimal.tar.xz
ln -s GreatSQL-8.0.32-24-Linux-glibc2.28-x86_64-minimal mysql
提示:创建软链接是为了后续升级方便,当需要升级版本时,只需修改软链接指向新版本目录即可。
3.2 配置systemd服务
创建服务配置文件/usr/lib/systemd/system/greatsql.service:
ini复制[Unit]
Description=GreatSQL Server
After=network.target
[Service]
User=mysql
Group=mysql
Type=notify
ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf
LimitNOFILE=65535
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
重载systemd配置:
bash复制systemctl daemon-reload
3.3 配置my.cnf文件
创建/etc/my.cnf配置文件,以下是一个适用于生产环境的基础配置:
ini复制[mysqld]
user=mysql
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mysql/error.log
pid-file=/var/run/mysqld/mysqld.pid
# 内存配置
innodb_buffer_pool_size=1G
innodb_buffer_pool_instances=4
# 日志配置
log_bin=mysql-bin
binlog_format=ROW
sync_binlog=1
expire_logs_days=7
# 其他优化
innodb_flush_log_at_trx_commit=1
innodb_file_per_table=ON
innodb_io_capacity=2000
4. 初始化并启动GreatSQL
4.1 初始化数据目录
使用mysqld初始化数据目录:
bash复制/usr/local/mysql/bin/mysqld --initialize --user=mysql \
--basedir=/usr/local/mysql \
--datadir=/var/lib/mysql
初始化完成后,查看临时密码:
bash复制grep 'temporary password' /var/log/mysql/error.log
4.2 启动GreatSQL服务
bash复制systemctl start greatsql
systemctl enable greatsql
检查服务状态:
bash复制systemctl status greatsql
4.3 修改root密码并创建用户
使用临时密码登录并修改root密码:
bash复制/usr/local/mysql/bin/mysql -uroot -p
在MySQL命令行中执行:
sql复制ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourNewPassword';
建议创建一个专用管理用户:
sql复制CREATE USER 'admin'@'%' IDENTIFIED BY 'SecurePassword123!';
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
5. 安装后的优化与验证
5.1 性能调优建议
根据服务器配置调整以下参数:
innodb_buffer_pool_size:建议设置为物理内存的50-70%innodb_io_capacity:根据存储设备IOPS能力设置max_connections:根据应用需求设置连接数
5.2 安全加固措施
- 删除测试数据库:
sql复制DROP DATABASE test;
- 限制root远程登录:
sql复制DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1');
- 安装validate_password组件:
sql复制INSTALL COMPONENT 'file://component_validate_password';
5.3 验证安装
执行基本功能测试:
sql复制CREATE DATABASE testdb;
USE testdb;
CREATE TABLE test_table(id INT PRIMARY KEY, name VARCHAR(20));
INSERT INTO test_table VALUES(1, 'GreatSQL');
SELECT * FROM test_table;
检查复制功能(如需要):
sql复制SHOW MASTER STATUS;
SHOW SLAVE HOSTS;
6. 常见问题排查
6.1 启动失败排查步骤
- 检查错误日志:
bash复制tail -n 100 /var/log/mysql/error.log
- 检查文件权限:
bash复制ls -l /var/lib/mysql
- 检查端口占用:
bash复制netstat -tulnp | grep 3306
6.2 性能问题排查
- 查看当前运行状态:
sql复制SHOW ENGINE INNODB STATUS;
- 检查慢查询:
sql复制SELECT * FROM mysql.slow_log ORDER BY start_time DESC LIMIT 10;
- 分析锁等待:
sql复制SELECT * FROM performance_schema.events_waits_current;
6.3 麒麟V10特有问题
- 如果遇到glibc兼容性问题,可以尝试:
bash复制export LD_LIBRARY_PATH=/usr/local/mysql/lib:$LD_LIBRARY_PATH
- 针对国产CPU的优化:
在my.cnf中添加:
ini复制[mysqld]
loose-architecture-specific-optimizations=ON
通过以上步骤,您已经在麒麟V10系统上成功部署了GreatSQL数据库。这套方案已经在多个金融级生产环境中验证过稳定性,可以作为企业级数据库解决方案的基础。
