PostgreSQL 迁移用户很简单 --- 我看你的好戏

文摘   2024-12-13 06:00   天津  

开头还是介绍一下群,如果感兴趣PolarDB ,MongoDB ,MySQL ,PostgreSQL ,Redis, OceanBase, Sql Server等有问题,有需求都可以加群群内有各大数据库行业大咖,可以解决你的问题。加群请联系 liuaustin3 ,(共2610人左右 1 + 2 + 3 + 4 +5 + 6 + 7 + 8 )(1 2 3 4 5 6群均已爆满,新人进7群300+,8群,准备9群)

咱们接着上次那个没礼貌的同学说,64的问题我一直没告诉他,他也忘记了,这不最近遇到了新问题,又问我了。PostgreSQL 迁移中用户的问题是不少的尤其一些ORACLE ,MySQL的DBA的固有概念,可能理解PG的用户的使用方式存在一些概念难点。

我们看看这次又怎么了

(前期过往)

PostgreSQL  用户胡作非为只能受着 --- 警告他

PostgreSQL  加索引系统OOM 怨我了--- 不怨你怨谁

PostgreSQL  “我怎么就连个数据库都不会建?”   --- 你还真不会!


DBA: 诶,你最近写东西还挺多的,我再问个问题呗!

我:嗯,啥事我这有点忙

DBA: 我这事很简单,就一个用户的问题,你给看看,说两句我就会了,文档太麻烦了,我懒得看。

我:我建议你还是先看一下文档,比较好。文档是你的一个学习这个产品的老师,而不是到处去问人。

DBA: 诶,你这人怎么这么不敞亮,问你是给你面子。

我:说吧,你先留下,我一会看,现在忙。

DBA: 是这么回事,我们有一个数据ORACLE 的迁移到PostgreSQL,用户我建上了其实建立一个就可以了,原来我们ORACLE有20多个用户,每个用户是一个schema的Owner,其实要我说建一个用户不就完了都多省事,我们那个老DBA,就那个老梆子,又说我不对,我就说了他一句,“你行你上”,然后在问他该怎么弄,他就不搭理我了,你说我这怎么办,我怕我弄错了,所以过来问你一句。

DBA: 诶,半个小时了,你咋了,死过去了,我这问你呢?

我:我正忙,你等会,另外你们老DBA 说的是对的,当然还有一些情况没有了解,我也不能马上说你不对,你这样,我问点前情

1  你们的用户为什么有20多个 

2  你们ORACLE的程序和应用是怎么管理的 

3  你在PG上是怎么建立的用户,你打算怎么管理迁移后的用户和数据

DBA: 又这么多的问题,ORACLE 20多个每个用户对应一个应用,这也是我们那个老梆子弄的,要我简单,建立一个用户,然后这些应用就用这些表不就完了,就他非要那么弄? 领导还说他管的好,井井有条,啥玩意,增加工作量。有时间不如多看看股票,我哪里有闲工夫给他弄这个,就顺着他来呗,要不他又得给我告状。

我: 你这就不对了,人家说你不对,你应该礼貌的问人家,为什么,另外你们老DBA对不同的应用建立不同的管理账号,这个是非常正确的,我觉得人家有一定的水平。

DBA: 水平,我看是屁股上挂暖壶,有个瓶子,你快点吧,你和他一样烦人,问个问题哪里那么多话。

我: 呵呵,我们先说说两个数据库的不同

1  ORACLE是没有逻辑库的概念的 

2  ORACLE按照业务或者应用程序模块来管理,那么用户相当于对应schema的管理者,这里ORACLE的schema可以理解为一个逻辑库(用其他数据库管理的视角)

我这样说你认同吗?

DBA: 差不多,就那样吧。

我: PostgreSQL 是包含了,实例,逻辑库,schema的概念的,也就是分三个层次来管理你的业务程序下的表。所以你应该弄清楚以下几点 

1  不同的应用程序是否互访对方的表 

2  是否有其他的用户,兼具了不同schema下的表的读取和写入的权限 

3  你们原有的程序开发准则下,是否不能互相访问对方的表,而是通过接口调用来访问对方的应用程序的表

