compile-using-redhat7-for-56.md 8.3 KB
Newer Older
M
Ma Jun 已提交
1
---
2
id: compile-using-redhat7-for-56
3
sidebar_position: 5.132
M
Ma Jun 已提交
4 5
---

6
# RedHat 7 下编译 StoneDB for MySQL5.6
M
Ma Jun 已提交
7

8 9 10 11 12 13 14 15 16 17 18
编译工具以及第三方库的版本要求如下。

| 编译工具及第三方库 | 版本要求 |
| --- | --- |
| gcc | 9.3.0 |
| make | 3.82 |
| cmake | 3.7.2 |
| marisa | 0.77 |
| rocksdb | 6.12.6 |
| boost | 1.66 |

M
Ma Jun 已提交
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
## 第一步:安装依赖包
```shell
yum install -y tree
yum install -y gcc
yum install -y gcc-c++
yum install -y libzstd-devel
yum install -y make
yum install -y ncurses
yum install -y ncurses-devel
yum install -y bison
yum install -y libaio
yum install -y perl
yum install -y perl-DBI
yum install -y perl-DBD-MySQL
yum install -y perl-Time-HiRes
yum install -y readline-devel
yum install -y numactl
yum install -y zlib
yum install -y zlib-devel
yum install -y openssl
yum install -y openssl-devel
yum install -y redhat-lsb-core
yum install -y git
yum install -y autoconf
yum install -y automake
yum install -y libtool
yum install -y lrzsz
yum install -y lz4
yum install -y lz4-devel
yum install -y snappy
yum install -y snappy-devel
yum install -y bzip2
yum install -y bzip2-devel
yum install -y zstd
yum install -y libedit
yum install -y libedit-devel
yum install -y libaio-devel
yum install -y libicu
yum install -y libicu-devel
58
yum install -y jemalloc-devel
M
Ma Jun 已提交
59
```
60 61
## 第二步:安装 gcc 9.3.0
通过执行以下语句,检查当前 gcc 版本是否符合安装要求。
M
Ma Jun 已提交
62 63 64 65 66 67 68 69
```shell
gcc --version
```
如果版本不符合要求,按照以下步骤将 gcc 切换为正确版本。
### 1. 安装 scl 源
```shell
yum install centos-release-scl scl-utils-build -y
```
70
### 2. 安装 9.3.0 版本的 gcc、gcc-c++、gdb 
M
Ma Jun 已提交
71
```shell
72
yum install devtoolset-9-gcc.x86_64 devtoolset-9-gcc-c++.x86_64 devtoolset-9-gcc-gdb-plugin.x86_64 -y
M
Ma Jun 已提交
73
```
74
### 3. 切换至 9.3.0 版本
M
Ma Jun 已提交
75
```shell
76
scl enable devtoolset-9 bash
M
Ma Jun 已提交
77
```
78
### 4. 版本检查
M
Ma Jun 已提交
79 80 81 82
```shell
gcc --version
```
## 第三步:安装第三方库
83
安装第三库前需要确认 cmake 版本是3.7.2以上,make 版本是3.82以上,如果低于这两个版本,需要进行安装。StoneDB 依赖 marisa、rocksdb、boost,在编译 marisa、rocksdb、boost 时,建议指定安装路径。示例中我们指定了 marisa、rocksdb、boost 的安装路径。
M
Ma Jun 已提交
84 85 86 87 88 89 90 91 92
### 1. 安装 cmake
```shell
wget https://cmake.org/files/v3.7/cmake-3.7.2.tar.gz
tar -zxvf cmake-3.7.2.tar.gz
cd cmake-3.7.2
./bootstrap && make && make install
/usr/local/bin/cmake --version
rm -rf /usr/bin/cmake
ln -s /usr/local/bin/cmake /usr/bin/
93
cmake --version
M
Ma Jun 已提交
94 95 96
```
### 2. 安装 make
```shell
97
wget http://mirrors.ustc.edu.cn/gnu/make/make-3.82.tar.gz
M
Ma Jun 已提交
98
tar -zxvf make-3.82.tar.gz
99
cd make-3.82
M
Ma Jun 已提交
100 101 102 103
./configure  --prefix=/usr/local/make
make && make install
rm -rf /usr/local/bin/make
ln -s /usr/local/make/bin/make /usr/local/bin/make
104
make --version
M
Ma Jun 已提交
105 106 107 108 109 110 111 112 113
```
### 3. 安装 marisa 
```shell
git clone https://github.com/s-yata/marisa-trie.git
cd marisa-trie
autoreconf -i
./configure --enable-native-code --prefix=/usr/local/stonedb-marisa
make && make install 
```
114
marisa 的安装路径可以根据实际情况指定,示例中的安装路径是 /usr/local/stonedb-marisa。
M
Ma Jun 已提交
115 116 117 118 119
### 4. 安装 rocksdb 
```shell
wget https://github.com/facebook/rocksdb/archive/refs/tags/v6.12.6.tar.gz
tar -zxvf v6.12.6.tar.gz
cd rocksdb-6.12.6
120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138

cmake ./ \
  -DCMAKE_BUILD_TYPE=Release \
  -DCMAKE_INSTALL_PREFIX=/usr/local/stonedb-gcc-rocksdb \
  -DCMAKE_INSTALL_LIBDIR=/usr/local/stonedb-gcc-rocksdb \
  -DWITH_JEMALLOC=ON \
  -DWITH_SNAPPY=ON \
  -DWITH_LZ4=ON \
  -DWITH_ZLIB=ON \
  -DWITH_ZSTD=ON \
  -DUSE_RTTI=ON \
  -DROCKSDB_BUILD_SHARED=ON \
  -DWITH_GFLAGS=OFF \
  -DWITH_TOOLS=OFF \
  -DWITH_BENCHMARK_TOOLS=OFF \
  -DWITH_CORE_TOOLS=OFF 

make -j`nproc`
make install -j`nproc`
M
Ma Jun 已提交
139
```
140
rocksdb 的安装路径可以根据实际情况指定,示例中的安装路径是 /usr/local/stonedb-gcc-rocksdb。
M
Ma Jun 已提交
141 142 143 144 145 146 147 148
### 5. 安装 boost
```shell
wget https://sourceforge.net/projects/boost/files/boost/1.66.0/boost_1_66_0.tar.gz
tar -zxvf boost_1_66_0.tar.gz
cd boost_1_66_0
./bootstrap.sh --prefix=/usr/local/stonedb-boost
./b2 install --with=all
```
149 150 151
boost 的安装路径可以根据实际情况指定,示例中的安装路径是 /usr/local/stonedb-boost。

