作者: Ju4t
# docker
yum install -y yum-utils
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
systemctl start docker
# kubelet
curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl
chmod +x ./kubectl
mv ./kubectl /usr/local/bin/kubectl
# minikube
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube
curl -LO https://labfileapp.oss-cn-hangzhou.aliyuncs.com/helm-v3.9.0-linux-amd64.tar.gz
tar -zxvf helm-v3.9.0-linux-amd64.tar.gz
mv linux-amd64/helm /usr/local/bin/helm
# mysql
yum install mysql -y
useradd -ms /bin/bash galaxykube
usermod -aG docker galaxykube
su galaxykube
cd
minikube start --cpus 4 --memory 8192 --nodes=2 --image-mirror-country cn --registry-mirror=https://docker.mirrors.sjtug.sjtu.edu.cn --kubernetes-version 1.23.3
kubectl cluster-info
kubectl create namespace polardbx-operator-system
helm repo add polardbx https://polardbx-charts.oss-cn-beijing.aliyuncs.com
helm install --namespace polardbx-operator-system polardbx-operator polardbx/polardbx-operator --version 1.3.0
kubectl get pods --namespace polardbx-operator-system
vi polardb-x.yaml
apiVersion: polardbx.aliyun.com/v1
kind: PolarDBXCluster
metadata:
name: polardb-x
spec:
topology:
nodes:
cdc:
replicas: 1
template:
resources:
limits:
cpu: "1"
memory: 1Gi
requests:
cpu: 100m
memory: 500Mi
cn:
replicas: 1
template:
resources:
limits:
cpu: "2"
memory: 4Gi
requests:
cpu: 100m
memory: 1Gi
dn:
replicas: 1
template:
engine: galaxy
resources:
limits:
cpu: "2"
memory: 4Gi
requests:
cpu: 100m
memory: 500Mi
gms:
template:
engine: galaxy
resources:
limits:
cpu: "1"
memory: 1Gi
requests:
cpu: 100m
memory: 500Mi
kubectl apply -f polardb-x.yaml
kubectl get polardbxCluster polardb-x -o wide -w
本步骤将指导您安装 PolarDB-X LogCollector 组件,并将 PolarDB-X 日志投递到 Elastic Search中。
kubectl create namespace polardbx-logcollector
helm install --namespace polardbx-logcollector polardbx-logcollector polardbx/polardbx-logcollector --version=1.3.0-alpha.1
kubectl get pods -n polardbx-logcollector
kubectl patch pxc polardb-x --patch '{"spec":{"config":{"cn":{"enableAuditLog":true}}}}' --type merge
kubectl logs -n polardbx-logcollector {logstash pod name} -f
本步骤将指导您如何在 K8s 上部署一个 Elastic Search 集群。
kubectl create -f https://download.elastic.co/downloads/eck/2.4.0/crds.yaml
kubectl apply -f https://download.elastic.co/downloads/eck/2.4.0/operator.yaml
kubectl get pods -n elastic-system
vim es.yaml
b.按i键进入编辑模式,将如下代码复制到文件中,然后按ECS退出编辑模式,输入:wq后按下Enter键保存并退出。
apiVersion: elasticsearch.k8s.elastic.co/v1
kind: Elasticsearch
metadata:
name: quickstart
spec:
version: 8.4.3
image: elasticsearch:8.4.3
nodeSets:
- name: default
count: 1
config:
node.store.allow_mmap: false
kubectl apply -f es.yaml
kubectl get elasticsearch
vim kibana.yaml
按i键进入编辑模式,将如下代码复制到文件中,然后按ECS退出编辑模式,输入:wq后按下Enter键保存并退出。
apiVersion: kibana.k8s.elastic.co/v1
kind: Kibana
metadata:
name: quickstart
spec:
version: 8.4.3
image: kibana:8.4.3
count: 1
elasticsearchRef:
name: quickstart
kubectl apply -f kibana.yaml
执行如下命令,查看Kibana创建状态。
kubectl get kibana
kubectl get secret quickstart-es-elastic-user -o go-template='{{.data.elastic | base64decode}}' | xargs echo "PASSWORD: "
PolarDB-X 日志采集功能开启后,默认会投递日志到 logstash 的标准输出。您可以修改 logstash 的 output 配置,将日志投递到其它系统中。本步骤将指导您将 PolarDB-X 日志投递到 Elastic Search中,并在 Kibana 上访问日志信息。
CRT=$(kubectl get secret quickstart-es-http-certs-public -o jsonpath={.data})
kubectl patch secret elastic-certs-public -p "{\"data\": ${CRT}}" -n polardbx-logcollector
kubectl get secret quickstart-es-elastic-user -o go-template='{{.data.elastic | base64decode}}' | xargs echo "PASSWORD: "
vim logstash-pipeline-patch.yaml
注意:需要修改 output中的password字段,才能正确投递
data:
logstash.conf: |-
input {
beats {
port => 5044
}
}
filter {
if [fields][log_type] in ["cn_sql_log","cn_slow_log"] {
polardbx {
}
date{
match => ["timestamp", "UNIX_MS","ISO8601"]
timezone => "Asia/Shanghai"
}
mutate{
remove_field => ["event", "timestamp","[message][begin_time]","[message][timestamp]"]
add_field => { "[@metadata][target_index]" => "%{[fields][log_type]}-%{+YYYY.MM.dd}" }
}
} else if [fields][log_type] == "cn_tddl_log" {
grok{
match => { "message" => "%{TIMESTAMP_ISO8601:timestamp} \[%{DATA:thread}\] %{LOGLEVEL:loglevel} %{DATA:logger} - %{JAVALOGMESSAGE:messagetmp}" }
}
date{
match => ["timestamp","ISO8601"]
timezone => "Asia/Shanghai"
}
mutate{
remove_field => ["event","timestamp"]
rename => {"messagetmp" => "message"}
add_field => { "[@metadata][target_index]" => "%{[fields][log_type]}-%{+YYYY.MM.dd}" }
}
} else {
mutate{
add_field => { "[@metadata][target_index]" => "other_log-%{+YYYY.MM.dd}" }
}
}
}
output {
elasticsearch {
hosts => ["https://quickstart-es-http.default:9200"]
user => elastic
password => "{ES 的密码}"
ssl => true
cacert => "/usr/share/logstash/config/certs/ca.crt"
index => "%{[@metadata][target_index]}"
}
}
kubectl patch configmap logstash-pipeline -n polardbx-logcollector --patch-file logstash-pipeline-patch.yaml
kubectl get pods -n polardbx-logcollector -w
本步骤将指导您如何连接通过K8s部署的PolarDB-X集群,并执行相关SQL
kubectl get secret polardb-x -o jsonpath="{.data['polardbx_root']}" | base64 -d - | xargs echo "Password: "
返回结果如下,您可以查看到PolarDB-X集群登录密码
2. 执行如下命令,将PolarDB-X集群端口转发到3306端口。
使用MySQL Client方式登录通过k8s部署的PolarDB-X集群前,您需要进行获取PolarDB-X集群登录密码和端口转发。
kubectl port-forward svc/polardb-x 3306
mysql -h127.0.0.1 -P3306 -upolardbx_root -p<PolarDB-X集群登录密码>
# 检查GMS
select * from information_schema.schemata;
# 创建分区表
create database polarx_example partition_mode='partitioning';
use polarx_example;
create table example (
`id` bigint(11) auto_increment NOT NULL,
`name` varchar(255) DEFAULT NULL,
`score` bigint(11) DEFAULT NULL,
primary key (`id`)
) engine=InnoDB default charset=utf8
partition by hash(id)
partitions 8;
insert into example values(null,'lily',375),(null,'lisa',400),(null,'ljh',500);
select * from example;
select sleep(2);
select sleep(3);
show topology from example;
本步骤将指导您登录 Kibana,查看 PolarDB-X 的SQL日志。
kubectl port-forward service/quickstart-kb-http 5601 --address=0.0.0.0
用户名:elastic
密码:上面获取的ES访问密码
message.sql: "create"