DBA: 我C,你说了这么多,还没回答我问题,你和尚念经呢?这堆问题,我哪里知道,我问我们那个老梆子,他也不告诉我呀?你就说你怎么弄吧?

我:唉,这里我假设 

1 你们的数据库中的schema 针对的是不同的业务模块 

2 你们的开发规范中,不能进行不同业务模块中的表在数据库底层的互访模式,而是通过应用程序调用来进行

 3 这里我假设你们的数据库里面的数据容量都比较大,有分开备份的需求 所以注意我说的是按照以上的推论来进行的假设。

如果其中的开发规范,你们允许底层不同业务模块的表通过一个账号进行访问,那么这个推论就不能成立了。

DBA: 磨磨唧唧,赶紧的吧,我这听你半小时了,还没入主题。

我:你这样你有20多个用户,这里你可以建立20个POSTGRESQL 的DATABASE,然后将你的ORACLE的数据根据不同的schema来进行分配,每个schema分到一个PostgreSQL的逻辑库。然后你再建库的时候,你可以用20个PG的用户,分别成为这些库的Owner来模拟你原来的管理的风格。

DBA: 哦,这么简单,诶,不对吧,你这个,我一句就问住你,为什么POSTGRESQL 里面有schema ,为什么我不能把数据都导入到一个数据库里面,然后用不同的schema来分,和ORACLE一样不就完了,你这个我还的重新导数,太麻烦了。

我: 这个属于基础性的工作,你还是一次做好,不行和你们老DBA 道个歉,虚心的问人一下,你平时说话和你们老DBA也都是这样,没大没小吗?

DBA: 哼,你管得还真挺多,我就问你schema,PG 和ORACLE 有什么不同,你说就完了,哪里这么多话,唐僧转世。

我:呵呵,你这个可以百度一下,看官方的文档,这样会比较好

DBA: 你会不会,每次问你都这么肉?

我:百度搜的你自己看吧

Schema概念:

Oracle:在Oracle数据库中,schema是一个逻辑分组,用于包含数据库对象,比如表、视图、序列和存储过程等。一个用户可以包含多个schema,每个schema都有自己的命名空间,用于区分不同的对象。用户和schema之间有一对一或一对多的关系。

PostgreSQL:在PostgreSQL中,schema是一个命名空间,用于组织和管理数据库对象(如表、视图、函数等)。每个数据库有一个默认schema(称为public),可以创建多个不同的自定义schema来组织对象。在PostgreSQL中,用户和schema之间没有强制的一对一关系。

访问权限: Oracle:在Oracle中,用户可以拥有自己的schema,通过授权给用户相应的权限可以访问其拥有的schema中的对象。用户需要通过schema名.对象名的方式访问对象。

PostgreSQL:在PostgreSQL中,用户通过在所需的schema前添加前缀来访问对象,例如schema_name.table_name。同时,数据库管理员可以控制用户对不同schema中对象的访问权限。

默认schema:

Oracle:在Oracle中,每个用户都有一个默认的schema,用户在没有明确制定schema的情况下操作对象时,默认使用该schema中的对象。

PostgreSQL:在PostgreSQL中,默认的schema是public,用户可以在创建对象时选择将对象添加到哪个schema中。

DBA: 诶,我可查了,你还留一手,那个PUBLIC的安全问题是怎么回事,怎还和版本有关,我这个PG16还有这个问题吗? 你这说话不说完的,赶紧的

我:开会,回来再说吧


总结: “不学无术,无以立身;不知礼节,无以立事”。

在我们从ORACLE迁移到POSTGRESQL 需要注意的地方有很多,账号是一个重点

1  原有的开发规范和使用账号的方式是什么

2  原有的ORACLE不同账号下是否有设置访问其他schema的需求

3  使用PostgreSQL 15之前的版本,会遇到public schema 下无权限账号可以创建object的问题,且此问题在PostgreSQL15后解决。

如果遇到PG15之前的版本,解决方案如下

1 在新建的数据库中回收PUBLIC的权限,运行如下的命令 REVOKE CREATE ON SCHEMA public FROM PUBLIC;

