集群常用命令

举报
CloudGanker 发表于 2021/11/25 16:49:44 2021/11/25
【摘要】 集群常用命令

CN 修复

gs_replace -t config -h CN所在节点的节点名
gs_replace -t start  -h CN所在节点的节点名

创建逻辑集群

# 所有节点
gs_lcctl -t create --name=logical_cluster -h all
# 指定 DN 环
gs_lcctl -t create --name=logical_cluster -h node1,node2,node3

创建 cgroup

# root用户登录并切换好 gs_cgroup 安装目录 (GAUSSHOME)
# 删除
./gs_cgroup -d -U $USER
# 创建
./gs_cgroup -c -U $USER -H $GAUSSHOME
# 查看
./gs_cgroup -P -U $USER
# omm用户登录,重启集群(否则出现 Failed to initialize Cgroup 报错信息)

Git版本回退

# 查看待回退版本号
gsql -V
# 查看 mr后的版本号对应的 commit 号
git ls-remote | grep "10743"
# 回退代码
git reset --hard + commit号
git log --graph --all

core

echo "/corefile/core-%e-%p-%t" > /proc/sys/kernel/core_pattern
# 产生 core 文件
kill -s SIGSEGV $$

关联远程分支

git push --set-upstream origin trunk

git 生成 patch

# 方法一
git diff commitOld commitNew > a.patch
git apply a.patch
# 方法二
git format-patch commidOld..commitNew
git am *.patch

模拟断网

# 禁止某IP的链接
iptables -A INPUT -s 192.168.1.1 -j DROP
# 查看规则
iptables -L
# 删除规则
iptables -D INPUT 1

查看linux发行版

# suse
cat /etc/SuSE-release

进程信息

# top 查看指定 pid 的线程占用
top -H -p pid

网络

本端
netstat -anop | grep 对端监听端口 | grep 本进程pid
输出信息的第二列是接收buffer,第三列是发送buffer

B17B34D4-4A46-4417-A8DF-B6DDC3DD250F-1612938310363.png

正常情况,网卡有两处硬件规格:
一处是流量(recv_byte/send_byte),万兆网上限1.2GB,一般达不到,900MB以上就算流量吃满了
二处是包转发率recv_byte/recv_pkg(pps:packets per second),在CPU资源充足时,可以跑到100万pps,一般到50万pps就算大压力了。

pps达到50万左右,说明系统中有大量小包(如果是大包,则10万左右pps可达到1GB带宽上限),小包太多会导致网卡占用CPU资源上升,带宽利用率下降,需要分析小包多的原因。

异常情况,主要看drop/resend百分比,超过0.1%则需要注意,大概1/10的概率超过0.1%,则网络有问题,峰值如果超过1%,且丢包数>10,则说明瞬时丢包严重。

文件

# 大文件
dd if=/dev/zero of=test5_6G bs=1G count=6
# 大文件(不实际写入)
fallocate -l 10G bigfile
# 一百万小文件
seq 1000000 | xargs -i dd if=/dev/zero of={}.dat bs=1024 count=1
# 查看进程打开文件
lsof -p pid

时间同步

service ntpd stop
ntpdate 192.168.1.1

代码统计

wc -l `find . -name '*.cpp'`

git 使用

x509: certificate signed by unknown authority

git config --global http.sslVerify  false
git config --global https.sslVerify false

git diff检查行尾空格

git diff --check

redis_progress_detail

# 表格导出后转csv
cat detail.table | sed -e 's/^[ ]*//g' | sed -e 's/[ ]*$//g' | awk -F"|" '{print $1","$2","$3","$4","$5","$6}' | sed -e 's/[ ]*,[ ]*/,/g'
# 创建相同表格
create table redis_progress_detail_like(like redis_progress_detail);
# 导入csv数据
copy redis_progress_detail_like from '/home/user/sqlTools/detail.csv' with csv;

查看数据库大小

select datname, pg_database_size(datname::text) from pg_database order by datname;

查看表在每个节点上的大小

select nodename, dnsize, pg_size_pretty(dnsize) as size from table_distribution('tpcds1kx_col', 'store_sales') order by nodename;

查看schema

-- 查看所有 schema 列表
SELECT * FROM pg_namespace;
-- 查看某 schema 的表
SELECT distinct(tablename),schemaname from pg_tables where schemaname = 'pg_catalog';

查看是否有删除列

select oid, relname from pg_class where relname = 'store_sales_tmp_copy';
  oid  |       relname        
-------+----------------------
 26348 | store_sales_tmp_copy
(1 row)

select attrelid,attname,atttypid,attisdropped ,attnum from pg_attribute where attrelid=26348;

端口占用

lsof -i:port

设置异常检测框架参数

gs_guc set -Z cm   -c "abnormal_check_memory_usage = '{ \"_name\" : \"libac_memory_usage.so\", \"check_interval\" : \"60\", \"usage_threshold\" : \"70\", \"check_count\" : \"10\" }'"

sort

# -k 列号;-t 分隔符;-n 数值;-r 逆序
sort -k 2 -t ':' -n -r 

gdb忽略信号

handle SIGPIPE nostop noprint

gdb打印stl

# 方法一:借助stl-views-1.0.3.gdb, 可以打印vector, map, list等,但是unordered_map不能打印
source stl-views-1.0.3.gdb
pvec g_confLogPattern # 打印 std::vector
# 方法二:
# 1. 在编译机上搜索,找到与g++版本相同的结果
#    例如,/xxx/python/libstdcxx
find / -name "libstdcxx*" 2>/dev/null
# 2. 将上面搜索到的目录,拷贝至core文件所在机器上,在用户家目录下.gdbinit文件添加下面内容,
#    注意修改第三行中的路径
python
import sys
sys.path.insert(0, '/root/libstdcxx')
from v6.printers import register_libstdcxx_printers
register_libstdcxx_printers (None)
end
# 3. 使用gdb打开core文件,打印变量即可,例如
(gdb) p ((CmInstanceInfoContainer*)0xaaaab3b0e848)->instanceInfo_
$5 = std::unordered_map with 2 elements = {[5001] = {_vptr.CmInstanceInfo = 0xaaaab3a770e0 <vtable for CmInstanceInfo+16>, id = 0, type = TYPE_NODE, name = "", 
    path = ""}, [1001] = {_vptr.CmInstanceInfo = 0xaaaab3a770e0 <vtable for CmInstanceInfo+16>, id = 0, type = TYPE_NODE, name = "", path = ""}}
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。