大年初一值班记:当重庆DBA在客户现场“捞”数据库的底料配方
开场:雾都客户现场的“新年交响”
大年初一,重庆解放碑的钟声穿透晨雾,而我——一个穿着羽绒服缩在客户现场办公室角落的DBA——正对着满屏xshell代码苦笑。甲方领导的微信如约而至:
客户需求:
“老师(重庆尊称),把生产库的‘底料配方’导一份出来嘛!就是那个建库的原始脚本,我们审计要用。”
我盯着“底料配方”四个字,嗦了一口手边的泡面,心想:“这年过得巴适,数据库都要讲江湖规矩。”
MySQL老饕的“翻车现场”
甲方技术小哥凑过来支招:“老师,MySQL不是有个SHOW CREATE DATABASE迈?搞快试试撒!” 我礼貌微笑,手上却诚实地在PostgreSQL里敲下:
SHOW CREATE DATABASE hotpot_db;
屏幕瞬间弹出一行无情的报错:
ERROR: syntax error at or near "SHOW"
空气突然安静。屏幕的光亮映在小哥脸上,我仿佛听到PG在说:“哥子,重庆火锅和潮汕牛肉锅能一样嗦?” 🌶️
方法一:DBA的“九宫格秘籍”——pg_dump --create
🔥 核心武器
pg_dump -U dba_chongqing --schema-only --create -d hotpot_db > hotpot_recipe.sql
🍜 技术分解
--create:生成CREATE DATABASE语句(相当于火锅店的营业执照)--schema-only:只捞红汤不要菜(只要结构不要数据)- 输出彩蛋:自动带
\connect切换(PG:“给你整个微辣中辣鸳鸯锅选项!”)
📜 文件片段鉴赏
-- 数据库的"锅底配方"
CREATE DATABASE hotpot_db
WITH TEMPLATE = template0
ENCODING = 'UTF8'
LC_COLLATE = 'zh_CN.UTF-8' -- 按拼音排序(重庆人念"编码"为"bian ma")
LC_CTYPE = 'zh_CN.UTF-8'; -- 认得到火锅生僻字"燚"
\connect hotpot_db -- 自动跳转到红汤区
-- 此处省略毛肚表、鸭血视图、脑花索引的"涮煮指南"
方法二:系统表的“梯坎考古”——适合硬核DBA
正当我准备优雅收工时,甲方领导发来语音:
“老师,客户生产网段封闭,命令行工具用不起哈,直接写SQL搞一哈嘛!”
我默默收起泡面碗——这是要在系统表里爬坡上坎啊!
🛠️ 硬核操作手册
STEP 1:查户口(系统表三连JOIN)
SELECT
datname AS "店名",
rolname AS "掌柜",
pg_encoding_to_char(encoding) AS "锅底编码",
datcollate AS "菜品摆盘规则",
datctype AS "筷子使用规范",
spcname AS "灶台位置",
CASE WHEN datconnlimit = -1
THEN '不限号'
ELSE '排队' || datconnlimit || '桌'
END AS 客流量控制
FROM pg_database db
JOIN pg_roles r ON db.datdba = r.oid
LEFT JOIN pg_tablespace ts ON db.dattablespace = ts.oid
WHERE datname = 'hotpot_db';
输出示例:
店名 | 掌柜 | 锅底编码 | 菜品摆盘规则 | 筷子使用规范 | 灶台位置 | 客流量控制
----------|---------|---------|--------------|--------------|------------|-----------
hotpot_db | postgres| UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 | pg_default | 不限号
STEP 2:手动拼装“非遗配方”
CREATE DATABASE hotpot_db
OWNER = postgres -- 掌柜必须写对
ENCODING = 'UTF8' -- 锅底必须红汤
LC_COLLATE = 'zh_CN.UTF-8' -- 毛肚要比白菜先下
LC_CTYPE = 'zh_CN.UTF-8' -- 认得到"嘞是雾都"
TABLESPACE = pg_default -- 灶台就在解放碑
CONNECTION LIMIT = -1 -- 洪崖洞级客流量
IS_TEMPLATE = false; -- 不开连锁店
为什么PostgreSQL这么“拽实”?
两地数据库哲学对比:
| 行为 | MySQL | PostgreSQL |
|---|---|---|
| 获取DDL | 直接给配方(SHOW CREATE) |
先考厨师证再给秘方(系统表JOIN) |
| 设计理念 | “鸳鸯锅也行嘛” | “微辣是底线,中辣才入门” |
PG仿佛叼着牙签的火锅店老板:“兄弟,pg_dump是给熟客的VIP通道,系统表才是老师傅的案板功夫!”
甲方的“魔鬼需求”
当我提交两份方案后,办公室突然灯光一暗——跳闸了。重启后收到甲方微信:
“老师,这个LC_COLLATE能不能改成chongqing.UTF-8?我们数据要按‘一环路内、二环路外’排序!”
我(默默打开应急灯):
“领导,这个需求…怕是要等Unicode联盟开两会哦!” 💡
谨以此文献给所有春节坚守机房的DBA
最后修改时间:2025-02-05 09:58:56
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




