---
title: 编译和安装
description: "编译和安装Percona过程包括下载源码和依赖库、解压、源码修复、编译和安装等步骤，是手动从源代码构建Percona数据库的详细流程。下文以编译和安装Percona 8.0.25版本为例进行说明。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengdbs/ecosystemEnable/Percona/kunpengpercona_02_0008.html
sourcePath: /source/zh/kunpengdbs/ecosystemEnable/Percona/kunpengpercona_02_0008.html
indexId: 9386578798dba84a98671776b2907ea12d19f87b615ba102eb6d5bda9ffec7e373
---
# 编译和安装

编译和安装Percona过程包括下载源码和依赖库、解压、源码修复、编译和安装等步骤，是手动从源代码构建Percona数据库的详细流程。下文以编译和安装Percona 8.0.25版本为例进行说明。

1. 下载Percona的源码包percona-server-8.0.25-15.tar.gz和boost库包，并上传至服务器“/home”目录下。
  下载地址请参见环境要求。

2. 进入“/home”目录并解压boost库包以及Percona源码包。
  1 2 3 cd /home tar xvf boost_1_73_0.tar.gz tar zxvf percona-server-8.0.25-15.tar.gz

3. 可选：如果安装的是Percona 8.0.15版本，因为下载的Percona源码存在一定的问题，编译Percona前需要修改Percona源码来进行修复。如果安装的Percona 8.0.25版本，则请跳过此步骤。

  a. 进入解压后的Percona源码目录。
    1 cd /home/percona-server-8.0.15-6

  b. 打开sync0rw.cc文件。
    1 vi storage/innobase/sync/sync0rw.cc

  c. 按“i”进入编辑模式，替换“/storage/innobase/sync/sync0rw.cc”文件中512-514行为以下内容，对sync0rw.cc文件进行修复。

```
bool recursive;
os_thread_id_t writer_thread;
if (!pass) {
recursive = lock->recursive;
os_rmb;
writer_thread = lock->writer_thread;
}
```


    替换前后，如图1和图2所示。

    图1 替换前

    图2 替换后

    添加到文件中的代码格式，需要和图2中格式相同。

  d. 按“Esc”键，输入:wq!，按“Enter”保存并退出编辑。
4. 进入解压后的Percona源码文件夹。
  1 cd /home/percona-server-8.0.25-15

5. 编译Percona。
  1 cmake . -DCMAKE_BUILD_TYPE=RelWithDebInfo -DBUILD_CONFIG=mysql_release -DFEATURE_SET=community -DWITH_BOOST=/home/boost_1_73_0 -DCMAKE_INSTALL_PREFIX=/usr/local/percona -DMYSQL_DATADIR=/data/percona -DSYSCONFDIR=/etc -DWITHOUT_TOKUDB=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_SSL=system -DWITH_ZLIB=system -DWITH_LOBWRAP=0 -DMYSQL_UNIX_ADDR=/data/percona/run/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DFORCE_INSOURCE_BUILD=1

  如果需要在openEuler 22.03操作系统安装Percona 8.0.15版本，则执行如下cmake命令： cmake . -DCMAKE_BUILD_TYPE=RelWithDebInfo -DBUILD_CONFIG=mysql_release -DFEATURE_SET=community -DWITH_BOOST=/home/boost_1_68_0 -DCMAKE_INSTALL_PREFIX=/usr/local/percona -DMYSQL_DATADIR=/data/percona -DSYSCONFDIR=/etc -DWITHOUT_TOKUDB=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_SSL=system -DWITH_ZLIB=system -DWITH_LOBWRAP=0 -DMYSQL_UNIX_ADDR=/data/percona/run/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DFORCE_INSOURCE_BUILD=1 -DHAVE_CLOCK_GETTIME=1 -DCMAKE_C_COMPILER=/opt/tools/gcc/gcc-7.3.0/bin/gcc -DCMAKE_CXX_COMPILER=/opt/tools/gcc/gcc-7.3.0/bin/g++

  在编译安装过程中，编译路径需要根据实际情况而定，表1为对编译安装的关键路径的解释。若编译过程中提示“Could not find rpcgen”，请参见openEuler系统下编译MySQL过程中，执行CMake命令时提示Could not find rpcgen的解决方法。

**表1 编译安装关键路径说明**

| 参数 | 说明 |
| --- | --- |
| DWITH\_BOOST | 解压的Percona安装压缩包中boost\_1\_73\_0文件夹所在路径。 例如，本文解压在“/home”目录下，则路径为：“/home/boost\_1\_73\_0”。 |
| DCMAKE\_INSTALL\_PREFIX | 用于指定软件的安装路径。 本次安装路径为：“/usr/local/percona”。 |
| DMYSQL\_DATADIR | 创建数据库时，数据文件存放的路径。 本次安装路径为：“/data/percona”。 |
| DCMAKE\_C\_COMPILER | 指定GCC编译器安装路径，如果安装GCC时没有指定路径，一般默认存放在“/usr/local/bin”目录下。 说明中的安装路径为：“/opt/tools/gcc/gcc\-7.3.0/bin/gcc”，即4.4.12中指定的安装路径。 |
| DCMAKE\_CXX\_COMPILER | 指定g++编译器安装路径，如果安装GCC时没有指定路径，一般默认存放在“/usr/local/bin”目录下。 说明中的安装路径为：“/opt/tools/gcc/gcc\-7.3.0/bin/g++”，即4.4.12中指定的安装路径。 |


6. 安装Percona。
  1 make -j 96

  “-j 96”参数充分利用多核CPU优势，加快编译速度，参数“-j”后数字为CPU核数，可用cat /proc/cpuinfo | grep processor | wc -l进行查看，此数值应小于或等于CPU核数。

  1 make install
