暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

CockroachDB对ARM-64架构支持方法及步骤介绍

CockroachDB 2021-07-14
1013

Cockroach Labs公司的CockroachDB(简称CRDB)是一款适合于海量数据环境下高并发OLTP和OLAP场景的开源分布式NewSQL/HTAP数据库。它采用了新的架构和设计、新的分布式理论和算法,吸收了关系型数据库和NoSQL数据库各自的优点,无需应用级的分库分表,具有SQL模型的简单易用、水平弹性扩展、支持强一致性分布事务、异地多活的高可用、云原生等一系列特点。


 “外部易用性”是CRDB的核心设计理念之一,它的所有功能都封装在一个二进制可执行程序文件中,可以做到最小化设置和没有外部依赖的简单、直接部署。


我们可以非常简单地在Linux、Mac OS、Windows等多种操作系统环境下运行它;此外,CRDB还能够非常方便的在Docker和Kubernetes下运行。


CRDB支持标准X86/X86-64架构,一个数据库集群可以从一台服务器扩展到上千台。同时也能完美支持ARM-64架构。我们已经在国产飞腾-麒麟平台上(飞腾ARM CPU+银河麒麟Linux操作系统—Kylin 4.0.2 GNU/Linux 4.4.58)通过测试和验证。


本文将和大家分享如何基于开源CockroachDB实现对ARM-64架构支持的方法和步骤。

 

编译环境说明

本文以CockroachDB 2.1.3版本的源码为例说明一般的编译方法以及编译ARM-64版本的方法。环境如下:

一、一个虚拟机(X86_64,4vCores/8G Mem,20G本地存储)

二、操作系统:Ubuntu16.04 LTS

三、需要的软件组件:

  • git

  • ncurses

  • gcc-6.x 、gcc++-6.x

  • make、cmake 3.8.1

  • go 1.10.7

  • docker

  • nodeJS、yarn

编译环境安装和配置

一、安装操作系统

只需要安装基本的Ubuntu 16.04 LTS即可,需要的包可以根据需要再随后安装:

关于虚拟机的创建(比如使用VMware或VisualBox)和在虚拟机中安装Ubuntu Linux这里从略,不清楚的可以搜索相应的介绍文章。


在安装完Ubuntu之后,创建的用户在sudo的时候提示需要输入口令。我们以使用如下方法进行修改,使得用户sudo时免口令提示(假设用户名为crdb):sudo vi etc/sudoers


在文件中增加:crdb ALL=(ALL)NOPASSWD:ALL


保存文件退出vi,然后重新登录后起作用。

 

二、安装git

sudo apt-get update

sudo apt-get install git #安装git 2.7.4

 

三、安装ncurses

sudo apt-get install libncurses5-dev

 

四、安装gcc-6.x和g++-6.x

sudo apt-get update

sudo add-apt-repository ppa:ubuntu-toolchain-r/test

sudo apt-get update

sudo apt-get install gcc-6 g++-6

 

cd usr/bin

sudo ln -s x86_64-linux-gnu-gcc-6 gcc

sudo ln -s x86_64-linux-gnu-gcc-ar-6 gcc-ar

sudo ln -s x86_64-linux-gnu-gcc-nm-6 gcc-nm

sudo ln -s x86_64-linux-gnu-gcc-ranlib-6 gcc-ranlib

sudo ln -s x86_64-linux-gnu-g++-6 g++

 

五、安装cmake 3.8.1

cd tmp

wget https://cmake.org/files/v3.8/cmake-3.8.1-Linux-x86_64.sh

chmod +x cmake-3.8.1-Linux-x86_64.sh

sudo bash cmake-3.8.1-Linux-x86_64.sh

sudo mv cmake-3.8.1-Linux-x86_64/  opt

 

sudo ln -s opt/cmake-3.8.1-Linux-x86_64/bin/cmake  usr/local/bin/cmake

cmake --version

 

六、安装make

sudo apt-get install make  #make 4.1

 

七、安装autoconf

sudo apt-get install autoconf  #autoconf 2.69-9

 

八、安装golang 1.10.7

cd tmp

wget https://dl.google.com/go/go1.10.7.linux-amd64.tar.gz

sudo tar -C usr/local -xzvf go1.10.7.linux-amd64.tar.gz

vi .profile

增加如下:

