📢📢📢📣📣📣
哈喽!大家好,我是【IT邦德】,江湖人称jeames007,10余年DBA工作经验
中国DBA联盟成员,一位上进心十足的【大数据领域博主】!😜😜😜
中国DBA联盟(ACDU)成员,目前从事DBA及程序编程
擅长主流数据Oracle、MySQL、PG 运维开发,备份恢复,安装迁移,性能优化、故障应急处理等。
✨ 如果有对【数据库】感兴趣的【小可爱】,欢迎关注【IT邦德】💞💞💞
❤️❤️❤️感谢各位大可爱小可爱!❤️❤️❤️
本文所有均来自以下官网链接:
https://docs.mogdb.io/zh/mogdb/v3.0/overview
文章目录
前言
前段时间闲逛 openGauss 时发现 MogDB 官网(mogdb.io)上使用 Docker 容器安装安装 MogDB,非常简单,刚好 2022年6月30日,MogDB3.0 版本发布了,那么就来尝试下,在Docker容器环境下做了相关部署体验,分享给大家。1. MogDB介绍
MogDB是EnMotech openGauss DataBase Enterprise Edition的缩写,
是云和恩墨基于openGauss开源数据库进行定制、推出的企业发行版。
它将围绕高可用、安全、自动化运维、数据库一体机和SQL审核优化等企业需求,
解决企业用户落地。其核心价值是易用性、高性能、高可用等和全天候的企业支持。
2.容器化部署
2.1 镜像下载
docker pull swr.cn-north-4.myhuaweicloud.com/mogdb/mogdb:3.0.0
说明:MogDB镜像支持运行在x86和ARM架构中,
会根据发起命令的服务器架构自动下载相应的镜像,无需手工指定

2.2 创建容器
输入以下命令为 MogDB 创建运行目录
[root@jeames ~]# mkdir /mogdb
## 创建容器
docker run --name mogdb --privileged=true \
-d -e GS_PASSWORD=Enmo@123 \
-v /mogdb:/var/lib/mogdb -p 15432:5432 \
swr.cn-north-4.myhuaweicloud.com/mogdb/mogdb:3.0.0

2.3 数据库访问
## 进入容器终端
[root@jeames ~]# docker exec -it mogdb bash
## 连接 MogDB 数据库
安装完成并进入容器后,通过 su - omm 切换为 omm 用户,
即可通过 gsql 进行数据库访问,以正常体验 MogDB 各项功能
root@293bdc9885fd:/# su - omm
omm@293bdc9885fd:~$ gsql -d postgres
MogDB=#\l

MogDB=#\db
List of tablespaces
Name | Owner | Location
------------+-------+----------
pg_default | omm |
pg_global | omm |
#\c mogila
MogDB=#\c mogila
Non-SSL connection (SSL connection is recommended when requiring high-security)
You are now connected to database "mogila" as user "omm".
MogDB=#create database jeames;
CREATE DATABASE
\c jeames
create table test (id int,name varchar(20));
MogDB=#create table test (id int,name varchar(20));
CREATE TABLE
insert into test values (1,'it邦德');

3.MogDB主备搭建
3.1 主备库创建
## 创建自定义网络
docker network create --subnet=172.18.0.0/16 myNetwork
## 创建主库容器
docker run --name mogdb_master \
--network myNetwork --ip 172.18.0.10 --privileged=true \
--hostname mogdb_master --detach \
--env GS_PORT=6432 \
--env OG_SUBNET=172.18.0.0/16 \
--env GS_PASSWORD=Enmo@1234 \
--env NODE_NAME=mogdb_master \
--env REPL_CONN_INFO="replconninfo1 = 'localhost=172.18.0.10 localport=6439 localservice=6432 remotehost=172.18.0.11 remoteport=6439 remoteservice=6432 '\n" \
swr.cn-north-4.myhuaweicloud.com/mogdb/mogdb:3.0.0 -M primary
## 创建备库容器
docker run --name mogdb_slave_one \
--network myNetwork --ip 172.18.0.11 --privileged=true \
--hostname mogdb_slave_one --detach \
--env GS_PORT=6432 \
--env OG_SUBNET=172.18.0.0/16 \
--env GS_PASSWORD=Enmotech@1234 \
--env NODE_NAME=mogdb_slave_one \
--env REPL_CONN_INFO="replconninfo1 = 'localhost=172.18.0.11 localport=6439 localservice=6432 remotehost=172.18.0.10 remoteport=6439 remoteservice=6432 '\n" \
swr.cn-north-4.myhuaweicloud.com/mogdb/mogdb:3.0.0 -M standby
3.2 查询主库角色状态
[root@jeames ~]# docker exec -it mogdb_master bash
root@mogdb_master:/# su - omm
omm@mogdb_master:~$ gs_ctl query -D /var/lib/mogdb/data/

3.3 查询备库角色状态
[root@jeames ~]# docker exec -it mogdb_slave_one bash
root@mogdb_slave_one:/# su - omm
omm@mogdb_slave_one:~$ gs_ctl query -D /var/lib/mogdb/data/

说明:从上面主库Senders信息和备库Receiver可以看到主备状态正常。
4.读写测试
主库写测试:
omm@mogdb_master:~$ gsql -d postgres -p6432
MogDB=#\l
MogDB=#create table test(ID int);
MogDB=#insert into test values(1);
MogDB=#select * from test;

## 备库读测试:
omm@mogdb_slave_one:~$ gsql -d postgres -p6432
MogDB=#select * from test;
MogDB=#delete from test;
ERROR: cannot execute DELETE in a read-only transaction

说明:命令结果显示主库可写,备库可读但不可写。
5.MogDB主备切换
将mogdb_slave_one切换为主库,mogdb_master切换为备库。
mogdb_slave_one执行switchover:
[omm@mogdb_slave_one ~] $ gs_ctl switchover -D /var/lib/mogdb/data/

mogdb_slave_one查询状态:

mogdb_slave_one查询状态:

可以看到mogdb_master变为备库,mogdb_slave_one变为主库,切换成功。

最后修改时间:2022-07-10 22:37:29
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




