首页
学习
活动
专区
圈层
工具
发布

mysql移植arm

将 MySQL 移植到 ARM 架构的设备(如树莓派、BeagleBone、Odroid 等)上,通常需要重新编译 MySQL 源码或使用预编译的二进制包。以下是详细的移植步骤和注意事项:


​1. 确认 ARM 设备环境​

在开始之前,确保你的 ARM 设备满足以下条件:

  • ​操作系统​​:Linux(如 Ubuntu、Debian、Raspberry Pi OS)
  • ​架构​​:ARMv7 或 ARM64(AArch64)
  • ​基本工具链​​:gcc, make, cmake, libssl-dev 等开发工具

检查系统架构:

代码语言:javascript
代码运行次数:0
复制
uname -m
  • armv7laarch64 表示 ARM 架构。

​2. 下载 MySQL 源码​

从 MySQL 官方 GitHub 或 Oracle 官网 下载源码包(.tar.gz)。

代码语言:javascript
代码运行次数:0
复制
wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.33.tar.gz
tar -xzf mysql-8.0.33.tar.gz
cd mysql-8.0.33

​3. 安装依赖​

确保系统安装了必要的编译工具和库:

代码语言:javascript
代码运行次数:0
复制
sudo apt update
sudo apt install -y build-essential cmake libssl-dev libncurses5-dev libncursesw5-dev libreadline-dev libaio-dev

​4. 配置 MySQL 编译选项​

MySQL 使用 cmake 进行配置,可以指定 ARM 架构优化参数:

代码语言:javascript
代码运行次数:0
复制
mkdir build
cd build
cmake .. \
    -DCMAKE_INSTALL_PREFIX=/usr/local/mysql-arm \
    -DMYSQL_DATADIR=/var/lib/mysql-arm \
    -DSYSCONFDIR=/etc/mysql-arm \
    -DWITH_SSL=system \
    -DWITH_READLINE=1 \
    -DWITH_EMBEDDED_SERVER=0 \
    -DWITH_INNOBASE_STORAGE_ENGINE=1 \
    -DWITH_ARCHIVE_STORAGE_ENGINE=1 \
    -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
    -DWITH_READLINE=1 \
    -DWITH_ZLIB=system \
    -DWITH_LIBWRAP=0 \
    -DCMAKE_C_FLAGS="-march=native" \
    -DCMAKE_CXX_FLAGS="-march=native"

​关键参数说明​​:

  • -DCMAKE_INSTALL_PREFIX:指定安装目录(避免覆盖系统默认 MySQL)。
  • -DWITH_SSL=system:使用系统 OpenSSL(ARM 设备通常自带)。
  • -march=native:优化编译为当前 CPU 架构(仅适用于 x86_64 交叉编译时需替换为 armv7-aaarch64)。

​注意​​:如果直接在 ARM 设备上编译,-march=native 会自动适配当前 CPU。如果是交叉编译(如在 x86 上编译 ARM 版 MySQL),需替换为 arm-linux-gnueabihfaarch64-linux-gnu


​5. 编译 MySQL​

代码语言:javascript
代码运行次数:0
复制
make -j$(nproc)  # 使用多核加速编译
  • 如果内存不足,可以减少并行任务数(如 -j2)。
  • 编译时间较长(取决于设备性能)。

​6. 安装 MySQL​

代码语言:javascript
代码运行次数:0
复制
sudo make install

安装完成后,MySQL 二进制文件会位于 /usr/local/mysql-arm/bin/


​7. 初始化 MySQL 数据目录​

代码语言:javascript
代码运行次数:0
复制
sudo mkdir -p /var/lib/mysql-arm
sudo chown -R mysql:mysql /var/lib/mysql-arm  # 如果已创建 mysql 用户
sudo /usr/local/mysql-arm/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql-arm --datadir=/var/lib/mysql-arm
  • 初始化时会生成临时 root 密码(查看日志 /var/log/mysqld.log 或终端输出)。

​8. 配置 MySQL​

复制默认配置文件并修改:

代码语言:javascript
代码运行次数:0
复制
sudo cp support-files/my-default.cnf /etc/mysql-arm/my.cnf

编辑 /etc/mysql-arm/my.cnf,调整关键参数:

代码语言:javascript
代码运行次数:0
复制
[mysqld]
basedir=/usr/local/mysql-arm
datadir=/var/lib/mysql-arm
socket=/var/run/mysqld/mysqld.sock
port=3306
bind-address=0.0.0.0  # 允许远程访问(谨慎使用)

​9. 创建 Systemd 服务​

创建 /etc/systemd/system/mysql-arm.service

