「CockroachDB」:修訂間差異
跳至導覽
跳至搜尋
第37行: | 第37行: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
另外可能要修改<code>replica</code>的數量(預設是5): | 另外可能要修改<code>replica</code>的數量(預設是5),這組指令已經被標為deprecated但目前還可以用: | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
cockroach zone get .meta --insecure | |||
echo "num_replicas: 3" | cockroach zone set .meta -f - --insecure | echo "num_replicas: 3" | cockroach zone set .meta -f - --insecure | ||
cockroach zone get .meta --insecure | |||
</syntaxhighlight> | </syntaxhighlight> | ||
於 2019年1月3日 (四) 11:13 的修訂
CockroachDB是一個分散式的資料庫軟體,目標是與PostgreSQL相容但可以提供橫向擴充的能力。
安裝
CockroachDB的設計是單一執行檔,沒有複雜的安裝包,所以下載複製到目錄裡即可:
cd /tmp
wget -qO- https://binaries.cockroachdb.com/cockroach-v2.1.3.linux-amd64.tgz | tar xvz
cp -i cockroach-v2.1.3.linux-amd64/cockroach /usr/local/bin
設定
設定分成兩塊,一塊是初始第一台機器:
cockroach start --background --insecure --listen-addr=0.0.0.0 --advertise-addr=$(ifconfig eth0 | grep inet | awk '{print $2}')
另外一塊是後續的機器,多了--join
要設定:
cockroach start --background --insecure --listen-addr=0.0.0.0 --join=192.168.x.x --advertise-addr=$(ifconfig eth0 | grep inet | awk '{print $2}')
可以用以下指令確認機器都有連上cluster:
cockroach node ls --insecure
然後用PostgreSQL的client連上測試:
psql -h 192.168.x.x -p 26257 -U root
另外可能要修改replica
的數量(預設是5),這組指令已經被標為deprecated但目前還可以用:
cockroach zone get .meta --insecure
echo "num_replicas: 3" | cockroach zone set .meta -f - --insecure
cockroach zone get .meta --insecure
測試
這邊是拿oltpbenchmark在AWS上測試,使用一台c5.2xlarge
與五台r5.large
架設Kubernetes後再裡面建立六個Pod測試。
Kubernetes
使用Kubernetes時的設定檔如下:
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: poc-r5
spec:
replicas: 5
serviceName: cockroachdb-r5
selector:
matchLabels:
app: cockroachdb-r5
template:
metadata:
labels:
app: cockroachdb-r5
spec:
containers:
- name: cockroachdb-r5
image: ubuntu:18.04
command: ["/bin/sh", "-c"]
args:
- export DEBIAN_FRONTEND=noninteractive;
sed -i 's/archive.ubuntu.com/us.archive.ubuntu.com/' /etc/apt/sources.list;
apt update;
apt install -y iproute2 iputils-ping locales mtr-tiny net-tools tzdata vim-nox wget;
locale-gen en_US.UTF-8;
cd /tmp;
wget -qO- https://binaries.cockroachdb.com/cockroach-v2.1.3.linux-amd64.tgz | tar xvz;
cp -i cockroach-v2.1.3.linux-amd64/cockroach /usr/local/bin;
sleep 3153600000
resources:
requests:
memory: "15Gi"
env:
- name: LC_ALL
value: en_US.UTF-8
nodeSelector:
instancetype: r5
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: poc-c5
spec:
replicas: 1
serviceName: cockroachdb-c5
selector:
matchLabels:
app: cockroachdb-c5
template:
metadata:
labels:
app: cockroachdb-c5
spec:
containers:
- name: cockroachdb-c5
image: ubuntu:18.04
command: ["/bin/sh", "-c"]
args:
- export DEBIAN_FRONTEND=noninteractive;
sed -i 's/archive.ubuntu.com/us.archive.ubuntu.com/' /etc/apt/sources.list;
apt update;
apt install -y ant default-jdk git iproute2 iputils-ping locales mtr-tiny net-tools openjdk-8-jdk postgresql-client tzdata vim-nox wget;
update-alternatives --set java /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java;
locale-gen en_US.UTF-8;
cd /root;
git clone https://github.com/oltpbenchmark/oltpbench.git;
cd oltpbench;
sed -i -e 's/^ALTER TABLE/-- ALTER TABLE/' src/com/oltpbenchmark/benchmarks/tpcc/ddls/tpcc-postgres-ddl.sql;
ant clean;
ant;
cp config/tpcc_config_postgres.xml config/tpcc.xml;
sed -i -e 's/TRANSACTION_READ_COMMITTED/TRANSACTION_SERIALIZABLE/' config/tpcc.xml;
sleep 3153600000
resources:
requests:
cpu: "7000m"
env:
- name: LC_ALL
value: en_US.UTF-8
nodeSelector:
instancetype: c5