-
Notifications
You must be signed in to change notification settings - Fork 6
kunlun_cluster源码编译安装及后续更新升级
“由于官网上的安装包都是由ubuntu编译的,所以在使用其它的发行版(如centos)进行安装时可能会出现环境不存在/过低等问题,所以推荐先对源码进行编译再安装。 ”
-
编译
-
存储节点编译
编译前,UBUNTU要安装以下环境:
- sudo apt-get update
- apt-get install -y git cmake libicu-dev libaio-dev libreadline-dev zlib1g-dev flex bison libssl-dev libcrypt-dev gcc g++ pkg-config libncurses5-dev python python-pip
CENTOS环境:
- sudo yum install -y git cmake libarchive flex bison make gcc gcc-c++ ncurses-devel ncurses-libs libtirpc libtirpc-devel \
- zlib-devel openssl openssl-devel libaio libaio-devel icu libicu libicu-devel readline readline-devel
编译RPCGEN:
- wget https://github.com/thkukuk/rpcsvc-proto/releases/download/v1.4/rpcsvc-proto-1.4.tar.gz
- tar -xzf rpcsvc-proto-1.4.tar.gz
- cd rpcsvc-proto-1.4
- ./configure
- make
- sudo make install
-
从git上拉取源码:(有github和gitee两种方式,推荐gitee,国内相对快些)
a) git clone https://gitee.com/zettadb/kunlun-storage.git
b) git clone https://github.com/zettadb/kunlun-storage.git
-
进入刚拉取的文件里,新建一个build文件夹且进入该文件夹
a) cd kunlun-storage/
b) mkdir build
c) cd build
-
通过wget获取boost_1_70_0并且解压
a) wget --no-check-certificate http://192.168.0.104:14000/thirdparty/boost_1_70_0.tar.gz (内部)
或者
wget https://boostorg.jfrog.io/artifactory/main/release/1.70.0/source/boost_1_70_0.tar.gz (外部)
git clone https://gitee.com/liu-liangcheng/boost_1_70_0.git (gitee)
b) tar -xzf boost_1_70_0.tar.gz
-
使用cmake进行编译
a)> cmake .. -DCMAKE_BUILD_TYPE=release -DCMAKE_INSTALL_PREFIX=/path/ -DWITH_SSL=system -DWITH_BOOST=boost_1_70_0 -DWITH_KEYRING_VAULT=0 -DWITH_ZLIB=bundled -DWITH_TOKUDB=NO -DWITH_EDITLINE=bundled -DWITH_LTO=0 -DWITH_ROUTER=0 -DWITH_FEDERATED_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_NGRAM_PARSER=1 -DWITHOUT_ROCKSDB=1 -DWITH_ZSTD=bundled -DWITH_LZ4=bundled -DWITH_PROTOBUF=bundled -DWITH_LIBEVENT=bundled -DWITH_JEMALLOC=0
如:
sudo cmake .. -DCMAKE_BUILD_TYPE=debug -DCMAKE_INSTALL_PREFIX=/home/charles/build/complie/percona-8.0.18-bin-rel -DWITH_SSL=system -DWITH_BOOST=boost_1_70_0 -DWITH_KEYRING_VAULT=0 -DWITH_ZLIB=bundled -DWITH_TOKUDB=NO -DWITH_EDITLINE=bundled -DWITH_LTO=0 -DWITH_ROUTER=0 -DWITH_FEDERATED_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_NGRAM_PARSER=1 -DWITHOUT_ROCKSDB=1 -DWITH_ZSTD=bundled -DWITH_LZ4=bundled -DWITH_PROTOBUF=bundled -DWITH_LIBEVENT=bundled -DWITH_JEMALLOC=0
注意-DCMAKE_INSTALL_PREFIX这个参数,填的是要安装的路径,如果不填该参数则会安装到/usr/local/下,推荐填写,方便后续操作。
-
make && make install
a) 直接使用make,则是只有一个线程进行编译。
如果觉得慢可以使用make -j(慎用),就是不限制编译时线程的数量,速度快到飞起,前提是该主机没有其它用户在使用或者有其它操作,这个时候再开个窗口会发现无法操作了,因为所有的资源都在进行编译。
也可以自定义线程数量进行编译(推荐),如make -j8,同时使用8个线程并行编译。
b) Make完后就直接make install
make 完后进入到自定义安装的文件夹下,有这些(如下图)则表示编译成功
- 计算节点编译
-
在git上拉取源码(两种方式,推荐gitee)
a) git clone https://gitee.com/zettadb/kunlun.git
b) git clone https://github.com/zettadb/kunlun.git
-
进入到刚拉取的源码包里
a) cd Kunlun
-
使用configure文件进行编译
a) ./configure --enable-release --prefix=/path-to-install
b) --enable-release则为release版本(可以不填,默认为release版本);--prefix=参数是要安装的路径
如:./configure --enable-debug --prefix=/home/charles/build/complie/postgresql-11.5-rel
-
make(make -jn,n根据主机的cpu来定)
-
make install
- 集群管理节点编译
-
在git上拉取源码(两种方式,推荐gitee)
a) git clone https://gitee.com/zettadb/cluster_mgr.git
b) git clone https://github.com/zettadb/cluster_mgr.git
-
进入到源码包里面的src文件夹
a) cd cluster_mgr/src
-
使用cmake进行编译
a) cmake . -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/path/
如:sudo cmake . -DCMAKE_BUILD_TYPE=debug -DCMAKE_INSTALL_PREFIX=/home/charles/build/complie/cluster_mgr_rel
i. -DCMAKE_INSTALL_PREFIX参数为安装路径
-
make
-
make install
-
安装 安装kunlun_cluster有手动和一键安装两种方式,推荐使用一键安装
-
手动安装 跳过手动安装文章的获取安装包步骤,使用刚编译好的包进行手动安装
-
使用编译好的包进行一键安装
-
把刚编译好的包打包成以下文件:(如果不使用一键安装则可以跳过该步骤)
a) 进入存储节点安装目录的上级目录,存储节点包改名为percona-8.0.18-bin-rel并且打包
i. 将编译好的kunlun-storage包改名成percona-8.0.18-bin-rel
ii. 使用tar -zcf压缩为percona-8.0.18-bin-rel.tgz
如:tar -zcf percona-8.0.18-bin-rel.tgz percona-8.0.18-bin-rel
b) 进入计算节点安装目录的上级目录,计算节点包改名为postgresql-11.5-rel并且打包
i. 将编译好的kunlun包改名成postgresql-11.5-rel
ii. 使用tar -zcf压缩为postgresql-11.5-rel.tgz
如 : tar -zcf postgresql-11.5-rel.tgz postgresql-11.5-rel
c) 进入集群管理节点安装目录的上级目录,集群管理节点包改名为cluster_mgr_rel并且打包
i. 将编译好的集群管理节点包改名成cluster_mgr_rel
ii. 使用tar -zcf压缩为cluster_mgr_rel.tgz
如 : tar -zcf cluster_mgr_rel.tgz cluster_mgr_rel
-
获取一键安装脚本:(如果不使用一键安装则可以跳过该步骤)
git cloud https://github.com/zettadb/cloudnative.git
a) 通过git获取脚本
b) 将刚刚打包好的三个压缩文件放到cluster目录下
c) 后续一键安装步骤参考(跳过第一步到第三步)
http://www.zettadb.com/blogs/install_kunlun_cluster
“如果在安装时出现环境的问题,把源码包里lib/deps里对应的环境cp到lib下,然后重新编译安装就行。这样只替换了局部的环境,并不会把整个系统的环境替换掉,考虑到服务器的各个应用依赖的环境不同,所以不建议替换系统的环境。
如果是第一次安装,建议先用手动安装一下,试试看有什么环境是缺少的或者过低的,然后再进行一键安装,相对来说发现环境的问题会快一些。”
-
更新升级
-
更新存储节点:
-
进入到存储节点的源码目录下
-
git pull
-
git log来查看是否已经pull到最新的版本里了
-
按照前面的编译步骤重新编译
-
进入已安装的存储节点实例的数据目录,把etc里的文件替换到新编译的存储节点目录下的etc里
a) 使用ps -ef | grep mysql 查看实例所在的目录basedir
b) 将实例basedir目录etc下的instances_list.txt替换到新编译的存储节点目录下的etc里
-
使用新编译的存储节点目录下dba_tools的stopmysql.sh和startmysql.sh脚本对实例进行重启操作
a) 可以vi刚替换的instances_list.txt查看实例的端口号
b) 使用stopmysql.sh 端口号 停止所有实例
c) 使用startmysql.sh 端口号 启动实例,按instances_list.txt的顺序启动实例
“由于使用的是contos,限制过多不被允许使用ulimit操作,该报错正常情况下并无大碍 ” d) Stopmysql步骤的实例也可以直接kill掉,或者自己写一个脚本一次性kill完,最好还是使用前面推荐的stopmysql.sh脚本。(startmysql同理)
使用ps -ef | grep mysql 查看实例的dasedir是否已经是为新编译的路径
- 更新计算节点
-
进入到存储节点的源码目录下
-
git pull
-
按照前面的编译步骤重新编译
-
进入已安装的计算节点实例的数据目录,把etc里的文件替换到新编译的计算节点目录下的etc里
a) 使用ps -ef | grep mysql 查看实例所在的目录basedir
b) 将实例basedir目录etc下的instances_list.txt替换到新编译的计算节点目录下的etc里
-
Kill掉要更新的postgres实例,使用新编译的计算节点目录下scripts文件夹里start_pg.py启动计算节点,按照instances_list.txt的顺序逐个开启
ps -ef | grep postgres查看basedir是否更新成新编译的目录,是则视为更新成功
更新集群管理节点: 1.进入集群管理节点的basedir
cd /cluster_mgr_rel.basedir/
- 停止当前的集群管理节点
bash bin/cluster_mgr_safe --pidfile=run.pid --stop
3.和上面一样,编译一个新的集群管理节点
4.把旧的集群管理节点的clustermgr.cnf文件复制到新的集群管理节点目录下
cp /old_cluster_mgr_rel.basedir/ /new_cluster_mgr_rel.basedir/
5.启动集群管理节点
bash -x bin/cluster_mgr_safe --debug --pidfile=run.pid clustermgr.cnf >& run.log </dev/null &
通过 ps -ef | grep cluster 来查看是否启动了集群管理节点
无论是计算节点还是存储节点,更新的步骤都是
- git pull
- 重新编译
- 把旧instances_list.txt替换到新编译包里etc下
- 按instances_list.txt里的顺序逐个启动节点
- 查看各个节点的dasedir是否更新为新编译包的路径