PATH="$HOME/bin:$HOME/.local/bin:$PATH:/usr/local/go/bin"

 

九、安装node js 6.x

curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -

sudo apt-get install nodejs=6.16.0-1nodesource1

 

十、安装yarn

wget https://github.com/yarnpkg/yarn/releases/download/v1.7.0/yarn_1.7.0_all.deb

sudo dpkg -i yarn_1.7.0_all.deb

 

检查安装之后的版本:

nodejs -v

yarn -v

 

十一、安装Docker

参考:

https://docs.docker.com/install/linux/docker-ce/ubuntu/#install-using-the-repository

 

#设置repository

sudo apt-get update

sudo apt-get install \

   apt-transport-https \

   ca-certificates \

   curl \

   software-properties-common

 

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

 

sudo add-apt-repository \

  "deb [arch=amd64] https://download.docker.com/linux/ubuntu \

  $(lsb_release -cs) \

  stable"

 

sudo apt-get update

sudo apt-get install docker-ce=17.06.2~ce-0~ubuntu

 

# 验证安装的docker是否正常

sudo docker run hello-world

 


编译X86-64 Linux下运行的CockroachDB

一、 获得CockroachDB源码

cd/home/crdb

mkdir -p cockroach-master/src/github.com/cockroachdb/

cd cockroach-master/src/github.com/cockroachdb/

git clone https://github.com/cockroachdb/cockroach.git

cd cockroach

git checkout v2.1.3   #以cockroachdb 2.1.3为例

 

二、 编译构建

cd/home/crdb/cockroach-master/src/github.com/cockroachdb/cockroach

make build

如果只编译开源版本的功能,执行:

make buildoss

 

编译ARM-64 Linux下运行的CockroachDB

cd/home/crdb/cockroach-master/src/github.com/cockroachdb/cockroach

 

#启动cockroach构建容器,如果本地镜像不存在会下载。

./build/builder.sh pull

 

#构建ARM-64 Linux下运行的版本

./build/builder.sh mkreleasearm64-linux-gnueabi  

 

说明:

CockroachDB在builder容器中已经提供了交叉编译环境,支持的目标平台包括:

#   - amd64-linux-gnu:amd64, Linux 2.6.32, dynamically linkglibc 2.12.2

#   - arm64-linux-gnueabi:  arm64,Linux 3.7.10, dynamically link glibc 2.12.2

#   - amd64-windows:      amd64, Windows 8, statically link all non-Windows libraries

编译成功后,会在/home/crdb/cockroach-master/src/github.com/cockroachdb/cockroach目录下生成编译好的二进制执行程序cockroach-linux-3.7.10-gnu-aarch64

 

在aarch64(arm-64)仿真环境下测试


这里假设用户的已经安装好Ubuntu 16.04 LTS操作系统。下面是具体的步骤:

一、安装Docker

具体方法参见前面的内容,这里从略。


二、安装QEMU

sudo apt-get install qemu-user-static


三、启动仿真环境容器  

docker run -it ericvh/arm64-ubuntu-dev /bin/bash


四、启动成功后进入容器内部,执行测试:

#把编译好的ARM-64版本的可执行程序拷贝到仿真容器中,container-id是仿真容器的id

docker cp cockroach-linux-3.7.10-gnu-aarch64container-id:/usr/local/bin/cockroach

docker exec -it <container-id>  /bin/bash

uname -m

cockroach sql –help

cockroach start –insecure #启动单节点cockroachdb

cockroach sql –insecure #启动crdb的sql命令行程序,执行一些语句进行测试。

多节点安装可参考前期文章和中文社区帮助。

 

银河麒麟的测试环境下运行概览

使用上面的第4节描述的交叉编译技术,把编译好的ARM-64版本的CockroachDB2.1部署在麒麟云环境下。下图为运行环境上操作系统的版本、CPU架构以及CockroachDB的版本信息以及执行Show Databases结果信息。

 



 关于我们:我们是百度 DBA 团队,团队有两位 CockroachDB PMC Member 及一位 Contributor, 目前正积极推动 NewSQL 在百度内部以及外部的发展。除了NewSQL, 我们在MySQL, PostgreSQL, GreenPlum 有多年的内核开发经验及实践经验,对数据库和大数据领域有疑问或者需求欢迎联系我们,同时欢迎有志青年加入我们!



关注我们 



文章转载自CockroachDB,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论