我为什么要写这篇教学?
- 我自己安装的时候发现网上并没有最新的编译安装教学,其实和mysql编译安装几乎一模一样
- 方便后人参考和快速部署Percona Server for MySQ
- 做个记录,方便以后自己快速部署
我还没有解决的问题(也有可能是我自己主机的问题)
- 用PVE创建的kvm虚拟主机(debian12)始终识别不到openldap,我也不知道为啥…
- 用PVE创建的debian系的系统似乎都存在识别不到openldap的情况
ps:我不懂编程,很多东西也不甚了解,没办法分析具体原因,欢迎大佬在我博客的评论区指正
一,编译安装
PS:我使用的是RHEL9
1,安装必要的依赖
yum install git sudo gcc cmake make gcc-toolset-12-gcc gcc-toolset-12-gcc-c++ gcc-toolset-12-binutils gcc-toolset-12-annobin-annocheck gcc-toolset-12-annobin-plugin-gcc openssl-devel openldap-devel cyrus-sasl-devel cyrus-sasl-scram krb5-devel ncurses-devel readline-devel bison libcurl-devel libudev-devel libtirpc-devel rpcgen libaio-devel libtirpc-devel
2,拉取 Percona Server for MySQL 源代码
cd /root
git config --global http.postBuffer 524288000
git clone https://github.com/percona/percona-server.git
cd percona-server
3,确定你要编译安装的版本
git checkout 8.0
git submodule init
git submodule update
PS:分支名称可以在官方仓库找到
4,编译过程中会生成很多文件,创建一个文件夹用来存放
cmake ../percona-server -DDOWNLOAD_BOOST=1 -DWITH_BOOST=./boost -DCMAKE_BUILD_TYPE=RelWithDebInfo -DBUILD_CONFIG=mysql_release -DFEATURE_SET=community
5,编译二进制文件
make -j4
PS:“-j“后面跟你的CPU核心数量
6,安装
make install
二,配置和启动MySql
1,创建一个MySql用户
groupadd mysql
useradd -r -g mysql -s /bin/false mysql
2,创建文件目录
cd /usr/local/mysql
cd /usr/local/mysql && mkdir -p /usr/local/mysql/etc && mkdir -p mysql-files
3,设置文件权限
chown mysql:mysql mysql-files && chmod 750 mysql-files
4,初始化数据库
cd /usr/local/mysql
./bin/mysqld --initialize-insecure --user=mysql
5,配置环境变量
if ! grep -q "MYSQLPATH=/usr/local/mysql" /etc/profile; then
run_command "配置环境变量..." "echo 'export MYSQLPATH=/usr/local/mysql' >> /etc/profile && echo 'export PATH=\$MYSQLPATH/bin:\$MYSQLPATH/lib:\$PATH' >> /etc/profile && source /etc/profile"
else
echo "环境变量已配置,跳过。"
fi
6,创建配置文件
if [ ! -f "/usr/local/mysql/etc/my.cnf" ]; then
echo "创建 MySQL 配置文件..."
cat <<EOF > /usr/local/mysql/etc/my.cnf
[mysqld]
port = 3306
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
secure-file-priv=/usr/local/mysql/mysql-files
user=mysql
character_set_server=utf8mb4
EOF
else
echo "MySQL 配置文件已存在,跳过创建。"
fi
7,创建一个systerm的配置文件用于快速管理Mysql
if [ ! -f "/usr/lib/systemd/system/mysql.service" ]; then
echo "创建 systemd 服务文件..."
cat <<EOF > /usr/lib/systemd/system/mysql.service
[Unit]
Description=MySQL Server
#Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[Service]
User=mysql
Group=mysql
ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/usr/local/mysql/etc/my.cnf
PIDFile=/mysql/data/mysqld.pid
Restart=on-failure
RestartPreventExitStatus=1
TimeoutSec=0
PrivateTmp=false
LimitNOFILE=65535
LimitNPROC=65535
[Install]
WantedBy=multi-user.target
EOF
else
echo "systemd 服务文件已存在,跳过创建。"
fi
7,启动mysql
bin/mysqld --initialize-insecure --user=mysql
systemctl daemon-reload
systemctl enable mysql
systemctl start mysql
PS:因为我CPU性能太差,编译需要花好几个小时!我就没有重新编译一次并截图,所以只有封面一张图片,有什么问题可以到评论区讨论!
遇到报错的可以先问问claude或者gpt4,根据我的经验来看,你完全按照教程复制粘贴命令都有一定概率会遇到缺少依赖,或者找不到库的问题(我同一台机器,前几天刚编译,压根没动,最近再编译的时候就却依赖了)……😥😥😥😥
如果还是无法正常编译安装可以在评论区留言,我网站服务器不咋,滴经常失联,如果我看到了就会第一时间回复你😊
pve下无论是debian还是ubuntu(试过很多个版本)都会缺少openldap,手动编译安装openldap强制指定openldap的位置还是依然无法找到……不知道为啥,坐等大佬修复