寫在前面
近兩年隨著國產數據庫的迅猛發展,伴隨著項目中很多客戶都在搞信創,我自己也學習了兩個國產數據庫,TidB和OceanBase,之前是一直從事Oracle和Mysql的dba,Tidb和Oceanbase也都是高度兼容Mysql協議,學習起來還是比較好入手,至于PG派系因為項目中沒有用到所以一直是一個空白,趁著墨天輪舉辦這次正文活動,也慢慢了解一下PG派系。
安裝前的了解
我在學習一個新數據庫之前會大致了解一下數據庫的大致概念,并且與我以前的知識體系做一個對比理解。比如這個數據庫屬于傳統的數據庫還是分布式數據庫,高可用是share disk 還是share nothing,內存的管理方式、數據的存儲方式,高可用和災備架構。
以下是我對MogDB的粗淺了解,初次學習歡迎大家指正。
- MogDB是一個傳統的關系型數據庫;
- 在存儲上支持行列混合存儲,這樣對HTAP有了一定的支持。另外還支持MOT基于內存的存儲引擎;
- 災備是用了主從復制結構,與Oracle類似,支持最大性能模式、最大可用模式、最打性能模式。
- 關于數據庫對象的話表、視圖、存儲過程、物化視圖、函數、觸發器、自治事務、資源管理器、分區等都支持。
- 在一些特性上像閃回、物理備份、邏輯備份、慢查詢、WDR(類似于oracle的AWR)、數據庫審計、Hint也都支持。
- 高可用方案MogHA,應該類似于Mysql的MGR。
- 當然還有很多,就在學習中慢慢體會吧
環境準備
環境要求請參考:
https://docs.mogdb.io/zh/mogdb/v3.0/environment-requirement
我使用的操作系統是CentOS7進行安裝,下載地址:
http://mirrors.aliyun.com/centos/7.9.2009/isos/x86_64/
虛擬機環境如下
IP | 10.80.9.250 |
內存 | 4G |
磁盤大小 | 40G |
安裝Centos7
使用虛擬機安裝centos7,我使用的是Oracle VM virtualBx
選擇 Install CentOS 7
選擇英文,continue
配置時區、添加安裝包、配置ip等,此處也可以不進行設置,系統裝完以后可以在設置和安裝
設置root密碼和創建用戶,我一般不在安裝的時候創建用戶,只是修改一下root密碼
安裝完成后reboot
使用root登錄操作系統
配置環境
- 配置hostname
[root@mogdb ~]# hostnamectl set-hotname mogdb |
- 配置IP地址
[root@mogdb ~]# nmcli connection modify enp0s3 ipv4.addresses 10.80.9.250/24 ipv4.gateway 10.80.0.1 ipv4.method manual autoconnect yes |
- 配置yum源
掛載磁盤鏡像
[root@mogdb ~]# mount /dev/cdrom /mnt |
編輯yum文件
[root@mogdb ~]# cd /etc/yum.repos.d/ [root@mogdb ~]# cp CentOS-Base.repo local.repo [root@mogdb ~]# vi local.repo |
[local] name=local #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra baseurl=file:///mnt gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 |
[root@mogdb ~]# yum repolist all |
- 關閉防火墻
[root@mogdb ~]# systemctl status firewalld.service [root@mogdb ~]# systemctl stop firewalld.service [root@mogdb ~]# systemctl status firewalld.service [root@mogdb ~]# systemctl disable firewalld.service |
- 關閉seLinux
[root@mogdb ~]# vi /etc/selinux/config |
修改“SELINUX”的值“disabled”
需要重啟生效,也可以臨時生效
[root@mogdb ~]# setenforce 0 |
- 設置網卡MTU值
[root@mogdb ~]# ifconfig enp0s3 mtu 8192 |
- 其他環境配置請參考官方文檔
https://docs.mogdb.io/zh/mogdb/v3.0/os-configuration
其他的我暫時沒有設置,先安裝試一下
- 安裝MogDB用到的依賴包
yum install libaio-devel yum install flex yum install bison yum install ncurses-devel yum install glibc-devel yum install patch yum install redhat-lsb-core yum install readline-devel yum install libnsl(centos不需要) yum install openSSH yum install expect |
開始安裝
安裝pkt
官方手冊:https://docs.mogdb.io/zh/ptk/v0.2/install
我這里選擇的是離線安裝
- 上傳pkt安裝包,
E:\軟件工具\開發相關\MogDb>sftp root@10.80.9.250:/home/mogdb/ The authenticity of host '10.80.9.250 (10.80.9.250)' can't be established. ECDSA key fingerprint is SHA256:6G1wBa7o1K/1wL50slhR/P24QM+mG7ZY9YvgY6xh9ME. Are you sure you want to continue connecting (yes/no/[fingerprint])? Warning: Permanently added '10.80.9.250' (ECDSA) to the list of known hosts. root@10.80.9.250's password: Connected to 10.80.9.250. Changing to: /home/mogdb/ sftp> put ptk_linux_x86_64.tar.gz Uploading ptk_linux_x86_64.tar.gz to /home/mogdb/ptk_linux_x86_64.tar.gz ptk_linux_x86_64.tar.gz 100% 4858KB 21.9MB/s 00:00 |
- 切換用戶并解壓(root用戶)
[root@mogdb soft]# tar -zxvf ptk_linux_x86_64.tar.gz [root@mogdb ~]# mkdir -p $HOME/.ptk/bin/ cp /soft/ptk $HOME/.ptk/bin/ |
- 修改環境變量(root用戶)
[root@mogdb ~]# vi /etc/profile |
增加以下兩行
PATH=$PATH:$HOME/.ptk/bin/ export PATH |
[root@mogdb ~]# source /etc/profile |
- 配置yaml文件(root用戶)
[root@mogdb ~]# mkdir -p /opt/mogdb [root@mogdb ~]# vi config.yaml |
global: cluster_name: mogdb1 user: omm group: omm base_dir: /opt/mogdb db_servers: - host: 10.80.9.250 db_port: 26000 |
- 安裝前檢查(root用戶)
[root@mogdb ~]# ptk checkos -f config.yaml |
安裝失敗,失敗信息如下
[root@mogdb soft]# ptk checkos -f config.yaml INFO[2022-08-04T13:07:56.180] prechecking dependent tools... INFO[2022-08-04T13:07:56.213] platform: centos_7_64bit host=10.80.9.250 INFO[2022-08-04T13:07:56.220] kernel version: 3.10.0-1160.71.1.el7.x86_64 host=10.80.9.250 INFO[2022-08-04T13:07:56.285] locale: LANG=en_US.UTF-8 host=10.80.9.250 INFO[2022-08-04T13:07:56.296] timezone: +0800 host=10.80.9.250 INFO[2022-08-04T13:07:56.307] swap memory 3145724kB, total memory 4045232kB host=10.80.9.250 WARN[2022-08-04T13:07:56.315] net.ipv4.tcp_keepalive_time=7200, expect 30 host=10.80.9.250 WARN[2022-08-04T13:07:56.324] net.ipv4.tcp_retries1=3, expect 5 host=10.80.9.250 WARN[2022-08-04T13:07:56.365] net.ipv4.tcp_keepalive_intvl=75, expect 30 host=10.80.9.250 WARN[2022-08-04T13:07:56.388] net.ipv4.tcp_max_syn_backlog=128, expect 65535 host=10.80.9.250 WARN[2022-08-04T13:07:56.395] net.ipv4.tcp_tw_reuse=0, expect 1 host=10.80.9.250 WARN[2022-08-04T13:07:56.404] net.ipv4.tcp_tw_recycle=0, expect 1 host=10.80.9.250 WARN[2022-08-04T13:07:56.413] net.core.netdev_max_backlog=1000, expect 65535 host=10.80.9.250 WARN[2022-08-04T13:07:56.421] net.core.wmem_default=212992, expect 21299200 host=10.80.9.250 WARN[2022-08-04T13:07:56.439] net.ipv4.tcp_rmem=4096 87380 6291456, expect 8192 250000 16777216 host=10.80.9.250 WARN[2022-08-04T13:07:56.449] net.ipv4.tcp_wmem=4096 16384 4194304, expect 8192 250000 16777216 host=10.80.9.250 WARN[2022-08-04T13:07:56.458] net.ipv4.tcp_syn_retries=6, expect 5 host=10.80.9.250 WARN[2022-08-04T13:07:56.474] net.ipv4.tcp_retries2=15, expect 12 host=10.80.9.250 WARN[2022-08-04T13:07:56.494] vm.min_free_kbytes=67584, expect 202261 host=10.80.9.250 WARN[2022-08-04T13:07:56.518] net.core.rmem_max=212992, expect 21299200 host=10.80.9.250 WARN[2022-08-04T13:07:56.526] net.core.rmem_default=212992, expect 21299200 host=10.80.9.250 WARN[2022-08-04T13:07:56.535] kernel.sem=250 32000 32 128, expect 250 6400000 1000 25600 host=10.80.9.250 WARN[2022-08-04T13:07:56.562] net.core.somaxconn=128, expect 65535 host=10.80.9.250 WARN[2022-08-04T13:07:56.571] net.core.wmem_max=212992, expect 21299200 host=10.80.9.250 INFO[2022-08-04T13:07:56.571] check kernel.core_pattern host=10.80.9.250 INFO[2022-08-04T13:07:56.586] check removeIPC value host=10.80.9.250 WARN[2022-08-04T13:07:56.694] device(/dev/sda) readahead value=8192, expect 16384. host=10.80.9.250 WARN[2022-08-04T13:07:56.752] device(dm-0) 'IO Request'=128, expect 256 host=10.80.9.250 WARN[2022-08-04T13:07:56.753] device(dm-1) 'IO Request'=128, expect 256 host=10.80.9.250 WARN[2022-08-04T13:07:56.753] device(sda) 'IO Request'=128, expect 256 host=10.80.9.250 WARN[2022-08-04T13:07:56.753] device(sr0) 'IO Request'=128, expect 256 host=10.80.9.250 [host 10.80.9.250]: not found package: numactl INFO[2022-08-04T13:08:04.115] check port 26000 host=10.80.9.250 INFO[2022-08-04T13:08:04.267] port 26000 is free host=10.80.9.250 INFO[2022-08-04T13:08:04.268] write fix os script to root_fix_os.2022.0804.130804.sh successfully INFO[2022-08-04T13:08:04.268] all checkers finished # Check Results Item | Level ------------------------------------+----------- A1.Check_OS_Version | OK A2.Check_Kernel_Version | OK A3.Check_Unicode | OK A4.Check_TimeZone | OK A5.Check_Swap_Memory_Configure | OK A6.Check_SysCtl_Parameter | Abnormal A7.Check_FileSystem_Configure | OK A8.Check_Disk_Configure | OK A9.Check_Logical_Block | OK A9.Check_BlockDev_Configure | Warning A10.Check_IO_Request | Warning A10.Check_Asynchronous_IO_Request | OK A10.Check_IO_Configure | OK A11.Check_Network_Configure | OK A12.Check_Time_Consistency | OK A13.Check_Firewall_Service | OK A14.Check_THP_Service | OK A15.Check_Dependent_Package | Abnormal A16.Check_CPU_Instruction_Set | Abnormal A17.Check_Port | OK Total count 20, abnormal count 3, warning count 2 Failed to check os, can’t perform installation unless fix all the abnormal items You can use 'ptk checkos -i ITEM --detail' to see detail message Please check root_fix_os.[TIMESTAMP].sh for commands to resolve. |
其中需要關注level級別為Abnormal的錯誤項
通過輸出可以看到MogDB提供了一個修復腳本 root_fix_os.2022.0804.130804.sh,先執行一下看看,可以看到這個腳本安裝了一個rpm包
再次執行檢查
還有一個中斷項
A16.Check_CPU_Instruction_Set | Abnormal
然后仍然提供了一個腳本
執行ptk checkos -i A16 --detail查看檢查詳細信息
我的虛擬機不支持
bmi2指令集(CentOS) | 執行lscpu | grep bmi2命令查看是否支持bmi2指令集 |
先不管了一會跳過這個檢查試一下
- 安裝Mogdb(root)
[root@mogdb soft]# ptk install -f config.yaml --pkg ./MogDB-3.0.0-CentOS-x86_64.tar.gz --skip-check-os |
整個安裝過程比較簡單,只需要確認集群拓撲文件是否正確 Y,輸入復雜密碼就成功了
輸入ptk ls檢查查看安裝的實例信息
訪問數據庫
su - omm [root@mogdb soft]# su - omm [omm@mogdb ~]$ gsql -d postgres -p 26000 |
最后
安裝成功了,開啟Mogdb的學習之旅吧




