当前位置: 首页 > article >正文

麒麟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虚拟机工具,理由如下:

  1. 跨架构模拟能力强:QEMU是一款开源的虚拟机模拟器,能够模拟多种硬件平台,包括ARM架构,因此可以满足在Win11上部署麒麟ARM64系统的需求。
  2. 功能全面:QEMU提供了丰富的配置选项和工具,如qemu-img用于处理磁盘映像文件,方便用户根据需求进行自定义设置和优化。
  3. 社区支持广泛: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、导入备份数据

        导入备份数据略


http://www.kler.cn/a/583858.html

相关文章:

  • Django系列教程(7)——路由配置URLConf
  • 使用AI一步一步实现若依前端(12)
  • 快读模板(Java)
  • 【后端开发面试题】每日 3 题(十二)
  • 【从零开始学习计算机科学】数据库系统(九)DBMS的体系结构
  • 复变函数摘记1
  • 在微信小程序或前端开发中,picker 和 select 都是用户交互中用于选择的组件,但它们在功能、设计和使用场景上有一定的区别
  • 桂云OSG:什么是桂链?
  • 2025-03-13 学习记录--C/C++-PTA 练习2-13 求N分之一序列前N项和
  • DeepSeek R1 与 ktransformers:结合苹果 M4 Mac 的 LLM 推理深度分析
  • 计算机网络——DHCP实验
  • Easyocr图片识别小结
  • AI自动化、资本短视、三输与破局
  • 编译器视角下的 C++ 异常:探究 throw 与 catch 的编译原理
  • AI日报 - 2025年3月14日
  • iOS开发,SQLite.swift, Missing argument label ‘value:‘ in call问题
  • 计算机视觉算法实战——驾驶员玩手机检测(主页有源码)
  • 手机遥控开关,是一种能让用户通过手机远程控制电器开关
  • 基于全局分析SpringCloud各个组件所解决的问题?
  • 【AIGC】OpenAI 集成 Langchain 操作实战使用详解