麒麟v10 ARM64架构系统升级mysql数据库从mysql-5.7.27到mysql-8.4.4图文教程
1、背景与问题说明
因mysql-5.2.27版本存在安全漏洞问题,为保障系统安全,需将处于生产环境的麒麟v10 ARM64架构系统服务器上当前部署的mysql-5.7.27版本升级到mysql-8.4.4,以规避潜在风险,提升系统整体的安全性和稳定性。
1.1 本地麒麟虚拟环境搭建的容易遇到的问题
在Windows 11上部署基于麒麟ARM64架构系统的虚拟环境面临多重挑战与易发问题。首要难点在于硬件兼容性与虚拟化技术的适配。Windows 11原生支持Intel和AMD的x64架构,而麒麟操作系统基于ARM64架构,这要求虚拟化软件必须具备出色的跨架构模拟能力。
实际操作中,用户可能会遇到虚拟化软件不支持或不完全支持ARM64指令集的情况,导致系统无法启动或运行缓慢。此外,驱动兼容性问题也不容忽视,部分麒麟系统特有的硬件驱动在Windows 11的虚拟化环境中可能无法正常工作,影响系统性能与功能。
同时,由于两种系统架构的本质差异,文件共享、网络配置等也可能成为部署过程中的棘手问题,需要用户具备较高的技术水平和耐心进行调试与优化。
1.2 虚拟机选择
在Win11上部署麒麟ARM64架构系统的虚拟环境时,应选择能够支持ARM架构模拟的虚拟机工具。推荐使用QEMU虚拟机工具,理由如下:
- 跨架构模拟能力强:QEMU是一款开源的虚拟机模拟器,能够模拟多种硬件平台,包括ARM架构,因此可以满足在Win11上部署麒麟ARM64系统的需求。
- 功能全面:QEMU提供了丰富的配置选项和工具,如qemu-img用于处理磁盘映像文件,方便用户根据需求进行自定义设置和优化。
- 社区支持广泛:QEMU拥有庞大的用户社区和丰富的文档资源,用户在遇到问题时可以更容易地寻求帮助和解决方案。
2、工具准备
2.1、开源模拟处理器-QEMU
QEMU 是一套由 Fabrice Bellard 所编写的模拟处理器的自由软件。它与 Bochs,PearPC 近似,但其具有某些后两者所不具备的特性,如高速度及跨平台的特性。经由 kqemu 这个开源的加速器,QEMU 能模拟至接近真实电脑的速度。QEMU 有两种主要运作模倾:
- User mode 模拟模式,亦即是使用者模式。QEMU 能启动那些为不同中央处理器编译的 Linux 程序。而 Wine 及 Dosemu 是其主要目标。
- System mode 模拟模式,亦即是系统模式。QEMU 能模拟整个电脑系统,包括中央处理器及其他周边设备。它使得为系统源代码进行测试及除错工作变得容易。其亦能用来在一部主机上虚拟数部不同虚拟电脑。
QEMU 的主体部份是在 LGPL 下发布的,而其系统模式模拟与 kqemu 加速器则是在 GPL 下发布。使用 kqemu 可使 QEMU 能模拟至接近实机速度,但其在虚拟的操作系统是 Microsoft Windows 98 或以下的情况下是无用的。
优点:
- 可以模拟 IA-32 (x86) 个人电脑,AMD64 个人电脑, MIPS R4000, 升阳的 SPARC sun3 与 PowerPC (PReP 及 Power Macintosh) 架构
- 支持其他架构,不论在主机或虚拟系统上 (请参看 QEMU 主页以获取完整的清单)
- 增加了模拟速度,某些程式甚至可以实时运行
- 可以在其他平台上运行 Linux 的程式
- 可以储存及还原运行状态 (如运行中的程式)
- 可以虚拟网络卡
- 可模拟多 CPU
QEMU官网:QEMU
2.2 windows11安装QEMU
2.2.1 下载QEMU
下载地址:QEMU for Windows – Installers (64 bit)
2.2.2 安装QEMU
1 找到下载的QEMU软件,双击开始安装
2 安装简单、语言选择English,一路next
3 配置系统环境变量
4 查看QEMU软件版本
qemu-img --version
qemu-system-x86_64 --version
至此QEMU安装完成。
2.3 麒麟v10 ARM64架构系统
2.3.1 为什么选择银河麒麟高级服务器操作系统
2.3.2 麒麟v10 ARM64系统下载
版本1 Kylin-Server-V10-SP3-2403-Release-20240426-arm64
https://iso.kylinos.cn/web_pungi/download/cdn/ni3tIfZoEKLDglszRXvh9WymuwOT5r6M/Kylin-Server-V10-SP3-2403-Release-20240426-arm64.iso
版本2 Kylin-Server-10-SP2-aarch64-Release-Build09-20210524
https://pan.baidu.com/s/1p8HviWKcVZSOhNaCQ1XYtg?pwd=g3u2
2.3.3 安装前准备
1 需要一个EFI工具
EFI(Extensible Firmware Interface) 是一种用于计算机的固件接口,旨在替代传统的 BIOS(基本输入/输出系统)。
EFI文件下载:
https://releases.linaro.org/components/kernel/uefi-linaro/16.02/release/qemu64/
2、把下载的文件copy至规划安装的文件夹中,如下图:
2.3.4 安装
1 规划安装的文件夹的地址栏中输入cmd,如下图:
点击回车键,弹出如下图:
2.3.4.1 创建虚拟磁盘
在cmd命令窗口输入创建虚拟磁盘的命令:
##相对路径
qemu-img create -f qcow2 kylin_arm64.img 60g
或
qemu-img create -f qcow2 kylin_arm64.qcow2 60g
##绝对路径
qemu-img create -f qcow2 E:\QemuVM\kylin10-arm64\kylin_arm64.img 60g
或
qemu-img create -f qcow2 E:\QemuVM\kylin10-arm64\kylin_arm64.qcow2 60g
然后会在E:\QemuVM\kylin10-arm64文件夹中生成一个文件:kylin_arm64.img
kylin_arm64.img作为一个虚拟磁盘介质,磁盘容量最大为60G。
文件目录结构,如下图:
qcow2 镜像格式是 QEMU 模拟器支持的一种磁盘镜像。它也是可以用一个文件的形式来表示一块固定大小的块设备磁盘。与普通的 raw 格式的镜像相比,有以下特性:
- 更小的空间占用,即使文件系统不支持空洞(holes);
- 支持写时拷贝(COW, copy-on-write),镜像文件只反映底层磁盘的变化;
- 支持快照(snapshot),镜像文件能够包含多个快照的历史;
- 可选择基于 zlib 的压缩方式
- 可以选择 AES 加密
2.3.4.2 安装操作系统
在cmd命令窗口输入安装操作系统的命令:
qemu-system-aarch64.exe -m 8192 -cpu cortex-a72 -smp 4,cores=4,threads=1,sockets=1 -M virt -bios E:\QemuVM\kylin10-arm64\QEMU_EFI.fd -netdev user,id=net0 -device virtio-net-pci,netdev=net0 -device nec-usb-xhci -device usb-kbd -device usb-mouse -device VGA -drive if=none,file=E:\QemuVM\kylin10-arm64\Kylin-Server-V10-SP3-2403-Release-20240426-arm64.iso,id=cdrom,media=cdrom -device virtio-scsi-device -device scsi-cd,drive=cdrom -drive if=none,file=E:\QemuVM\kylin10-arm64\kylin_arm64.img,id=hd0 -device virtio-blk-device,drive=hd0
参数解释
- qemu-system-aarch64.exe:指定要使用的 QEMU 模拟器,针对 ARM64 架构。
- m 8192:分配给虚拟机的内存大小,这里为 8192 MB(即 8 GB)。
- cpu cortex-a72:指定使用 Cortex-A72 作为虚拟 CPU 的型号,这是 ARM 体系结构的一种高性能处理器。
- smp 8,cores=4,threads=1,sockets=2:配置虚拟机的对称多处理(SMP)设置:
- 8 表示总共有 8 个 CPU。
- cores=4 表示每个 CPU 只有 4 个核心。
- threads=1 表示每个核心只有 1 个线程。
- sockets=2 表示只有 2 个 CPU 插槽。
- M virt:指定虚拟机的机器类型,这里使用的是通用的 Virt 虚拟机类型。
- bios E:\QemuVM\kylin10-arm64\QEMU_EFI.fd:指定要使用的 BIOS 固件文件,这里使用的是 UEFI 固件,文件路径为 E:\QemuVM\kylin10-arm64\QEMU_EFI.fd。
- net nic:创建一个网络接口卡(NIC)。
- net tap,ifname=tap0:配置网络以使用 TAP 设备 tap0,允许虚拟机通过此设备连接到主机的网络。
- device nec-usb-xhci:添加 NEC USB 3.0 控制器设备。
- device usb-kbd:添加 USB 键盘设备。
- device usb-mouse:添加 USB 鼠标设备。
- device VGA:添加 VGA 图形适配器设备,用于显示输出。
- drive if=none,file=E:\QemuVM\kylin10-arm64\Kylin-Server-V10-SP3-2403-Release-20240426-arm64.iso,id=cdrom,media=cdrom:指定一个光盘驱动器,使用 ISO 文件作为介质。
- if=none 表示没有指定接口类型。
- file=E:\QemuVM\kylin10-arm64\Kylin-Server-V10-SP3-2403-Release-20240426-arm64.iso 指定 ISO 文件的路径。
- id=cdrom 为该设备指定一个 ID。
- media=cdrom 指定该驱动器为 CD-ROM 类型。
- device virtio-scsi-device:添加 VirtIO SCSI 控制器设备,用于管理存储设备。
- device scsi-cd,drive=cdrom:将前面定义的 CD-ROM 设备连接到 SCSI 控制器。
- drive if=none,file=E:\QemuVM\kylin10-arm64\kylin_arm64.img,id=hd0:指定一个硬盘驱动器,使用镜像文件作为存储设备。
- file=E:\QemuVM\kylin10-arm64\kylin_arm64.img 指定镜像文件的路径。
- id=hd0 为该驱动器指定一个 ID。
- device virtio-blk-device,drive=hd0:将前面定义的硬盘驱动器连接到 VirtIO 块设备控制器。
- netdev user,id=net0: 创建一个用户模式网络设备,
- ID 为 net0。这使得虚拟机可以访问主机网络。
- device virtio-net-pci,netdev=net0: 将一个 Virtio 网络设备添加到虚拟机,使用之前定义的 net0 网络设备。
- id=hd0: 给此硬盘驱动器一个 ID。
- device virtio-blk-device,drive=hd0: 将之前添加的硬盘驱动器作为 Virtio 块设备。
输入命令,回车后会弹出QEMU安装kylin的窗口,如下图:
选择操作系统
会有一段时间黑屏,黑屏时间不定,应该和宿主机的配置有关系,黑屏过去后,显示如下图;
选择语言,如下图:
安装配置,红框标出必须配置,如下图:
其他配置略,网络配置,如下图:
点击开始安装,如下图:
安装完成后,点击重启系统,如下图:
等待一会,会有黑屏,耐心等待,黑屏过去后如下图:
点击进入许可证,勾选同意,点击完成,如下图:
返回初始设置页面,点击结束配置,如下图:
然后会进入登录界面,如下图
输入账号和密码,进入桌面,如下图:
此处的网络是依赖宿主机的网络,如下图:
2.3.4.3 QEMU使用小技巧
一个小技巧,快捷键: ctrl+alt+f ,实现qemu的全屏和非全屏切换,很方便,使用QEMU时鼠标太飘,实在不太方便。
3、数据备份
3.1 使用逻辑备份备份整个数据库
## 备份整个数据库
mysqldump -u username -p database_name > backup.sql
## 举例
mysqldump -u root -p ods > /databack /odsbackup.sql;
输入root密码,备份开始
## 压缩备份语法
mysqldump -u username -p database_name | gzip > backup.sql.gz
## 举例
mysqldump -u root -p ods |gzip> /databack /odsbackup.sql.gz;
输入root密码,备份开始
3.2 备份配置文件
cp /etc/my.cnf /databack/
4 卸载MySQL5.7
4.1 停止服务
systemctl stop mysqld
sudo systemctl disable mysqld
#查看状态
systemctl status mysqld
4.2 卸载
4.2.1 查看MySQL安装文件
## 查询mysql安装文件
rpm -qa | grep mysql
## 卸载
yum -y remove 上面出现的列表名
##或者
rpm -e --nodeps 上面出现的列表名
如上述查询无果后,则使用 rm -rf 删除mysql相关的目录
## 查询mysql目录
find / -name mysql
## 删除mysql相关的目录
rm -rf /var/lib/mysql/
rm -rf /usr/lib64/mysql
rm -rf /etc/selinux/targeted/active/modules/100/mysql
rm -rf /etc/selinux/targeted/tmp/modules/100/mysql
删除my.cnf文件,先备份
cp /usr/local/mysql/my.cnf /databack/
rm -rf /etc/my.cnf #确认此文件是否是软连接,不是则备份后,删除
注(重新安装的mysql不会替换这个配置文件,导致你新数据库用的老的配置文件,可能密码一直输入不对,建议删除)
5 安装
5.1 下载安装文件
https://cdn.mysql.com//Downloads/MySQL-8.4/mysql-8.4.4-linux-glibc2.28-aarch64.tar.xz
5.2 解压安装包提取文件内容到/usr/local目录
tar -xvf mysql-8.4.4-linux-glibc2.28-aarch64.tar.xz -C /usr/local/
cd /usr/local/
mv mysql-8.4.4-linux-glibc2.28-aarch64/ mysql/
5.3 添加用户组和用户
先检查 mysql 用户和用户组有没有被使用
cat /etc/group | grep mysql
cat /etc/passwd | grep mysql
## 添加 mysql 用户组
groupadd mysql
## 添加 mysql 用户并加入用户组
useradd -g mysql mysql
5.4 创建数据目录
# 创建数据目录
mkdir /usr/local/mysqldata /usr/local/mysqllogs /usr/local/mysql tmp
# 创建错误日志文件
echo “” > /usr/local/mysql/logs/mysql-error.log
5.5 给目录授权
# 给目录授权
chgrp -R mysql /usr/local/mysql
chown -R mysql:mysql /usr/local/mysql /usr/local/mysql/data /usr/local/mysql/tmp /usr/local/mysql/logs
chmod -R 755 /usr/local/mysql
5.6 配置文件
vim /etc/my.cnf
[client]
# 客户端连接 MySQL 服务器的端口号,通常是 3306。
port = 3306
# MySQL 服务器的套接字文件路径,用于本地连接。
socket = /tmp/mysql.sock
[mysqld]
# MySQL 服务器监听的端口号,通常也是 3306。
port = 3306
# MySQL 服务器的套接字文件路径,用于本地连接。
socket = /tmp/mysql.sock
# MySQL 的根目录路径,通常用于安装 MySQL 的根目录。
basedir = /data/mysql
# 存放数据库文件的目录路径。
datadir = /data/mysql_data
# 启用binglog日志文件,可以指定目录,如果不指定则放在数据目录下面
log_bin = mysql-bin
#存放 MySQL 进程 ID 的文件路径。
pid-file = /data/mysql_data/mysql.pid
#错误日志路径
log_error = /data/mysql_logs/mysql-error.log
# 表名大小写不敏感 (1 表示启用:不区分大小写)
lower_case_table_names = 1
5.7 设置开机自动启动
# 设置系统引导时自动启动 MySQL 服务。
cp -rf /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld
# 设置开机启动
systemctl enable mysqld
5.8 添加环境变量
vim /etc/profile
# 在尾部添加
export MYSQL_HOME=/usr/local/mysql
export PATH=$PATH:$MYSQL_HOME/bin
#刷新环境变量
source /etc/profile
5.9 初始化启动MySQL
mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
5.10 启动mysql
systemctl start mysqld
#查看状态
systemctl status mysqld
5.11 修改MySQL密码,并允许远程连接
#先免密登录
mysql -u root
#使用mysql库
use mysql;
#更新root密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
#赋予所有IP都可以使用root用户远程连接的权限
update user set host = '%' where user = 'root';
#创建新用户并授权(推荐)
CREATE USER 'newuser'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'newuser'@'%' WITH GRANT OPTION;
#刷新权限配置
flush privileges;
#退出mysql
exit
6、导入备份数据
导入备份数据略