Table of Contents
学海无涯
作为一名前端的我,曾有幸接触过一些Linux操作的知识,也在云服务器开疆拓土的年代里拥有过自己的一方小小天地。
随着技术的提升,知识面的丰富,才会发现,当下的一点一滴,终会汇聚,以成江海。
感谢openGauss和墨天轮,让我再次踏上学习服务器命令行和数据库操作的征程。
潜心求学
第一天的课业,无疑是入门级的,对于相关专业的大佬来说。
作为小白,理应保持求学初心,砥砺奋进,即使寥寥几笔的代码,亦应求得真理。
为此,记录学习笔记及心得体会,以供日后复习,激励自己保持学习之恒心。
学习目标
学习从操作系统层面和使用openGauss工具,具体为一下3点:
- 查看数据库的状态
- 查看数据库版本
- 查看数据文件目录
学习内容
摘要
s_ctl是openGauss提供的数据库服务控制工具,可以用来启停数据库服务和查询数据库状态。主要供openGauss管理模块调用。gs_ctl工具由操作系统用户omm执行。可以执行:启动、停止、重启openGauss节点。
1. 使用omm用户
# 以login-shell的方式,切换omm用户
su - omm
注:
su 命令,switch use,用于切换用户,su 与 su - 略有差异:
加入了-参数,就是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:~$