代码语言:javascript
代码运行次数:0
复制
[Unit]
Description=MySQL ARM Server
After=network.target

[Service]
User=mysql
Group=mysql
ExecStart=/usr/local/mysql-arm/bin/mysqld --defaults-file=/etc/mysql-arm/my.cnf
ExecReload=/bin/kill -HUP $MAINPID
Restart=on-failure

[Install]
WantedBy=multi-user.target

启用并启动服务:

代码语言:javascript
代码运行次数:0
复制
sudo systemctl daemon-reload
sudo systemctl enable mysql-arm
sudo systemctl start mysql-arm

​10. 验证安装​

检查 MySQL 运行状态:

代码语言:javascript
代码运行次数:0
复制
sudo systemctl status mysql-arm

登录 MySQL:

代码语言:javascript
代码运行次数:0
复制
/usr/local/mysql-arm/bin/mysql -u root -p

输入初始化时生成的临时密码,修改 root 密码:

代码语言:javascript
代码运行次数:0
复制
ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourNewPassword!';

​11. 常见问题解决​

​(1) 编译错误:缺少依赖​

  • 确保安装所有依赖项(如 libssl-devlibncurses-dev)。
  • 如果报错 undefined reference to pthread_*,安装 libpthread-stubs0-dev

​(2) 内存不足​

  • 减少并行编译任务:make -j1
  • 增加交换空间:sudo fallocate -l 2G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile

​(3) 远程连接失败​

  • 检查防火墙是否放行 3306 端口:sudo ufw allow 3306
  • 修改 bind-address=0.0.0.0 并重启 MySQL。

​12. 替代方案:使用预编译包​

如果不想手动编译,可以尝试以下预编译版本:

  • ​MariaDB​​(MySQL 的分支,兼容性高):sudo apt install mariadb-server
  • ​Percona Server​​(优化版 MySQL):
    • 从 Percona 官网 下载 ARM 版本。
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

​Arm机移植算法与程序

Arm机移植算法与程序 0.导语 应项目需求,测试多路摄像头,需要测试程序移植到Arm机上,比如写的人脸识别算法,视频多拍等,那如何进行移植,如何操作呢,本篇文章进行详细阐述。...1.环境准备 本次移植为c/c++程序通过arm-linux-gnueabihf 在Ubuntu18上编译,连接usb线,接到Arm机板子上。 下面进行相应实验。...2.交叉编译器 交叉编译器安装如下: sudo apt install g++-arm-linux-gnueabihf 指定版本: sudo apt install g++-8-arm-linux-gnueabihf...2.2 编译程序 这里就不写什么C/C++程序了,直接编译程序,假设程序名字为main.cpp,编译命令如下: arm-linux-gnueabihf-g++-8 -static -o.../main1 这样移植程序,就成功了。 2.4 下载 比如我想将采集的图片导入本机,那下载就行了,输入下面命令:、 adb pull /data/yuv