2 在数据库中创建新的schema,并且在新的schema下创建对象,如表,视图等

3 如开发需要,可以考虑 1  对特定的用户设置默认访问的schema
ALTER ROLE username SET search_path TO my_schema, public;

2  对整个的数据库进行默认schema的改变 ALTER DATABASE dbname SET search_path TO my_schema, public;


PostgreSQL 相关文章

PostgreSQL 用户胡作非为只能受着 --- 警告他

全世界都在“搞” PostgreSQL ,从Oracle 得到一个“馊主意”开始PostgreSQL 加索引系统OOM 怨我了--- 不怨你怨谁

PostgreSQL “我怎么就连个数据库都不会建?” --- 你还真不会!

病毒攻击PostgreSQL暴力破解系统,防范加固系统方案(内附分析日志脚本)
PostgreSQL 远程管理越来越简单,6个自动化脚本开胃菜

PostgreSQL 稳定性平台 PG中文社区大会--杭州来去匆匆

PostgreSQL 如何通过工具来分析PG 内存泄露

PostgreSQL  分组查询可以不进行全表扫描吗?速度提高上千倍?

POSTGRESQL --Austindatabaes 历年文章整理

PostgreSQL  查询语句开发写不好是必然,不是PG的锅

PostgreSQL  字符集乌龙导致数据查询排序的问题,与 MySQL 稳定 "PG不稳定"
PostgreSQL  Patroni 3.0 新功能规划 2023年 纽约PG 大会 (音译)
PostgreSQL   玩PG我们是认真的,vacuum 稳定性平台我们有了
PostgreSQL DBA硬扛 垃圾 “开发”,“架构师”,滥用PG 你们滚出 !(附送定期清理连接脚本)

DBA 失职导致 PostgreSQL 日志疯涨


OceanBase 相关文章

跟我学OceanBase4.0 --阅读白皮书 (OB分布式优化哪里了提高了速度)

跟我学OceanBase4.0 --阅读白皮书 (4.0优化的核心点是什么)

跟我学OceanBase4.0 --阅读白皮书 (0.5-4.0的架构与之前架构特点)

跟我学OceanBase4.0 --阅读白皮书 (旧的概念害死人呀,更新知识和理念)

聚焦SaaS类企业数据库选型(技术、成本、合规、地缘政治)

OceanBase 学习记录-- 建立MySQL租户,像用MySQL一样使用OB
OceanBase  学习记录 -- 安装简易环境
OceanBase  学习记录 --  开始入门
数据库最近第一比较多,OceanBase 定语加多了?
临时工访谈:OceanBase上海开大会,我们四个开小会 OB 国产数据库破局者
临时工说:OceanBase 到访,果然数据库的世界很卷,没边
数据库信息速递  阿里巴巴的分布式数据库OceanBase旨在进军中国以外的市场 (翻译)


PolarDB 相关文章


PolarDB 答题拿-- 飞刀总的书、同款卫衣、T恤,来自杭州的Package(活动结束了)

PolarDB for MySQL 三大核心之一POLARFS 今天扒开它--- 嘛是火星人

PolarDB-MySQL 并行技巧与内幕--(怎么薅羊毛)

PolarDB 并行黑科技--从百套MySQL撤下说起 (感谢8018个粉丝的支持)

PolarDB 杀疯了,Everywhere Everytime Everydatabase on Serverless

POLARDB  从一个使用者的角度来说说,POALRDB 怎么打败 MYSQL RDS

PolarDB 最近遇到加字段加不上的问题 与 使用PolarDB 三年感受与恳谈

PolarDB 从节点Down机后,引起的主从节点强一致的争论

PolarDB serverless 真敢搞,你出圈了你知道吗!!!!

PolarDB VS PostgreSQL  "云上"性能与成本评测 -- PolarDB 比PostgreSQL 好?

临时工访谈:PolarDB  Serverless  发现“大”问题了  之 灭妖记 续集

临时工访谈:庙小妖风大-PolarDB 组团镇妖 之 他们是第一

