中国移动信创云 openEuler 和 openGauss 使用笔记
以下笔记是本人使用中国移动 移动云 信创专区时的工作笔记,由衷感谢中国移动的各位同仁在期间帮助和支持。
一、安装系统
1、安装 24.03 SP4(移动云提供的openEuler的最后一个版本镜像(24.03 SP3)在执行update时会报错。鉴于移动云可能不再提供更新openEuler镜像服务,所以需要先创建 移动云的对象存储EOS“桶”,将系统镜像文件传到“桶”里,再在安装“自定义系统镜像”中选择“桶”内的镜像地址,导入镜像类型:raw,系统安装软件选择基本环境:服务器,附加软件:Linux 远程管理,windows文件服务器,开发工具、安全工具、系统工具。)
2、更新系统 dnf update -y
【 使用移动云提供的24.03 SP3的更新系统 dnf update -y --nobest
当原始源不可用时,可用如下步骤尝试解决:
1、备份yum源文件( cp /etc/yum.repos.d/openEuler.repo /etc/yum.repos.d/openEuler.repo.bak )
2、替换文件中的内网源,改为外网源( sed -i 's/mirrors-internal\.cmecloud\.cn/mirrors.cmecloud.cn/g' /etc/yum.repos.d/openEuler.repo )
3、刷新缓存( yum makecache ) 】
3、重启系统 reboot
4、安装麒麟信安kiran桌面 dnf install kiran-desktop -y (openEuler 24.03 SP3及更早版本用麒麟UKUI和DDE,kiran对24.03 SP4支持非常好,新版本强烈推荐kiran桌面,速度快,功能全。)
5、在终端里设置中文语言 localectl set-locale LANG=zh_CN.UTF-8
6、设置以图形界面的方式启动 systemctl set-default graphical.target
7、重启系统 reboot
8、重启登录后提示文件夹改中文,因为移动云命令输入框的原因,保留英文命名。
9、可以设置高显示分辨率 (1920*1200 1920*1080)
二、安装远程控制服务RustDesk
1、RustDesk官方网址为https://rustdesk.com/zh/ 下载最新客户端对应网址为:https://github.com/rustdesk/rustdesk/releases/latest
2、下载的时候选择 Assets 中的ARM对应版本 地址为:https://github.com/rustdesk/rustdesk/releases/download/1.5.0/rustdesk-1.5.0-0.aarch64.rpm
3、下载以后,在图标上右键选择 “使用其他程序打开(A)...” 》 “使用自定义命令” 》文本框中输入 ( mate-terminal -- bash -c "sudo dnf install '%f';read -p '按回车关闭'" ) 》 打开
4、 双击下载好的安装包进行安装。
5、启动RustDesk 》ID旁边的3个点 》安全(Security)》解锁安全选项(unlock security setting)》密码(Password)》使用固定密码(Use permanent password)设置自己的密码 》安全(Security) 》 允许IP直接访问(enable direct IP access)默认21118
6、 记得设置云防火墙的安全策略,入向规则放行21118,为了安全可以修改端口。
7、在本地机器上运行RustDesk,控制远程桌面地址中直接填写:公网IPv4地址:21118 或 [公网IPv6地址]:21118
二、安装数据库
一、企业版 适用生产环境 可支持大型应用(支持集群管理CM 和 运维管理OM)
root 执行
1、创建数据库用户组dbgroup。( groupadd dbgroup )
2、创建数据库用户组dbgroup下的数据库普通用户dbmm,并设置普通用户dbmm的密码,密码建议设置为dbmm@123。(分步执行:1、useradd -g dbgroup dbmm 2、passwd dbmm)或者( useradd -m -g dbgroup dbmm -p "$(openssl passwd -6 'dbmm@123')" )
3、登录桌面使用浏览器下载openGauss官方数据库应用压缩包(企业版 通常命名为 openGauss-All-x.x.x-openEulerxx.xx-aarch64.tar.gz)
4、移动下载的压缩包到dbmm用户下的Downloads目录下 ( /home/dbmm/ )
5、在下载目录中将下载的 openGauss-All-* 压缩包解压到当前文件夹( tar -zxvf /home/dbmm/openGauss-All-6.0.6-openEuler24.03-aarch64.tar.gz -C /home/dbmm/ )
6、解压当前目录(Downloads)中的openGauss-OM-*压缩包 到当前目录 ( tar -zxvf /home/dbmm/openGauss-OM-6.0.6-openEuler24.03-aarch64.tar.gz -C /home/dbmm/ )
7、安装依赖包。openEuler 24.03 Server 环境大部分已预装,执行以下命令兜底,已装的会被跳过。( dnf install -y libaio-devel flex bison ncurses-devel glibc-devel patch readline-devel libnsl bzip2 net-tools openblas )
8、进入 cd /home/dbmm/script目录,执行一站式安装命令 ./gs_preinstall -U dbmm -G dbgroup --one-stop-install (因为是单机部署不使用 --sep-env-file 环境分离参数。)
9、回车后将进入安装脚本(openGauss6.0.6 和 7 有差别,这里是6的 )
1、选择语言 (默认中文 直接回车)
2、请输入xml的路径和文件名(默认:./cluster.xml) 直接回车
3、请输入数据库安装目录(默认:/opt/openGauss/install) 直接回车
4、请输入数据库端口(默认:15000) 直接回车
5、请选择是否主备部署 默认是 1)主备部署 (根据我的情况选择的 2)单机部署 直接输入2后回车)
6、请输入ssh端口(默认:22) 直接回车(openGauss 7)
7、确认生成的安装信息无误,输入yes后回车
8、安装过程中会询问是否创建用户[dbmm] 输入yes 这之后就是等候安装完成。
10、使用ps命令查看数据库主进程信息。( ps ux | grep gaussdb )
11、安装好后重启系统 ( reboot )
12、在终端内输入 su - dbmm
dbmm执行(不要试图用dbmm用户登录桌面安装。按官方安全规范,数据库运行用户被设计为"禁止交互式登录,仅用于运行服务",这类账户从设计上就不允许登录桌面。)
13、进入script目录 ( cd /home/dbmm/script )
14、执行安装,使用刚才生成的cluster.xml ( gs_install -X /home/dbmm/script/base_utils/template/cluster.xml )
15、这里需要输出一个密码,就是11-7中的数据库用户密码。(至少8位,大小写、数字、特殊符;不要和第2步中的密码一样,那个是系统账户密码,这个是数据库用户密码,虽然同名,但功能和权限不同。)
16、安装效果验证
1、以dbmm系统用户身份登录服务器。
2.、执行 ( gs_om -t status ) 命令检查数据库状态是否正常,"cluster_state "显示"Normal"表示数据库可正常使用。
– 查看集群状态 gs_om -t status
– 停止集群 gs_om -t stop
– 启动集群 gs_om -t start
3、数据库安装完成后,默认生成名称为postgres的数据库。第一次连接数据库时可以连接到此数据库。其中postgres为需要连接的数据库名称,15000为数据库主节点的端口号,请根据实际情况替换。( gsql -d postgres -p 15000 )
4、应该gsql + openGauss版本号 最下行显示openGauss=# ( 这表示成功进入 openGauss=# 数据库命令行,可执行下列命令查看对应数据)
– 查看版本 select version();
– 查看当前数据库 select current_database();
– 查看当前用户 select current_user;
– 查看当前数据库最大连接 show max_connections;
– 查看当前已使用连接 select count(*) from pg_stat_activity;
– 退出 gsql \q
17、添加重启开机后自启动服务:
1、使用root 用户 在 /usr/lib/systemd/system/ 下建立 opengauss.service 文件填入如下配置代码并保存:
[Unit]
Description=openGauss Database Server (single node)
After=network.target
[Service]
Type=oneshot
RemainAfterExit=yes
User=dbmm
Group=dbgroup
Environment=GAUSSHOME=/opt/openGauss/install/app
Environment=PGDATA=/opt/openGauss/install/data/dn1
Environment=LD_LIBRARY_PATH=/opt/openGauss/install/app/lib:/opt/openGauss/install/tool/lib:/opt/openGauss/install/tool/script/gspylib/clib:/usr/lib64
Environment=PATH=/opt/openGauss/install/app/bin:/usr/local/bin:/usr/bin:/bin
Environment=LANG=zh_CN.UTF-8
ExecStart=/opt/openGauss/install/app/bin/gs_ctl start -D /opt/openGauss/install/data/dn1
ExecStop=/opt/openGauss/install/app/bin/gs_ctl stop -D /opt/openGauss/install/data/dn1 -m fast
ExecReload=/opt/openGauss/install/app/bin/gs_ctl restart -D /opt/openGauss/install/data/dn1 -m fast
TimeoutStartSec=600
TimeoutStopSec=120
KillMode=mixed
KillSignal=SIGINT
[Install]
WantedBy=multi-user.target
2、Root用户 分别执行重载命令 ( systemctl daemon-reload ) 和 注册命令 ( systemctl enable opengauss.service )
3、dbmm用户 执行 停库命令,交给 systemd ( gs_ctl stop -D /opt/openGauss/install/data/dn1 -m fast )
4、root用户 拉起服务 (systemctl start opengauss.service) 并检查 ( systemctl status opengauss.service )
5、重启系统验证服务是否自动拉起。启动问题查 journalctl -u opengauss -n 50 运行期问题查 /opt/openGauss/install/log/dbmm/pg_log/dn_6001/ 目录下的对应文件。
18、内部应用最小暴露面配置(数据库仅本机常驻服务读写)
dbmm 执行
1、显式限定监听地址为 loopback。( gs_guc set -D /opt/openGauss/install/data/dn1 -c "listen_addresses='localhost'" )
2、手工编辑 pg_hba.conf 确保 (位于 /opt/openGauss/install/data/dn1/pg_hba.conf),
IPv4 段仅保留:host all all 127.0.0.1/32 sha256
IPv6 段仅保留:host all all ::1/128 sha256
保存后执行 ( gs_guc reload -D /opt/openGauss/install/data/dn1 )
重启( reboot )
3、验证监听仅绑定本机。( ss -tlnp | grep 15000 )应仅显示 127.0.0.1:15000。
4、在 gsql 中为常驻服务创建专用最小权限用户。( gsql -d postgres -p 15000 )
– 创建应用用户 CREATE USER app_user PASSWORD ‘AppUser#2026!Secure’;
– 创建业务数据库 CREATE DATABASE app_db OWNER app_user;
– 连接到业务库 \c app_db
– 授予schema权限 GRANT USAGE, CREATE ON SCHEMA public TO app_user;
– 限制连接数 ALTER USER app_user CONNECTION LIMIT 20;
– 退出 \q
root 执行
5、防火墙保持开启,不放行 15000 端口(数据库不对外服务)。( systemctl enable --now firewalld )
6、加固权限安全 禁止桌面登录 ( usermod -p ‘*’ dbmm )
三、常驻图形服务部署(work 用户)
root 执行
1、创建 work 用户并设置密码 ( 1、 useradd -m work 2、passwd work )或者 ( useradd -m -U -G wheel -p "$(openssl passwd -6 'work@123')" work )
2、启用 lingering,使 work 的 systemd 用户实例随系统启动。( loginctl enable-linger work )
work 用户执行(登录图形界面后)
4、创建用户服务目录和应用目录。( mkdir -p ~/.config/systemd/user/ )( mkdir -p /home/work/apps/dbview-server )
5、编写服务单元 dbview.service,ExecStart 指向常驻图形服务主程序 dbview_server.py。( cat > /home/work/.config/systemd/user/dbview.service <<‘EOF’
[Unit]
Description=DBView Resident Graphical Service
After=graphical-session.target
[Service]
Type=simple
ExecStart=/usr/bin/python3 /home/work/apps/dbview-server/dbview_server.py
WorkingDirectory=/home/work/apps/dbview-server
Environment=DISPLAY=:0
Environment=XAUTHORITY=/home/work/.Xauthority
Environment=DB_HOST=127.0.0.1
Environment=DB_PORT=15000
Environment=DB_NAME=app_db
Environment=DB_USER=app_user
EnvironmentFile=/home/work/.config/dbview/env
Restart=on-failure
RestartSec=5
[Install]
WantedBy=default.target
EOF )
各字段说明
After=graphical-session.target:等图形会话就绪后再启动,避免应用起来时 X server 还不存在。ExecStart=/usr/bin/python3 ...:写解释器绝对路径;若是编译好的二进制(如/home/work/apps/dbview-server/bin/dbview-server),直接写二进制路径即可。Environment=DB_HOST=127.0.0.1等:与本方案“数据库仅监听 localhost、app_user 仅本机可连”对齐,应用固定走 127.0.0.1:15000。EnvironmentFile:数据库密码单独放 600 权限的文件中,EnvironmentFile行首的-前缀(如EnvironmentFile=-/home/...)表示文件不存在时不报错,此处文件必然存在,可不加。Restart=on-failure+RestartSec=5:异常退出 5 秒后自动拉起;注意数据库重启期间应用会反复重连失败,属正常现象。
可选:测试用占位程序
正式部署前想验证服务链路,可用一个最小占位程序替换真实主程序:
bash
cat > /home/work/apps/dbview-server/dbview_server.py <<'EOF'
#!/usr/bin/env python3
import time, os, tkinter
root = tkinter.Tk()
root.title("dbview-server")
tkinter.Label(root, text=os.environ.get("DB_NAME", "app_db")).pack()
root.mainloop() # 常驻:持有窗口直到服务被停止
EOF
chmod +x /home/work/apps/dbview-server/dbview_server.py
验证通过后(桌面出现窗口、systemctl --user status 显示 active (running)),将该文件替换为真实主程序,再 systemctl --user restart dbview.service 即可。
6、创建数据库密码环境文件并收紧权限(密码不写入服务单元,单元文件不应包含敏感信息)。( mkdir -p ~/.config/dbview )( echo ‘DB_PASSWORD=AppUser#2026!Secure’ > ~/.config/dbview/env )( chmod 600 ~/.config/dbview/env )
7、启用并启动服务。( systemctl --user daemon-reload )( systemctl --user enable --now dbview.service )
8、查看状态与实时日志。( systemctl --user status dbview.service )( journalctl --user -u dbview.service -f )
四、安装数据库管理工具(折腾了几天的DBeaver后,最终确定DBX)
work执行
1、下载 DBX https://cnb.cool/dbxio.com/dbx/-/releases(因为是 kiran 桌面环境,选择 Linux 》 ARM 》 RPM 文件 DBX迭代特别快 应为: DBX_X.X.XX_arm64.rpm)
2、(已经按照第二部分操作的,这里可以跳过)下载以后,在图标上右键选择 “使用其他程序打开 (A)…” 》 “使用自定义命令” 》文本框中输入 ( mate-terminal -- bash -c "sudo dnf install '%f';read -p 'guanbi'") 》 打开
3、会打开终端,显示安装内容,和确定是否安装,输入y,等待安装完成后,回车结束。
4、DBX的界面非常简洁,操作非常方便,无需其他操作;是我用过的最好的开源 安全的数据库客户端,没有之一。强烈推荐。
1、新建连接》国产数据库 》 openGauss数据库
2、填写连接信息,地址,端口,账号,密码等。
3、连接后即可对数据库进行相关操作。
五、数据库维护技巧
1、建表语句基本和MS sql一样,主键ID类型从bigint 转为 BIGSERIAL,NVARCHAR(MAX)转为TEXT,其他基本无差。
2、导入数据时,在【数据导入】窗口中的第三步”映射“,点击源端的文件可以展开数据列表,去掉前面的勾选,就可以不导入这一列,建议把ID列去掉,把整列NULL值的列也去掉。MSsql的null空值,在导入过程中会被识别为null字符串输入。
3、openGauss文件体系和MSsql不一样,无法实现MSsql的mdf+ldf双文件物理隔离,openGauss是一套文件,所有文件是一体共生。基于这种机制,MSsql的一库一表就没了优势。一库多表,近似类似功能一库多表,在openGauss是正解。
三、极简版 适用开发测试 小型应用 (提示:这里因为极简版不支持集群管理CM 和 运维管理OM , 所以Root部分较少。)
root 执行
- 检查安装软件依赖要求 ( yum install libaio-devel readline-devel libnsl libedit-devel libxml2-devel lz4-devel numactl-devel unixODBC-devel java-1.8.0-openjdk-devel openblas-devel -y )
-
创建用户组dbgroup。( groupadd dbgroup )
-
创建用户组dbgroup下的普通用户dbmm,并设置普通用户dbmm的密码,密码建议设置为dbmm@123。(分步执行:1、useradd -g dbgroup dbmm 2、passwd dbmm)或者( useradd -m -g dbgroup dbmm1 -p "$(openssl passwd -6 'dbmm1@123')" )
dbmm执行
1、登录桌面使用浏览器下载openGauss官方数据库应用
2、在主目录下建立用于安装openGauss目录( mkdir ~/openGauss )
3、解压数据库压缩包至openGauss目录( tar -jxf ~/Downloads/openGauss-Server-6.0.6-openEuler24.03-aarch64.tar.bz2 -C ~/openGauss )(根据版本和目录对应修改)
4、执行ls命令或在窗体中检查解压是否正确、完成,是否符合预期。
5、假定解压包的路径为openGauss,进入解压后目录下的simpleInstall。( cd ~/openGauss/simpleInstall )
6、执行install.sh脚本安装openGauss。( sh install.sh -w xxxx )-w是指初始化数据库密码(gs_initdb指定),安全需要必须设置。最少8位,大小写+数字+符号
7、使用ps命令查看主进程信息。( ps ux | grep gaussdb )
8、使用openGauss 自带工具 gs_ctl 读取数据库实例状态信息
# 先注释掉.bashrc中原有的ulimit硬限制行,消除警告 ( sed -i '/[[:space:]]*ulimit[[:space:]]*-n/s/^/#/' ~/.bashrc )
# 将openGauss环境自动适配脚本写入用户登录配置文件,新开终端/重启服务器登录自动生效
( cat >> ~/.bashrc <<'EOF' if [ -d ~/openGauss ]; then export GAUSSHOME=~/openGauss if [ -f ~/openGauss/env ]; then source ~/openGauss/env else export LD_LIBRARY_PATH=$GAUSSHOME/lib:$LD_LIBRARY_PATH export PATH=$GAUSSHOME/bin:$PATH fi fi EOF )
# 将openGauss环境自动适配脚本写入用户登录配置文件,新开终端/重启服务器登录自动生效 cat >> ~/.bashrc <<'EOF' # openGauss环境自动适配脚本|兼容企业版env脚本与simpleInstall极简安装包 if [ -d ~/openGauss ]; then export GAUSSHOME=~/openGauss if [ -f ~/openGauss/env ]; then # 企业版:存在env脚本,直接加载 source ~/openGauss/env else # 极简simpleInstall包:无env脚本,手动配置库路径与命令路径 export LD_LIBRARY_PATH=$GAUSSHOME/lib:$LD_LIBRARY_PATH export PATH=$GAUSSHOME/bin:$PATH fi fi EOF
# 在当前终端立刻加载环境配置,本次会话直接生效 (source ~/.bashrc)
# 查询数据库实例真实内核状态 (gs_ctl query -D ~/openGauss/data/single_node)
浙公网安备 33010602011771号