1.9K20
  • arm linux 移植全部过程「建议收藏」

    arm linux 移植全部过程 总述 面向的读者 正文 现代计算机系统的工作模式 BOOT-ROM U-Boot Makfile 总述 之前做过linux在powerpc上的移植,当然过程曲折,内容不充实...现在又在做arm移植,自己所用的工具、设备等都有了比较大的改进,那我觉得应该写一篇文章来记录一下,因为过程中的问题,不是简单几句命令就能解释的,而网上的文章真的是初学者的噩梦,没有条理不说,质量也不敢恭维...而在ARM体系架构中,大部分SoC都集成了片上ROM,而这个ROM在ARM嵌入式的领域内被叫作BOOT-ROM。...因为x86系统中外设大部分是由主板厂商设计,故BIOS通常是由主板厂商自行设计;而ARM系统中,因为ARM上通常会集成很多相关的外设及接口,故一般是由SoC厂商实现BOOT-ROM。...ARM应该也是如此,但是启动地址没有查看相关文档。 U-Boot 相关的项目介绍什么的都不写了,到处都能搜到。

    5.2K20

    腾讯微服务框架TARS成功移植至Arm架构

    近日,腾讯宣布,其TARS微服务开发框架已成功移植至Arm®️CPU架构。 TARS是一个成熟的高性能微服务开发框架,因其高性能及具备完善的微服务治理方案而广为人知。...在本文中,我们将介绍4G和5G网络中,移植到Arm架构的TARS项目基本架构和部署场景。...TARS和Arm架构移植概览 TARS支持多种编程语言,包括C++、Golang、Java、Node.js、PHP和Python,使Arm平台的开发人员和基于Arm系统的企业能够快速构建稳定可靠的分布式应用...过去一年里,Arm与腾讯密切合作,成功完成了TARS到Arm架构的移植,并完成了AR/VR以及车联网项目。...我们已经完成了将TARS移植到基于Arm服务器的LFEDGE Akraino Blueprint上的工作,期待未来继续与Arm在TARS微服务生态中进行更多的合作。”

    1.6K73

    QT5.6移植到ARM三星4412-

    嵌入式linux之QT5.6移植 1 1.1 简介 1 1.2 移植 2 1.2.1 源码下载链接 2 1.2.2 移植准备工作 3 1.2.3 解压qt源码包 3 1.2.4 配置编译环境 3 1.2.5...库下载 8 1.3.3 创建相关配置文件 8 1.3.4 拷贝QT依赖库 9 1.3.5 QT中文支持 9 1.3.6 开发板运行效果 10 1.3.7 鼠标设置方法 11 嵌入式linux之QT5.6移植...格式的压缩包下载 1.2.2 移植准备工作 1.需要提前移植好交叉编译器,如果编译QT时出现错误,大半都是编译器版本太低引起的,低版本的编译器编译QT会出现错误。...2.移植前需要先移植好tslib库,tslib 是电阻式触摸屏用于校准的一个软件库,是一个开源的程序,能够为触摸屏驱动获得的采样提供诸如滤波、去抖、校准等功能,通常作为触摸屏驱动的适配层,为上层的应用提供了一个统一的接口...该脚本只是用来方便移植使用,只需要在移植的时候执行一次,以后就不需要再执行。 内容如下: #!

    8.1K20

    【玩转Arm-2D】入门和移植从未如此简单

    这不,Arm在Github上发布了一个专门针对“全体” Cortex-M处理器的2D图形加速库——Arm-2D: https://github.com/ARM-software/Arm-2D 根据Github...驱动器的类型) 目标芯片的资源不同、系统频率不同 软件环境不同——RTOS千差万别,甚至还有裸机 芯片厂家提供的2D图形加速硬件每个都不一样…… 总结来说,如果要支持一款硬件平台,就要针对它的硬件为其做移植和定制...同时,芯片厂商也苦于找不到大量的GUI协议栈为芯片提供软件支持; GUI软件提供商苦于由硬件碎片化所带来的庞大移植工作量。...——如果芯片实际有硬件加速,自然就能得到加速,如果芯片没有硬件加速,那就用我提供的软件优化算法——总的来说,就是一次移植,哪儿哪儿都能用,有没有实际硬件加速都不要紧。...如果你使用了 Display Adapter 来辅助移植,则还需要包含下面的头文件: #include "arm_2d_disp_adapters.h" 并在 main() 函数中加入代码: int

    3.4K61

    ARM版Oracle安装包_如何把Linux移植到手机

    linux作为一款流行的嵌入式系统,目前已经有多种架构的MCU支持Linux移植,arm64就是其中一种。今天在这里想做一个笔记,记录一下完整的arm64移植过程。...那么我们所做的工作可以分为以下三部分: 1、进行bootloader的编译开发和移植。 2、进行内核文件的编译和移植(Image和dtb)。 3、进行根文件系统的编译和移植。...这里不介绍bootloader的移植和uboot的移植,感兴趣的话,请参考自己的开发板资料或者网上资料。...Linux内核的移植   Linux内核的移植,主要是移植最后生成的内核镜像Image文件以及设备树文件dtb   Linux内核的编译,也是为了生成Image以及dtb 1、准备工作   (1)原厂提供的内核源代码...按理来说已经可以进行移植了。

    4K20

    嵌入式Linux下 QT移植mqtt的方法(包含arm端)

    3、QT里移植mqtt:这种方式因为可以直接调用官方写好的接口,因此使用起来就简单多了,但是这个移植过程并不是那么简单。这分为Windows端和Linux端。...Windows端就不说了,我主要说一下Ubuntu下和arm开发板上的移植。 移植也分为两种,一种是编译成动态链接库,一种是直接把mqtt官方源码包含进去自己的工程里面,然后一起编译。...这样就移植好了。可以看到,在这里使用gcc编译可以通过,并且写个简单的测试代码,确实能连接云端 ? 接下来说一下移植到arm端: 这部分网上的资料是真的少,搜索半天都找不到你想要的。...我们知道,要移植到arm开发板上面,需要使用交叉编译工具链,正常情况下,你写好的qt程序在主机Ubuntu上能运行,只要换成交叉编译工具编译,就可以放到开发板上运行了。 但是这里你这样做会发现报错。...把编译好的文件放在arm开发板上,可以成功执行 ? ? 至此,移植结束,可以尽情开发了。 后台回复mqtt获取我修改后的mqtt源码包

    11.5K30
    领券