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

openGauss每日一练第 1 天 | 学习国产数据库,紧跟时代脚步,乘上飞天列车!

原创 贾大夫 2022-12-07
785

Table of Contents

学海无涯

作为一名前端的我,曾有幸接触过一些Linux操作的知识,也在云服务器开疆拓土的年代里拥有过自己的一方小小天地。

随着技术的提升,知识面的丰富,才会发现,当下的一点一滴,终会汇聚,以成江海。

感谢openGauss和墨天轮,让我再次踏上学习服务器命令行和数据库操作的征程。

潜心求学

第一天的课业,无疑是入门级的,对于相关专业的大佬来说。

作为小白,理应保持求学初心,砥砺奋进,即使寥寥几笔的代码,亦应求得真理。

为此,记录学习笔记及心得体会,以供日后复习,激励自己保持学习之恒心。

学习目标

学习从操作系统层面和使用openGauss工具,具体为一下3点:

  1. 查看数据库的状态
  2. 查看数据库版本
  3. 查看数据文件目录

学习内容

摘要

s_ctl是openGauss提供的数据库服务控制工具,可以用来启停数据库服务和查询数据库状态。主要供openGauss管理模块调用。gs_ctl工具由操作系统用户omm执行。可以执行:启动、停止、重启openGauss节点。

1. 使用omm用户

# 以login-shell的方式,切换omm用户
su - omm

注:
su 命令,switch use,用于切换用户,susu - 略有差异:
加入了-参数,就是login-shell的方式,也就是说切换到另一个用户之后,当前的shell会加载对应的环境变量和各种设置;
如果没有加入-参数,就是non-login-shell的方式,也就是说当前的shell还是加载切换之前的那个用户的环境变量以及各种设置。
如果不想因为切换到另一个用户导致自己在当前用户下的设置不可用,那么就可以用non-login-shell的方式;如果切换用户后,需要用到该用户的各种环境变量,那么使用login-shell方式即可。

2. 查看数据库进程和线程

操作系统层面查看数据库进程和线程。如果数据库启动,则有相应的进程和线程。

# 查看gauss进程
 ps -ef|grep gauss
# 查看gauss线程
 ps -Tp 1

注:
ps 命令,process status,查看正处于Running的进程,可使用 ps aux 查看所有进程。
ps 参数,-ef 查看全格式的全部进程,ps -ef|grep <进程名> 查看并筛选 跟进程名有关的进程,该进程名可以是进程的全部或者部分。ps -Tp <pid> 根据pid查看该进程的线程数。

结果:

omm@modb:~$ ps -ef|grep gauss
omm          1     0  0 12:06 ?        00:00:30 gaussdb
omm        987   930  0 14:17 pts/0    00:00:00 grep gauss
omm@modb:~$ ps -Tp 1
  PID  SPID TTY          TIME CMD
    1     1 ?        00:00:00 gaussdb
    1   298 ?        00:00:00 jemalloc_bg_thd
    1   305 ?        00:00:00 syslogger
    1   306 ?        00:00:00 jemalloc_bg_thd
    1   304 ?        00:00:00 gaussdb
    1   307 ?        00:00:00 alarm
    1   308 ?        00:00:00 reaper
    1   309 ?        00:00:00 jemalloc_bg_thd
    1   310 ?        00:00:00 jemalloc_bg_thd
    1   354 ?        00:00:00 checkpointer
    1   355 ?        00:00:00 Spbgwriter
    1   356 ?        00:00:04 pagewriter
    1   357 ?        00:00:00 pagewriter
    1   358 ?        00:00:00 pagewriter
    1   359 ?        00:00:00 pagewriter
    1   360 ?        00:00:00 pagewriter
    1   361 ?        00:00:00 WALwriter
    1   362 ?        00:00:00 WALwriteraux
    1   363 ?        00:00:00 AVClauncher
    1   364 ?        00:00:00 Jobscheduler
    1   365 ?        00:00:00 asyncundolaunch
    1   366 ?        00:00:00 globalstats
    1   367 ?        00:00:00 applylauncher
    1   368 ?        00:00:00 statscollector
    1   369 ?        00:00:03 percentworker
    1   370 ?        00:00:12 ashworker
    1   371 ?        00:00:02 TrackStmtWorker
    1   372 ?        00:00:00 auditor
    1   373 ?        00:00:00 2pccleaner
    1   374 ?        00:00:00 faultmonitor
    1   375 ?        00:00:00 WLMworker
    1   376 ?        00:00:01 WLMmonitor
    1   377 ?        00:00:00 WLMarbiter
    1   378 ?        00:00:00 undorecycler

