从源码构建
如何从本机构建、开发及测试Vitess
如果您遇到问题或有疑问,我们建议您在我们的Slack 频道上发帖,点击右上角的Slack图标加入。这是一个非常活跃的社区论坛,也是与其他用户互动的好地方。当然,你也可以加入微信群组vitess中国寻求帮助,这里的人们也很热心,时刻准备好回答您的任何问题。
源码编译
以下部分介绍了在Linux和macOS上手动构建Vitess的过程。如果您是Vitess的新手,建议先从本地部署 指南开始。
安装依赖
我们目前正在Ubuntu 14.04(Trusty)和Debian 8(Jessie)上定期测试Vitess。 macOS 10.11(El Capitan)及以上版本也可以使用。安装说明如下所示.
Ubuntu and Debian
Vitess依赖如下软件和库:
Install MySQL:
# Apt based
sudo apt-get install mysql-server
# Yum based
sudo yum install mysql-server
Vitess支持MySQL 5.6+和MariaDB 10.0+。我们建议使用MySQL 5.7。
卸载或者禁用 AppArmor。某些版本的MySQL带有Vitess工具尚未识别的默认AppArmor配置。当Vitess通过
mysqlctl
工具初始化MySQL实例时,这会导致各种权限失败。这仅在测试环境中存在问题。如果在生产中需要AppArmor,则可以在不通过mysqlctl
的情况下适当地配置MySQL实例。sudo service apparmor stop
sudo service apparmor teardown # safe to ignore if this errors
sudo update-rc.d -f apparmor remove
重新启动以确保完全禁用AppArmor。
安装 etcd v3.0+. 请记住在您的路径中包含
etcd
命令。安装构建和运行Vitess所需的以下工具:
- make
- automake
- libtool
- python-dev
- python-virtualenv
- python-mysqldb
- libssl-dev
- g++
- git
- pkg-config
- bison
- curl
- unzip
可以使用以下apt-get命令安装它们
$ sudo apt-get install make automake libtool python-dev python-virtualenv python-mysqldb libssl-dev g++ git pkg-config bison curl unzip
Mac OS
安装 Homebrew。如果您的
/usr/local
目录不为空且尚未使用Homebrew,则需要运行以下命令:sudo chown -R $(whoami):admin /usr/local
您可以通过安装Xcode(推荐)或 pkg-config来满足Vitess的依赖关系。如果没有安装Xcode,那么采用如下命令安装pkg-config
brew install pkg-config
安装 etcd v3.0+. 将
etcd
命令放置在您的环境变量路径中。运行如下命令:
brew install go ant automake libtool python git bison curl wget mysql57
pip install --upgrade pip setuptools
pip install virtualenv
pip install MySQL-python
pip install tox
Vitess引导程序脚本对go运行时环境进行了一些检查,因此建议在您在
~/.profile
,~/.bashrc
,~/.zshrc
, 或者~/.bash_profile
文件中包含如下命令:export PATH="/usr/local/opt/mysql@5.7/bin:$PATH"
export PATH=/usr/local/go/bin:$PATH
export GOROOT=/usr/local/go
要使Vitess主机名能够正常解析,需要在/etc/hosts文件中添加一个新的映射关系,其中包含计算机的当前LAN IP地址(最好是IPv4)和当前主机名,您可以通过在终端键入’hostname’获得主机名。 将如下命令放到 强制使用 Go DNS 解析器
~/.profile
或者~/.bashrc
或者~/.zshrc
文件中也是一个好主意:
export GODEBUG=netdns=go
编译 Vitess
cd到你想cloen vitess源码的目录,clone之。完成后进入到
src/vitess.io/vitess
目录中。cd $WORKSPACE
git clone https://github.com/vitessio/vitess.git \
src/vitess.io/vitess
cd src/vitess.io/vitess
设置
MYSQL_FLAVOR
:
# It is recommended to use MySQL56 even for MySQL 5.7 and 8.0. For MariaDB you can use MariaDB:
export MYSQL_FLAVOR=MySQL56
如果你的MYSQL数据库安装在
/usr/bin
之外的位置, 请将VT_MYSQL_ROOT
v变量设置为Mysql安装的根目录:# 通过tar包安装的设置参考
export VT_MYSQL_ROOT=/usr/local/mysql
# 通过Homebrew安装的设置参考
export VT_MYSQL_ROOT=/usr/local/opt/mysql@5.7
请注意上述命令设置生效的前提
mysql
可执行文件在/usr/local/opt/mysql@5.7/bin/mysql
这里。运行
mysqld --version
确保你使用的是 MySQL 5.7版本。使用以下命令构建Vitess。请注意,
bootstrap.sh
脚本需要下载一些依赖项。如果您的计算机需要代理才能访问Internet,则需要设置常用的环境变量 (e.g.http_proxy
,https_proxy
,no_proxy
).运行 boostrap.sh 脚本:
BUILD_TESTS=0 ./bootstrap.sh
### example output:
# skipping zookeeper build
# go install golang.org/x/tools/cmd/cover ...
# Found MariaDB installation in ...
# creating git pre-commit hooks
#
# source dev.env in your shell before building
# Remaining commands to build Vitess
source ./dev.env
make build
编译遇到问题怎么办
如果您遇到问题或有疑问,我们建议您在我们的Slack 频道上发帖,点击右上角的Slack图标加入。这是一个非常活跃的社区论坛,也是与其他用户互动的好地方。当然,你也可以加入微信群组vitess中国寻求帮助,这里的人们也很热心,时刻准备好回答您的任何问题。
Python 报错
端到端测试套件目前需要Python 2.7。我们正在努力消除这种依赖关系,你也可以在Docker中运行测试。MySQL 5.7容器包含如下依赖项
make docker_test flavor=mysql57
Node 已存在, port 报错
测试过程失败可能会导致一堆不相关的进程。如果使用默认设置,则可以使用以下命令识别并终止这些进程:
pgrep -f -l '(vtdataroot|VTDATAROOT)' # 展示 Vitess 相关进程
pkill -f '(vtdataroot|VTDATAROOT)' # 干掉 Vitess 相关进程
太多建立到MySQL的连接, 其他超时报错
此错误可能意味着您的磁盘太慢。如果你用不起SSD,可以尝试针对ramdisk进行测试.
tablet连接拒绝, MySQL socket 找不到等问题
这些错误可能表示当尝试分配更多RAM时,计算机耗尽RAM并且服务器崩溃。一些较重的测试需要高达8GB的RAM。
硬盘资源耗尽
一些较大的测试在磁盘上使用高达4GB的临时空间。
文件打开过多
ome Linux发行版附带的默认文件描述符限制对于数据库服务器而言太低。此问题可能会显示为数据库因“太多打开文件”消息而崩溃。检查系统范围的file-max设置以及用户特定的ulimit值。我们建议将它们设置在100K以上是安全的。确切的过程可能因您的Linux发行版而异。
启动单分片集群
你可以使用本地测试脚本101_initial_cluster.sh
快速启动一个单分片Vitess集群,命令如下:
cd examples/local
./101_initial_cluster.sh
验证集群工作是否正常
如果集群工作正常,您应该看到以下状态:
$ pgrep -fl vtdataroot
5451 zksrv.sh
5452 zksrv.sh
5453 zksrv.sh
5463 java
5464 java
5465 java
5627 vtctld
5762 mysqld_safe
5767 mysqld_safe
5799 mysqld_safe
10162 mysqld
10164 mysqld
10190 mysqld
10281 vttablet
10282 vttablet
10283 vttablet
10447 vtgate
您现在应该可以使用以下命令连接到群集:
$ mysql -h 127.0.0.1 -P 15306
Welcome to the MySQL monitor. Commands end with ; or \g.
mysql> show tables;
+-----------------------+
| Tables_in_vt_commerce |
+-----------------------+
| corder |
| customer |
| product |
+-----------------------+
3 rows in set (0.01 sec)
您还可以使用以下URL浏览到vtctld控制台:
http://localhost:15000
下一步的工作
恭喜!您现在已启动并运行本地vitess群集。您可以按照以下步骤完成其他练习 Run Vitess Locally。
笔者在Mac上也尝试安装了一次Vitess,大家也可以参考下,附上链接如下 : Vitess build on Mac