PolarDB for PostgreSQL  有意思吗?有意思呀
PolarDB  Serverless POC测试中有没有坑与发现的疑问
临时工说:从人性的角度来分析为什么公司内MySQL 成为少数派,PolarDB 占领高处
POLARDB  到底打倒了谁  PPT 分享 (文字版)

POLARDB  -- Ausitndatabases 历年的文章集合

PolarDB for PostgreSQL  有意思吗?有意思呀

PolarDB  搞那么多复杂磁盘计费的东西,抽筋了吗?


SQL SERVER 系列

SQL SERVER维保AI化,从一段小故事开始
SQL SERVER 如何实现UNDO REDO 和PostgreSQL 有近亲关系吗
SQL SERVER 危险中,标题不让发,进入看详情(译)
SQL SERVER 我没有消失,SQL SERVER下一个版本是2025 (功能领先大多数数据库)
SQL SERVER 2022 针对缓存扫描和Query Store 的进步,可以考虑进行版本升级



MongoDB 相关文章


MongoDB 合作考试报销活动 贴附属,MongoDB基础知识速通

MongoDB 年底活动,免费考试名额 7个公众号获得

MongoDB 使用网上妙招,直接DOWN机---清理表碎片导致的灾祸 (送书活动结束)

数据库 《三体》“二向箔”  思维限制 !8个公众号联合抽奖送书 建立数据库设计新思维

MongoDB  是外星人,水瓶座,怎么和不按套路出牌的他沟通?

17000多张MongoDB表的锅 自动分析删除表数据难题--从头到尾的处理过程(文尾有MongoDB开发规范)
MongoDB 插入更新数据慢,开发问哪的问题?附带解决方案和脚本
MongoDB 不是软柿子,想替换就替换
MongoDB  挑战传统数据库聚合查询,干不死他们的MongoDB 2023纽约 MongoDB 大会 -- 我们怎么做的新一代引擎 SBE Mongodb 7.0双擎力量(译)
MongoDB 2023年度纽约 MongoDB 年度大会话题 -- MongoDB 数据模式与建模
MongoDB  双机热备那篇文章是  “毒”
MongoDB   会丢数据吗?在次补刀MongoDB  双机热备
MONGODB  ---- Austindatabases  历年文章合集


MySQL相关文章


MySQL 怎么让自己更高级---从内存表说到了开发方式
MySQL timeout 参数可以让事务不完全回滚
"DBA 是个der" 吵出MySQL主键问题多种解决方案

MySQL 让你还用5.7 出事了吧,用着用着5.7崩了

MySQL 的SQL引擎很差吗?由一个同学提出问题引出的实验
用MySql不是MySQL, 不用MySQL都是MySQL 横批 哼哼哈哈啊啊
MYSQL  --Austindatabases 历年文章合集

阿里云系列

阿里云数据库产品权限设计缺陷 ,六个场景诠释问题,你可以做的更好?

阿里云数据库--市场营销聊胜于无--3年的使用感受与反馈系列

阿里云数据库产品 对内对外一样的卷 --3年阿里云数据库的使用感受与反馈系列

阿里云数据库使用感受--客户服务问题深入剖析与什么是廉价客户 --3年的使用感受与反馈系列

阿里云数据库使用感受--操作界面有点眼花缭乱 --3年的使用感受与反馈系列



临时工访谈系列

知人者智,自知者明,琼瑶一路走好
本地存储还有活路吗? 从上周一个供应商问我的问题开始
一年又一年,成了老梆子,别回头,往前看!
临时工说: 实际实例揭穿AI, 上云就不用DBA的谎言
临时工说:DBA 7*24H 给2万的工作,到底去不去?
国内最大IT服务公司-招聘DBA “招聘广告”的变化--分析与探讨
临时工说:  网友问35岁就淘汰,我刚入行DBA 怎么办?

截止今天共发布1269篇文章



AustinDatabases
PostgreSQL ACE ,PolarDB 3年, OceanBase 极速学习ING, MongoDB 8年经验, MySQL OCP, SQL SERVER, MCITP,REDIS ,做一个合格的数据库架构师
 最新文章