3. 查看数据库状态

使用gs_ctl工具查看数据库状态,如果数据库启动,显示gs_ctl: server is running (PID: 1)

# 使用gs_ctl工具查看数据库状态
gs_ctl status

结果:

omm@modb:~$ gs_ctl status
[2022-12-07 14:26:08.735][1026][][gs_ctl]: gs_ctl status,datadir is /var/lib/opengauss/data 
gs_ctl: server is running (PID: 1)
/usr/local/opengauss/bin/gaussdb

4.查看数据文件的目录

使用gs_ctl 查看数据文件的目录

# 使用gs_ctl 查看数据文件的目录
gs_ctl notify

结果:

omm@modb:~$ gs_ctl notify
[2022-12-07 14:32:33.202][1056][][gs_ctl]: gs_ctl notify ,datadir is /var/lib/opengauss/data 
[2022-12-07 14:32:33.202][1056][][gs_ctl]: the parameter of notify must be specified

5.查看omm用户的环境变量

cat ~/.bashrc

注:
cat 命令,catenate,显示或连接多个文本文件。
~ ,代表当前用户目录。
.bashrc ,bashrc是在系统启动后就会自动运行,主要保存个人的个性化设置,如命令别名、路径等:使得使用方便,效率提升。

结果:

omm@modb:~$ cat ~/.bashrc
# ~/.bashrc: executed by bash(1) for non-login shells.
# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc)
# for examples

# If not running interactively, don't do anything
case $- in
    *i*) ;;
      *) return;;
esac

# don't put duplicate lines or lines starting with space in the history.
# See bash(1) for more options
HISTCONTROL=ignoreboth

# append to the history file, don't overwrite it
shopt -s histappend

# for setting history length see HISTSIZE and HISTFILESIZE in bash(1)
HISTSIZE=1000
HISTFILESIZE=2000

# check the window size after each command and, if necessary,
# update the values of LINES and COLUMNS.
shopt -s checkwinsize

# If set, the pattern "**" used in a pathname expansion context will
# match all files and zero or more directories and subdirectories.
#shopt -s globstar

# make less more friendly for non-text input files, see lesspipe(1)
#[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)"

# set variable identifying the chroot you work in (used in the prompt below)
if [ -z "${debian_chroot:-}" ] && [ -r /etc/debian_chroot ]; then
    debian_chroot=$(cat /etc/debian_chroot)
fi

# set a fancy prompt (non-color, unless we know we "want" color)
case "$TERM" in
    xterm-color|*-256color) color_prompt=yes;;
esac

# uncomment for a colored prompt, if the terminal has the capability; turned
# off by default to not distract the user: the focus in a terminal window
# should be on the output of commands, not on the prompt
#force_color_prompt=yes

if [ -n "$force_color_prompt" ]; then
    if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then
        # We have color support; assume it's compliant with Ecma-48
        # (ISO/IEC-6429). (Lack of such support is extremely rare, and such
        # a case would tend to support setf rather than setaf.)
        color_prompt=yes
    else
        color_prompt=
    fi
fi

if [ "$color_prompt" = yes ]; then
    PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
else
    PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
fi
unset color_prompt force_color_prompt

# If this is an xterm set the title to user@host:dir
case "$TERM" in
xterm*|rxvt*)
    PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"
    ;;
*)
    ;;
esac

# enable color support of ls and also add handy aliases
if [ -x /usr/bin/dircolors ]; then# colored GCC warnings and errors
#export GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01'

# some more ls aliases
#alias ll='ls -l'
#alias la='ls -A'
#alias l='ls -CF'

# Alias definitions.
# You may want to put all your additions into a separate file like
# ~/.bash_aliases, instead of adding them here directly.
# See /usr/share/doc/bash-doc/examples in the bash-doc package.

if [ -f ~/.bash_aliases ]; then
    . ~/.bash_aliases
fi

# enable programmable completion features (you don't need to enable
# this, if it's already enabled in /etc/bash.bashrc and /etc/profile
# sources /etc/bash.bashrc).
if ! shopt -oq posix; then
  if [ -f /usr/share/bash-completion/bash_completion ]; then
    . /usr/share/bash-completion/bash_completion
  elif [ -f /etc/bash_completion ]; then
    . /etc/bash_completion
  fi
