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

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
  • armv7l 或 aarch64 表示 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-a 或 aarch64)。

​​注意​​:如果直接在 ARM 设备上编译,-march=native 会自动适配当前 CPU。如果是交叉编译(如在 x86 上编译 ARM 版 MySQL),需替换为 arm-linux-gnueabihf 或 aarch64-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-dev、libncurses-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
  • 腾讯微服务框架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.5K61

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

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

    11.6K30

    x86程序移植到arm平台的四种场景及解决方案简介

    由于arm芯片对比x86具备成本优势以及功耗优势,再叠加国产化自主可控需求,很多时候,需要工程师将原有x86平台上可运行的程序移植到arm平台。...这种移植通常分四种场景:主流软件场景、有对应的源码的场景、没有源码但对性能没有要求的场景、没有源码但对性能有要求的场景。...1.主流软件场景 这种场景下比较简单,因为随着arm生态的不断完善,主流软件,比如openstack、spark、PostgreSQL、MySQL等都已经做好了对ARM的支持。...而对于C/C++、Go等编译型语言写的程序来说,迁移的过程则要复杂一些,需要替换工具链,依赖库、适配修改编译脚本,移植编译宏、Builtin函数、内联的汇编函数、SIMD相关移植等。...比如Intel的Houdini可以将Arm指令动态翻译为x86,微软和高通合作开发了windows系统的x86->Arm的动态翻译技术。

    2.1K10
    领券