MogDB學習筆記-從0開始
寫在前面
MogDB是基于OpenGauss開發(fā)的、OpenGauss又是基于PostgreSql開發(fā)的,我對這三套數(shù)據(jù)庫體系的認知機會為0,所以在學習的時候也同時參考OpenGauss和PostgreSql的官方文檔。
學習環(huán)境是基于上一篇筆記里搭建的MogDB主從環(huán)境,接下來從0開始學習PG派系的數(shù)據(jù)庫。
手動部署主從筆記的地址:http://m.sunline.cc/db/453770
基本概念
通過基本概 念來看Mysql其實挺類似,只是mysql不存在模式的概念。
數(shù)據(jù)庫(database)
數(shù)據(jù)庫用于管理各類數(shù)據(jù)對象,與其他數(shù)據(jù)庫隔離。創(chuàng)建數(shù)據(jù)對象時可以指定對應的表空間,如果不指定相應的表空間,相關的對象會默認保存在PG_DEFAULT空間中。數(shù)據(jù)庫管理的對象可分布在多個表空間上。
表空間(tablespace)
在openGauss中,表空間是一個目錄,可以存在多個,里面存儲的是它所包含的數(shù)據(jù)庫的各種物理文件。由于表空間是一個目錄,僅是起到了物理隔離的作用,其管理功能依賴于文件系統(tǒng)。
模式(schema)
openGauss的模式是對數(shù)據(jù)庫做一個邏輯分割。所有的數(shù)據(jù)庫對象都建立在模式下面。openGauss的模式和用戶是弱綁定的,所謂的弱綁定是指雖然創(chuàng)建用戶的同時會自動創(chuàng)建一個同名模式,但用戶也可以單獨創(chuàng)建模式,并且為用戶指定其他的模式。
用戶和角色(user role)
openGauss使用用戶和角色來控制對數(shù)據(jù)庫的訪問。根據(jù)角色自身的設置不同,一個角色可以看做是一個數(shù)據(jù)庫用戶,或者一組數(shù)據(jù)庫用戶。在openGauss中角色和用戶之間的區(qū)別只在于角色默認是沒有LOGIN權限的。在openGauss中一個用戶唯一對應一個角色,不過可以使用角色疊加來更靈活地進行管理。
數(shù)據(jù)文件(Datafile Segment)
通常每張表只對應一個數(shù)據(jù)文件。如果某張表的數(shù)據(jù)大于1GB,則會分為多個數(shù)據(jù)文件存儲
數(shù)據(jù)庫(block)
數(shù)據(jù)庫管理的基本單位,默認是8k
學習環(huán)境
NODE1(主庫) | NODE2(從庫) | |
Hostname | mogdb1 | mogdb2 |
IP | 10.80.9.249 | 10.80.9.250 |
磁盤 | 20G | 20G |
內(nèi)存 | 2G | 2G |
MogDB初窺
1、登錄主庫
[omm@mogdb1 ~]$ gsql -d postgres -p 26000 |
2、創(chuàng)建用戶
create user zkh with password "Zkh12345678"; |
3、給新用戶賦權dba
grant all privileges to zkh; |
4、創(chuàng)建數(shù)據(jù)庫,并指定所有者
create database db_mogdb owner zkh; |
5、驗證從庫是否同步成功
主庫
gsql -d postgres -p 26000 -l |
從庫
可見在主庫上的操作從庫也同步成功
6、使用新用戶連接新庫
gsql -d db_mogdb -p 26000 -U zkh -W Zkh12345678 |
7、創(chuàng)建表
CREATE TABLE mytable (firstcol int); |
檢查剛才創(chuàng)建的表信息
select * from pg_tables where tablename='mytable'; |
通過查詢可以看到這個表的屬于public模式下。這一點區(qū)別于Oracle或者DB2,因為上述兩個數(shù)據(jù)庫在創(chuàng)建表的時候會默認創(chuàng)建到當前user的schema下面
8、創(chuàng)建模式
CREATE SCHEMA zkh AUTHORIZATION zkh; |
再次創(chuàng)建表
CREATE TABLE mytable1(firstcol int); |
查詢表的信息
select * from pg_tables where tablename in('mytable','mytable1'); |
可以看到新表mytable1已經(jīng)創(chuàng)建在zkh的模式下了。
9,從庫驗證表是否同步
登錄從庫
gsql -d db_mogdb -p 26000 -U zkh -W Zkh12345678 |
查詢表是否同步
select * from pg_tables where tablename in('mytable','mytable1'); |
數(shù)據(jù)已經(jīng)同步到從庫
10、查詢數(shù)據(jù)文件的物理位置
首先查詢data目錄的位置,可以用好幾種中方法比如查看config文件等等,這里使用sql查詢
show data_directory; |
表數(shù)據(jù)會存放在數(shù)據(jù)目錄里的base目錄。每一個數(shù)據(jù)庫有一個對應id,先看一下base目錄的目錄結(jié)構
查詢數(shù)據(jù)庫對應的id
select datname,oid from pg_database; |
數(shù)據(jù)文件存放在base/16388目錄下
進一步查詢表的oid是什么
select oid,relname,relnamespace from PG_CLASS where relname like 'mytable%'; |
圖中的兩個文件就是我剛才創(chuàng)建的表
最后
這一次筆記對MogDB的初次使用也驗證了一下搭建的主從環(huán)境是否能夠正常同步,后續(xù)繼續(xù)從0開始學習MogDB,趁著這個機會學習一下PG派系。