fi
export GAUSSHOME=/usr/local/opengauss
export PATH=$GAUSSHOME/bin:$PATH 
export LD_LIBRARY_PATH=$GAUSSHOME/lib:$LD_LIBRARY_PATH
export PGDATA=/var/lib/opengauss/data

    test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
    alias ls='ls --color=auto'
    #alias dir='dir --color=auto'
    #alias vdir='vdir --color=auto'

    #alias grep='grep --color=auto'
    #alias fgrep='fgrep --color=auto'
    #alias egrep='egrep --color=auto'
fi

6. 从环境变量查看数据文件的目录

grep -i PGDATA ~/.bashrc

注:
grep 命令,Globally search a Regular Expression and Print,使用特定模式匹配(包括正则表达式)搜索文本,并默认输出匹配行。

结果:

omm@modb:~$ grep -i PGDATA ~/.bashrc
export PGDATA=/var/lib/opengauss/data

7. 查看数据文件的目录、数据库版本

在gsql中查看数据文件的目录、数据库版本

su - omm
# if this parameter is set,use libedit set record separator to zero byte
gsql -r
# 查看数据文件目录
show data_directory ;
# 查看数据库版本
select version();

结果:

omm@modb:~$ gsql -r
gsql ((openGauss 3.0.0 build 02c14696) compiled at 2022-04-01 18:12:00 commit 0 last mr  )
Non-SSL connection (SSL connection is recommended when requiring high-security)
Type "help" for help.

omm=# show data_directory ;
     data_directory      
-------------------------
 /var/lib/opengauss/data
(1 row)

omm=# select version();
                                                                        version                                                                        
-------------------------------------------------------------------------------------------------------------------------------------------------------
 (openGauss 3.0.0 build 02c14696) compiled at 2022-04-01 18:12:00 commit 0 last mr   on aarch64-unknown-linux-gnu, compiled by g++ (GCC) 7.3.0, 64-bit
(1 row)

gsql使用帮助

omm@modb:~$ gsql --help
gsql is the openGauss interactive terminal.

Usage:
  gsql [OPTION]... [DBNAME [USERNAME]]

General options:
  -d, --dbname=DBNAME      database name to connect to (default: "omm")
  -f, --file=FILENAME      execute commands from file, then exit
  -l, --list               list available databases, then exit
  -v, --set=, --variable=NAME=VALUE
                           set gsql variable NAME to VALUE
  -c, --command=COMMAND    run only single command (SQL or internal) and exit

  -E, --echo-hidden        display queries that internal commands generate
  -k, --with-key=KEY       the key for decrypting the encrypted file

  -C, --enable-client-encryption              enable client encryption feature
  -s, --single-step        single-step mode (confirm each query)
  -L, --log-file=FILENAME  send session log to file
  -m, --maintenance        can connect to cluster during 2-pc transaction recovery
  -n, --no-libedit        disable enhanced command line editing (libedit)
  -o, --output=FILENAME    send query results to file (or |pipe)
  -q, --quiet              run quietly (no messages, only query output)  -V, --version            output version information, then exit
  -X, --no-gsqlrc          do not read startup file (~/.gsqlrc)
  -1 ("one"), --single-transaction
                           execute command file as a single transaction
  -?, --help               show this help, then exit

Input and output options:
  -a, --echo-all           echo all input from script
  -e, --echo-queries       echo commands sent to server  -S, --single-line        single-line mode (end of line terminates SQL command)

Output format options:
  -A, --no-align           unaligned table output mode
  -F, --field-separator=STRING
                           set field separator (default: "|")
  -H, --html               HTML table output mode
  -P, --pset=VAR[=ARG]     set printing option VAR to ARG (see \pset command)
  -R, --record-separator=STRING
                           set record separator (default: newline)
  -r                       if this parameter is set,use libedit 
                           set record separator to zero byte
  -2, --pipeline           use pipeline to pass the password, forbidden to use in terminal
                           must use with -c or -f

Connection options:  -t, --tuples-only        print rows only
  -T, --table-attr=TEXT    set HTML table tag attributes (e.g., width, border)
  -x, --expanded           turn on expanded table output
  -z, --field-separator-zero
                           set field separator to zero byte
  -0, --record-separator-zero

  -U, --username=USERNAME  database user name (default: "omm")
  -W, --password=PASSWORD  the password of specified database user

For more information, type "\?" (for internal commands) or "\help" (for SQL
commands) from within gsql, or consult the gsql section in the openGauss documentation.


  -h, --host=HOSTNAME      database server host or socket directory (default: "local socket")
                           allow multi host IP address with comma separator in centralized cluster
  -p, --port=PORT          database server port (default: "5432")omm@modb:~$ 
最后修改时间:2022-12-07 23:47:33
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

文章被以下合辑收录

评论