什么是Gbase数据库
基本上是基于华为的openGauss发展过来的,而PostgreSQL又是openGauss的上游,所以如果你没有什么特殊要求,只是因为信创的需要,就把他当PostgreSQL用吧
单机部署
麒麟的服务器系统基本上就是从红帽系里面的CentOS魔改过来的,所以基本上相关的东西也能通用
这是信创官方给的安装步骤
1、创建用户
useradd gbase
2、创建目录
mkdir /opt/Installation_package
3、解压文件
cd /opt/Installation_package/
tar -vxzf GBase8sV8.8.5_S5.0.0B15_centos7.8_x86_64.tar.gz
tar -vxzf GBase8sV8.8.5_S5.0.0B15_CentOS_x86_64_om.tar.gz
4、配置安装参数文件
cp script/gspylib/etc/conf/cluster_config_template.xml /opt/Installation_package/cluster_config.xml
vi cluster_config.xml
<?xml version="1.0" encoding="utf-8"?>
<ROOT>
<CLUSTER>
<PARAM name="clusterName" value="gbase8c" />
<PARAM name="nodeNames" value="<主机名>"/>
<PARAM name="gaussdbAppPath" value="/opt/database/app" />
<PARAM name="gaussdbLogPath" value="/opt/database/log" />
<PARAM name="tmpMppdbPath" value="/opt/database/tmp"/>
<PARAM name="gaussdbToolPath" value="/opt/database/tool" />
<PARAM name="corePath" value="/opt/database/corefile"/>
<PARAM name="backIp1s" value="192.168.200.111"/>
</CLUSTER>
<DEVICELIST>
<DEVICE sn="gbase8c">
<PARAM name="name" value="<主机名>"/>
<PARAM name="azName" value="AZ1"/>
<PARAM name="azPriority" value="1"/>
<PARAM name="backIp1" value="192.168.200.111"/>
<PARAM name="sshIp1" value="192.168.200.111"/>
<!-- dn -->
<PARAM name="dataNum" value="1"/>
<PARAM name="dataPortBase" value="15400"/>
<PARAM name="dataNode1" value="/opt/database/data/dn"/>
<PARAM name="dataNode1_syncNum" value="0"/>
</DEVICE>
</DEVICELIST>
</ROOT>
5、执行安装检查
script/gs_preinstall -U gbase -G gbase -X /opt/Installation_package/cluster_config.xml
6、执行安装
su - gbase
gs_install -X /opt/Installation_package/cluster_config.xml
#初始化配置
gs_guc reload -N all -I all -h "host all all 0.0.0.0/0 sha256"
gs_guc set -N all -I all -c "listen_addresses = '*' "
gs_guc set -N all -I all -c "password_encryption_type=1"
gs_om -t restart
#创建操作用户
create user gbase8c with sysadmin login password 'Database@123';
7、启动、停止数据库,检查数据库状态
gs_om -t start/stop
gs_om -t status --detail
8、登录数据库,创建mysql兼容库
$ gsql -r -d postgres -p 15400
postgres=# CREATE DATABASE mysqldb DBCOMPATIBILITY 'B' encoding 'UTF-8' LC_COLLATE 'zh_CN.utf8' LC_CTYPE 'zh_CN.utf8';
9、帮助
postgres=# \?
postgres=# \h
10、查看库
postgres=# \l
11、查看表
postgres=# \dt
12、查看表定义
postgres=# \d <table_name>
但是不知道为啥,创建Mysql兼容库后用Python的Mysql驱动连不上
动手创建一个PostgreSQL数据库
和Postgre的步骤差不多,贴上Copilot给的步骤
-- 连接到 PostgreSQL 数据库
psql -U postgres
-- 创建一个普通用户
CREATE USER myuser WITH PASSWORD 'mypassword';
-- 创建一个数据库,并将其所有者设置为新用户
CREATE DATABASE mydatabase OWNER myuser;
-- 授予新用户对新数据库的权限
GRANT ALL PRIVILEGES ON DATABASE mydatabase TO myuser;
-- 退出 psql
\q
现在用Python尝试连一下数据库
import psycopg2
from psycopg2 import sql
def main():
# 数据库连接配置
config = {
'dbname': 'mydatabase',
'user': 'myuser',
'password': 'mypassword',
'host': '127.0.0.1',
'port': '5432'
}
try:
# 连接到数据库
conn = psycopg2.connect(**config)
cursor = conn.cursor()
print("成功连接到数据库")
# 获取所有表的名称
cursor.execute("SELECT table_name FROM information_schema.tables WHERE table_schema = 'public'")
tables = cursor.fetchall()
for table_name in tables:
print(f"表名: {table_name[0]}")
# 查询表中的所有数据
query = sql.SQL("SELECT * FROM {}").format(sql.Identifier(table_name[0]))
cursor.execute(query)
rows = cursor.fetchall()
# 获取列名
colnames = [desc[0] for desc in cursor.description]
print(colnames)
# 输出每行数据
for row in rows:
for col_name, col_value in zip(colnames, row):
print(f"{col_name}: {col_value}")
print("---------------------")
except psycopg2.Error as e:
print(f"数据库错误: {e}")
except KeyboardInterrupt:
print("程序被用户中断")
finally:
if cursor:
cursor.close()
if conn:
conn.close()
if __name__ == "__main__":
main()
成功连上,理论上就可以作为一个普通PostgreSQL数据库使用了
Gbase命令和PostgreSQL区别
先了解一下PostgreSQL命令
psql
是 PostgreSQL 数据库的命令行客户端工具,用于连接和操作 PostgreSQL 数据库。通过 psql
,你可以执行 SQL 查询、查看表结构、管理数据库对象等操作。
psql
的主要功能包括:
-
连接数据库:通过命令行连接到 PostgreSQL 数据库。
-
执行 SQL 查询:可以直接在命令行中执行 SQL 语句,并查看结果。
-
管理数据库:创建或删除数据库、表、用户等数据库对象。
-
脚本执行:执行包含 SQL 语句的脚本文件。
-
查询结果导出:将查询结果导出为文件,例如 CSV、JSON 等格式。
psql
命令的基本使用:
bashCopy code
psql -h hostname -U username -d dbname
-
h hostname
:指定数据库服务器的主机名或 IP 地址(默认是本地)。 -
U username
:指定登录 PostgreSQL 数据库的用户名。 -
d dbname
:指定要连接的数据库名称。
例如:
bashCopy code
psql -h localhost -U postgres -d mydatabase
该命令会连接到名为 mydatabase
的数据库,并以 postgres
用户身份登录。
常见 psql
命令:
-
\l
:列出所有数据库。 -
\c dbname
:连接到指定数据库。 -
\d
:列出当前数据库中的表。 -
\d tablename
:查看指定表的结构。 -
\q
:退出psql
会话。
psql
是 PostgreSQL 数据库管理中非常强大且灵活的工具,适用于日常操作和管理任务。
pg_ctl
和 pg_om
都与 PostgreSQL 数据库的管理相关,但它们的功能和使用场景有所不同。
1. pg_ctl
pg_ctl
是 PostgreSQL 数据库的控制工具,用于启动、停止、重启和检查 PostgreSQL 服务器的状态。它是 PostgreSQL 核心包中的一个实用工具,可以帮助管理员对 PostgreSQL 数据库进行管理和控制。
常见命令:
-
启动 PostgreSQL 服务器:
pg_ctl start
-
停止 PostgreSQL 服务器:
pg_ctl stop
-
重启 PostgreSQL 服务器:
pg_ctl restart
-
检查 PostgreSQL 服务器状态:
pg_ctl status
例如:
bashCopy code
pg_ctl -D /path/to/your/data/directory start
上面的命令会启动 PostgreSQL 服务器,-D
选项用于指定数据目录。
2. pg_om
pg_om
通常是指一些企业级 PostgreSQL 发行版中提供的集群管理工具,特别是在中国的某些发行版中(例如阿里的 PolarDB for PostgreSQL)。pg_om
通常用于管理 PostgreSQL 数据库集群,提供包括创建集群、管理节点、监控和维护的功能。
相比于 pg_ctl
,pg_om
更侧重于在分布式或集群环境下对 PostgreSQL 进行整体管理。它可能包括更多自动化和高级功能,例如集群的自动故障转移、高可用性配置等。
总结
-
pg_ctl
主要用于单节点 PostgreSQL 数据库服务器的基本管理操作。 -
pg_om
是企业级集群管理工具,提供更丰富的集群管理功能,适用于更复杂的 PostgreSQL 集群环境。
如果你只是在使用单节点的 PostgreSQL 数据库,pg_ctl
应该是足够的;如果你管理的是一个集群环境,可能需要使用 pg_om
。
区别
pg_ctl | gs_ctl |
---|---|
psql | gsql |
pg_om | gs_om |