MySQL 5.7 在 2GB 内存服务器上的编译安装指南
在仅有 2GB 内存的服务器上编译安装 MySQL 5.7 需要特别注意内存使用和优化配置。以下是详细步骤:
准备工作
-
系统要求:
- 确保系统是 64 位架构(32 位系统内存限制会更严格)
- 至少有 2GB 可用磁盘空间(编译过程需要额外空间)
-
安装依赖项:
# CentOS/RHEL sudo yum install -y gcc gcc-c++ cmake make ncurses-devel openssl-devel bison # Ubuntu/Debian sudo apt-get install -y gcc g++ cmake make libncurses5-dev libssl-dev bison
编译安装步骤
-
下载源码包:
wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.44.tar.gz tar -zxvf mysql-5.7.44.tar.gz cd mysql-5.7.44 -
配置编译选项(针对低内存优化):
cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/data -DSYSCONFDIR=/etc -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DWITH_FEDERATED_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_SSL=system -DENABLED_LOCAL_INFILE=1 -DENABLE_DTRACE=0 -DDEFAULT_CHARSET=utf8mb4 -DDEFAULT_COLLATION=utf8mb4_general_ci -DWITH_EMBEDDED_SERVER=0 -DWITH_DEBUG=0 -DWITH_BOOST=./boost -
编译并安装:
make -j2 # 使用2个线程编译以避免内存耗尽 sudo make install
内存优化配置
-
创建配置文件
/etc/my.cnf:[mysqld] basedir=/usr/local/mysql datadir=/usr/local/mysql/data port=3306 socket=/tmp/mysql.sock user=mysql # 内存优化设置 key_buffer_size=32M innodb_buffer_pool_size=128M innodb_log_buffer_size=8M query_cache_size=0 # 在低内存环境下禁用查询缓存 max_connections=50 # 限制连接数 table_open_cache=200 tmp_table_size=16M max_heap_table_size=16M sort_buffer_size=256K read_buffer_size=128K read_rnd_buffer_size=256K join_buffer_size=128K thread_stack=192K # 其他设置 skip-name-resolve log-error=/usr/local/mysql/data/mysql-error.log pid-file=/usr/local/mysql/data/mysql.pid -
初始化数据库:
sudo groupadd mysql sudo useradd -r -g mysql -s /bin/false mysql sudo mkdir -p /usr/local/mysql/data sudo chown -R mysql:mysql /usr/local/mysql cd /usr/local/mysql sudo bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data -
启动MySQL:
sudo cp support-files/mysql.server /etc/init.d/mysqld sudo chmod +x /etc/init.d/mysqld sudo service mysqld start
注意事项
-
编译过程中如果内存不足,可以尝试:
- 创建交换分区:
sudo fallocate -l 2G /swapfile && sudo mkswap /swapfile && sudo swapon /swapfile - 使用
make -j1单线程编译(虽然更慢但内存需求更低)
- 创建交换分区:
-
首次启动后,使用临时密码登录并修改密码:
grep 'temporary password' /usr/local/mysql/data/mysql-error.log mysql -uroot -p ALTER USER 'root'@'localhost' IDENTIFIED BY '你的新密码'; -
考虑禁用不必要的插件和功能以节省内存。
-
生产环境建议至少使用4GB内存服务器以获得更好性能。
轻量云Cloud