服务器ip | 数据库版本 | 硬件要求 |
---|---|---|
10.1.1.31 | mysql-boost-5.7.31.tar.gz | 2G/40G,内存不够需要开swap空间 |
10.1.1.32 | mysql-boost-5.7.31.tar.gz | 2G/40G |
关闭swap
swapoff -a && sed -i ‘/ swap / s/^(.*)$/#\1/g’ /etc/fstab
安装依赖
yum -y install make cmake gcc gcc-c++ bison bison-evel ncurses-devel openssl-devel
上传到 /opt/install 目录
rz
解压:
tar -zxvf mysql-boost-5.7.31.tar.gz
进去解压后的目录配置,cd mysql-5.7.31
编译参数
配置,cmake是一个比make更高级的编译配置工具,它可以根据不同平台、不同的编译器,生成相应的Makefile或者vcproj项目(注意cmake .\后面每一行前面都有空格,不能顶格写,顶格会报错:CMake Error: The source directory does not exist.),安装包是boost包,配置时后面一定加上-DWITH_BOOST=boost
cmake .\
-DCMAKE_INSTALL_PREFIX=/opt/app/mysql/ \
-DSYSCONFDIR=/opt/app/mysql/ \
-DMYSQL_DATADIR=/opt/app/mysql/data/ \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_NDBCLUSTER_STORAGE_ENGINE=0 \
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
-DWITH_EXAMPLE_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DWITH_BOOST=boost
注意:如果在CMAKE的过程中有报错,当报错解决后,需要把源码目录中的CMakeCache.txt文件删除,然后再重新Cmake
正确截图:
解释
编译出错参考地址
https://www.jianshu.com/p/c31f404c2573
-DCMAKE_INSTALL_PREFIX 指定安装目录
-DSYSCONFDIR 配置文件(my.cnf)目录
-DMYSQL_DATADIR 数据存放目录
-DDEFAULT_CHARSET 字符集
-DDEFAULT_COLLATION 字符校对
-DENABLED_LOCAL_INFILE启用加载本地数据
-DWITH_BOOST boost库
红色部分为安装的存储引擎
-DENABLED_LOCAL_INFILE=1
-DWITH_INNOBASE_STORAGE_ENGINE=1
-DWITH_ARCHIVE_STORAGE_ENGINE=1
-DWITH_BLACKHOLE_STORAGE_ENGINE=1
-DWITH_NDBCLUSTER_STORAGE_ENGINE=0
-DWITH_FEDERATED_STORAGE_ENGINE=1
-DWITH_EXAMPLE_STORAGE_ENGINE=1
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \ 启用性能优化存储引擎
-DWITH_PARTITION_STORAGE_ENGINE=1 \ 启用分区存储引擎
相关编译参数解释,更多解释:
https://dev.mysql.com/doc/refman/5.7/en/source-configuration-options.html
编译安装
#make没有一次性成功时,请重新cmake
make make install
或者 make -j2 && make install
编译报错:
● 因为内存不够报错:
make 的报错信息
g++: internal compiler error: Killed (program cc1plus)
Please submit a full bug report,
主要原因大体上是因为内存不足,有点坑 临时使用交换分区来解决吧
创建交换分区 并 开启
dd if=/dev/zero of=/swapfile bs=64M count=16
mkswap /swapfile
swapon /swapfile
安装完成后可以关闭交换分区 并删除交换分区 文件
swapoff /swapfile
rm /swapfile
● 磁盘空间不足
/opt/rh/devtoolset-11/root/usr/bin/ld: final link failed: No space left on device
collect2: error: ld returned 1 exit status
解决方法:扩展磁盘空间
添加my.cnf配置
vim /opt/app/mysql/my.cnf
[client]
socket = /opt/app/mysql/tmp/mysql.sock
default-character-set=utf8
[mysqld]
port = 3306
user = mysql
datadir = /opt/app/mysql/data
socket = /opt/app/mysql/tmp/mysql.sock
pid-file = /opt/app/mysql/run/mysql.pid
#取消密码验证
#skip-grant-tables
sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
#误操作后回滚,必配置
tmpdir = /opt/app/mysql/tmp
[mysqld_safe]
log-error = /opt/app/mysql/log/mysqld_error.log
创建MySQL用户丶用户组和相关的目录
groupadd mysql
useradd -g mysql mysql
mkdir -p /opt/app/mysql/data
mkdir -p /opt/app/mysql/log
mkdir -p /opt/app/mysql/run
mkdir -p /opt/app/mysql/tmp
touch /opt/app/mysql/log/slow.log
touch /opt/app/mysql/log/mysqld_error.log
修改mysql安装目录权限
chown -R mysql:mysql /opt/app/mysql
操作系统交换空间设置
echo 0 > /proc/sys/vm/swappiness
初始化
/opt/app/mysql/bin/mysqld --initialize-insecure --user=mysql --basedir=/opt/app/mysql --datadir=/opt/app/mysql/data
注册系统服务
将mysql.server放置到/etc/init.d/mysqld中
cp /opt/app/mysql/support-files/mysql.server /etc/init.d/mysqld
设置开机启动
chkconfig --add mysqld
chkconfig mysqld on
查看(如果2–5为on的状态就OK)
chkconfig --list mysqld
启动/关闭/重启数据库/重新加载数据库
service mysqld start/stop/restart/reload
创建软连接 mysql -uroot -p方式快捷登录
ln -s /opt/app/mysql/bin/mysql /usr/bin
修改root密码
修改本地/远程root密码,将password改为需要设置的密码
/opt/app/mysql/bin/mysql -uroot -p
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;
刷新:
FLUSH PRIVILEGES;
开放网络:
放开端口:
firewall-cmd --permanent --zone=public --add-port=3306/tcp
防火墙生效:
firewall-cmd --reload