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

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 版本。
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

没有搜到相关的文章

领券