银河麒麟V10作为国产操作系统的重要代表,其基于Linux内核的稳定性和安全性在政务、金融等领域得到广泛应用。而MySQL 8.0.28作为2022年发布的稳定版本,带来了窗口函数、原子DDL、JSON增强等关键特性,两者的结合能够为关键行业应用提供可靠的数据存储方案。
在实际部署中,由于银河麒麟V10采用了不同于主流Linux发行版的软件包管理机制,且默认启用了严格的安全策略,这使得MySQL的标准安装流程需要针对性调整。本文将基于真实项目经验,详细介绍从准备到优化的完整实施过程。
首先通过命令检查系统架构和版本:
bash复制uname -m # 确认是x86_64还是arm架构
cat /etc/kylin-release # 查看具体系统版本
银河麒麟V10通常采用RPM包管理,但需要注意:
执行以下命令处理依赖关系:
bash复制sudo yum remove mariadb-libs -y # 移除冲突包
sudo yum install libaio ncurses-compat-libs -y # 关键依赖
重要提示:银河麒麟的yum源可能需要先配置EPEL,建议联系系统管理员获取内部软件源地址
推荐从MySQL官网下载对应架构的tar包:
bash复制wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.28-linux-glibc2.12-x86_64.tar.xz
tar -xvf mysql-8.0.28-linux-glibc2.12-x86_64.tar.xz
sudo mv mysql-8.0.28-linux-glibc2.12-x86_64 /usr/local/mysql
创建专用用户和目录:
bash复制sudo groupadd mysql
sudo useradd -r -g mysql -s /bin/false mysql
sudo mkdir /var/lib/mysql
sudo chown mysql:mysql /var/lib/mysql
执行关键初始化命令:
bash复制cd /usr/local/mysql
bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/var/lib/mysql
注意记录输出的临时密码:
code复制[Note] A temporary password is generated for root@localhost: JqfkR2e!8s?d
创建my.cnf配置文件:
ini复制[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mysql/mysql.log
pid-file=/var/run/mysql/mysql.pid
# 安全增强
default_authentication_plugin=mysql_native_password
local-infile=0
skip_symbolic_links=YES
设置目录权限:
bash复制sudo mkdir /var/log/mysql /var/run/mysql
sudo chown mysql:mysql /var/log/mysql /var/run/mysql
新建服务文件/etc/systemd/system/mysql.service:
ini复制[Unit]
Description=MySQL Server
After=network.target
[Service]
User=mysql
Group=mysql
ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf
LimitNOFILE=5000
[Install]
WantedBy=multi-user.target
启用服务:
bash复制sudo systemctl daemon-reload
sudo systemctl start mysql
sudo systemctl enable mysql
登录并修改root密码:
bash复制bin/mysql -uroot -p
ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourStrongPassword123!';
执行安全脚本:
bash复制bin/mysql_secure_installation
查看当前策略:
bash复制sestatus
若为Enforcing模式,需添加策略:
bash复制sudo semanage fcontext -a -t mysqld_db_t "/var/lib/mysql(/.*)?"
sudo restorecon -Rv /var/lib/mysql
开放3306端口:
bash复制sudo firewall-cmd --zone=public --add-port=3306/tcp --permanent
sudo firewall-cmd --reload
根据服务器内存调整my.cnf:
ini复制innodb_buffer_pool_size = 4G # 建议为物理内存的50-70%
innodb_log_file_size = 512M
建议配置:
ini复制innodb_flush_method = O_DIRECT
innodb_io_capacity = 2000
innodb_io_capacity_max = 4000
查看错误日志:
bash复制tail -100 /var/log/mysql/mysql.log
常见问题:
检查监听状态:
bash复制netstat -tulnp | grep mysql
验证用户权限:
sql复制SELECT host, user FROM mysql.user;
使用mysqlbackup工具:
bash复制bin/mysqlbackup --user=root --password --backup-dir=/backups/mysql backup
定时执行:
bash复制bin/mysqldump -uroot -p --all-databases > full_backup.sql
配置Prometheus监控:
yaml复制- job_name: 'mysql'
static_configs:
- targets: ['localhost:9104']
建议每周执行:
sql复制ANALYZE TABLE important_table;
OPTIMIZE TABLE frequent_update_table;
当需要升级到新版本时:
通过以上完整流程,我们不仅实现了MySQL 8.0.28在银河麒麟V10上的稳定运行,还针对国产化环境特点进行了全方位优化。实际部署中建议先在小规模测试环境验证,特别是要检查与业务应用的兼容性。