将 MySQL 移植到 ARM 架构的设备(如树莓派、BeagleBone、Odroid 等)上,通常需要重新编译 MySQL 源码或使用预编译的二进制包。以下是详细的移植步骤和注意事项:
在开始之前,确保你的 ARM 设备满足以下条件:
gcc, make, cmake, libssl-dev 等开发工具检查系统架构:
uname -marmv7l 或 aarch64 表示 ARM 架构。从 MySQL 官方 GitHub 或 Oracle 官网 下载源码包(.tar.gz)。
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确保系统安装了必要的编译工具和库:
sudo apt update
sudo apt install -y build-essential cmake libssl-dev libncurses5-dev libncursesw5-dev libreadline-dev libaio-devMySQL 使用 cmake 进行配置,可以指定 ARM 架构优化参数:
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。
make -j$(nproc) # 使用多核加速编译-j2)。sudo make install安装完成后,MySQL 二进制文件会位于 /usr/local/mysql-arm/bin/。
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/var/log/mysqld.log 或终端输出)。复制默认配置文件并修改:
sudo cp support-files/my-default.cnf /etc/mysql-arm/my.cnf编辑 /etc/mysql-arm/my.cnf,调整关键参数:
[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 # 允许远程访问(谨慎使用)创建 /etc/systemd/system/mysql-arm.service:
[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启用并启动服务:
sudo systemctl daemon-reload
sudo systemctl enable mysql-arm
sudo systemctl start mysql-arm检查 MySQL 运行状态:
sudo systemctl status mysql-arm登录 MySQL:
/usr/local/mysql-arm/bin/mysql -u root -p输入初始化时生成的临时密码,修改 root 密码:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourNewPassword!';libssl-dev、libncurses-dev)。undefined reference to pthread_*,安装 libpthread-stubs0-dev。make -j1。bind-address=0.0.0.0 并重启 MySQL。如果不想手动编译,可以尝试以下预编译版本:
没有搜到相关的文章