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

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

相关·内容

领券