:::info
152
在编译过程中,除非有关键字 "error" 报错自动退出,否则出现关键字 "warning"、"failed"是正常的,安装 boost 大概需要25分钟左右。
153
:::
M
Ma Jun 已提交
154
## 第四步:执行编译
155 156 157 158 159 160 161 162 163 164 165 166
StoneDB 现有 5.6 和 5.7 两个分支,下载的源码包默认是 5.7 分支。下载的源码包存放路径可根据实际情况指定,示例中的源码包存放路径是在根目录下,并且是切换为 5.6 分支的编译安装。
```shell
cd /
git clone https://github.com/stoneatom/stonedb.git
cd stonedb
git checkout remotes/origin/stonedb-5.6
```
在执行编译脚本前,需要修改编译脚本的两处内容:

1)StoneDB 安装目录,可根据实际情况修改,示例中的安装目录是 /stonedb56/install;

2)marisa、rocksdb、boost 的实际安装路径,必须与上文安装 marisa、rocksdb、boost 的路径保持一致。
M
Ma Jun 已提交
167
```shell
168
###修改编译脚本
M
Ma Jun 已提交
169
cd /stonedb/scripts
170 171 172 173 174 175 176 177 178 179 180 181
vim stonedb_build.sh
...
install_target=/stonedb56/install
...
-DDOWNLOAD_BOOST=0 \
-DWITH_BOOST=/usr/local/stonedb-boost/ \
-DWITH_MARISA=/usr/local/stonedb-marisa \
-DWITH_ROCKSDB=/usr/local/stonedb-gcc-rocksdb \
2>&1 | tee -a ${build_log}

###执行编译脚本
sh stonedb_build.sh
M
Ma Jun 已提交
182
```
183 184 185
:::info
如果是 CentOS/RedHat ,需要注释 os_dist 和 os_dist_release,并且修改 build_tag ,这是因为 "lsb_release -a" 返回的结果中,Distributor、Release、Codename 显示的是 n/a。注释 os_dist 和 os_dist_release 只会影响产生的日志名和 tar 包名,不会影响编译结果。
:::
M
Ma Jun 已提交
186
## 第五步:启动实例
187
用户可按照手动安装和自动安装两种方式启动 StoneDB。
M
Ma Jun 已提交
188 189 190 191 192 193
### 1. 创建用户
```shell
groupadd mysql
useradd -g mysql mysql
passwd mysql
```
194
### 2. 手动安装
195
编译完成后,如果 StoneDB 安装目录不是 /stonedb56,不会自动生成 reinstall.sh、install.sh 和 my.cnf 文件,需要手动创建目录、初始化和启动实例。还需要配置 my.cnf 文件,如安装目录,端口等参数。
M
Ma Jun 已提交
196
```shell
197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219
###创建目录
mkdir -p /data/stonedb56/install/data/innodb
mkdir -p /data/stonedb56/install/binlog
mkdir -p /data/stonedb56/install/log
mkdir -p /data/stonedb56/install/tmp
chown -R mysql:mysql /data

###配置my.cnf
vim /data/stonedb56/install/my.cnf
[mysqld]
port      = 3306
socket    = /data/stonedb56/install/tmp/mysql.sock
datadir   = /data/stonedb56/install/data
pid-file  = /data/stonedb56/install/data/mysqld.pid
log-error = /data/stonedb56/install/log/mysqld.log

chown -R mysql:mysql /data/stonedb56/install/my.cnf

###初始化实例
/data/stonedb56/install/scripts/mysql_install_db --datadir=/data/stonedb56/install/data --basedir=/data/stonedb56/install --user=mysql

###启动实例
/data/stonedb56/install/bin/mysqld_safe --defaults-file=/data/stonedb56/install/my.cnf --user=mysql &
M
Ma Jun 已提交
220
```
221 222
### 3. 自动安装
编译完成后,如果 StoneDB 安装目录是 /stonedb56,会自动生成 reinstall.sh、install.sh 和 my.cnf 文件,执行 reinstall.sh 就是创建目录、初始化实例和启动实例的过程。
M
Ma Jun 已提交
223
```shell
224 225
cd /stonedb56/install
./reinstall.sh
M
Ma Jun 已提交
226
```
227 228 229
:::info
reinstall.sh 与 install.sh 的区别?<br />reinstall.sh 是自动化安装脚本,执行脚本的过程是创建目录、初始化实例和启动实例的过程,只在第一次使用,其他任何时候使用都会删除整个目录,重新初始化数据库。install.sh 是手动安装提供的示例脚本,用户可根据自定义的安装目录修改路径,然后执行脚本,执行脚本的过程也是创建目录、初始化实例和启动实例。以上两个脚本都只能在第一次使用。
:::
230
### 4. 执行登录
M
Ma Jun 已提交
231
```shell
232
/stonedb56/install/bin/mysql -uroot -p -S /stonedb56/install/tmp/mysql.sock
M
Ma Jun 已提交
233 234
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
235 236
Your MySQL connection id is 2
Server version: 5.6.24-StoneDB-debug build-
M
Ma Jun 已提交
237 238 239 240

Copyright (c) 2000, 2022 StoneAtom Group Holding Limited
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

241
mysql> show databases;
M
Ma Jun 已提交
242 243 244 245 246
+--------------------+
| Database           |
+--------------------+
| information_schema |
| cache              |
247
| innodb             |
M
Ma Jun 已提交
248 249 250
| mysql              |
| performance_schema |
| sys_stonedb        |
251
| test               |
M
Ma Jun 已提交
252
+--------------------+
253
7 rows in set (0.00 sec)
254
```