墨墨导读:最近被问到PG在线扩容的问题,本文整理了整个过程,之前写过一篇文章,供大家参考:《PosgreSQL三种表空间使用方式》https://www.modb.pro/db/14119。

1. 查看表空间

postgres=# \db+                                  List of tablespaces    Name    |  Owner   | Location | Access privileges | Options |  Size   | Description ------------+----------+----------+-------------------+---------+---------+------------- pg_default | postgres |          |                   |         | 1088 MB |  pg_global  | postgres |          |                   |         | 2167 kB | (2 rows)

可以看到这里没有自定义表空间,默认使用pg_default 表空间

2. 创建演示数据库和用户

使用新的数据库app,并且owner为app用户来进行演示

postgres=# create user app password'XXX';CREATE ROLEpostgres=# create database app owner app;CREATE DATABASEpostgres=# \c app appYou are now connected to database "app" as user "app".app=> create schema app authorization app;CREATE SCHEMAapp=> create table public.t1(id int);CREATE TABLEapp=> create table app.t2(id int);CREATE TABLE

3. 新建表空间

创建表空间需要超级用户权限

$ mkdir tblspace_new
app=# CREATE TABLESPACE tbl_app OWNER app LOCATION '/home/postgres/tblspace_new';CREATE TABLESPACE

4. 数据库app使用新表空间作为默认表空间

app=# \c app app
You are now connected to database "app" as user "app".
app=> alter database app set default_tablespace to tbl_app;退出psql再重新连接
app=> create table public.t3(id int);
CREATE TABLE
app=> create table app.t4(id int);
CREATE TABLE
app=> select pg_relation_filepath('t3');pg_relation_filepath
------------------------------------------------pg_tblspc/356916/PG_12_201909212/356883/356935
(1 row)app=> select pg_relation_filepath('app.t4');pg_relation_filepath
------------------------------------------------pg_tblspc/356916/PG_12_201909212/356883/356938
(1 row)app=> select oid,spcname from pg_tablespace ;oid   |  spcname
--------+------------1663 | pg_default1664 | pg_global356916 | tbl_app
(3 rows)

可以看到在app数据库下新建的表默认变到tbl_app表空间下,即oid为356916。

5. 修改用户app默认表空间为tbl_app

先恢复下上面的配置

drop table public.t3;drop table app.t4;alter database app set default_tablespace to default;
app=# \c app appapp=> alter user app set default_tablespace to tbl_app;

退出psql再重新连接

app=> create table public.t5(id int);CREATE TABLEapp=> create table app.t6(id int);CREATE TABLEapp=> select pg_relation_filepath('t5');              pg_relation_filepath              ------------------------------------------------ pg_tblspc/356916/PG_12_201909212/356883/356959(1 row)
app=> select pg_relation_filepath('app.t6');              pg_relation_filepath              ------------------------------------------------ pg_tblspc/356916/PG_12_201909212/356883/356962(1 row)

可以看到用户app新建的表默认变到tbl_app表空间下,其他用户不受影响。

6. 总结

  • 如果要迁移数据表的表空间,会锁表,要注意对业务的影响。

  • 新建表修改database级别或者user级别(一般还是database级别)的默认表空间,只需配置一次,原有的数据表存储不改变,这种方式是推荐的。

墨天轮原文链接:https://www.modb.pro/db/26082(复制到浏览器中打开或者点击“阅读原文”)

推荐阅读:144页!分享珍藏已久的数据库技术年刊

数据和云

ID:OraNews

如有收获,请划至底部,点击“在看”,谢谢!

点击下图查看更多 ↓

云和恩墨大讲堂 | 一个分享交流的地方

长按,识别二维码,加入万人交流社群

请备注:云和恩墨大讲堂

  点个“在看”

你的喜欢会被看到❤

实战演练:PostgreSQL在线扩容相关推荐

  1. lvm 扩展根目录_Linux下lvm在线扩容步骤

    LVM是逻辑盘卷管理(Logical Volume Manager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分区管理的灵活性.LV ...

  2. Linux 文件系统在线扩容实战

    1.关于LVM的简要介绍 LVM,即logic volume manager,逻辑卷管理.LVM的架构图如下: 说明: 第一,重点需要关注pv(physical volume) 物理卷,vg(volu ...

  3. 腾讯会议核心数据库TDSQL,如何做到快速无损在线扩容?

    自去年12月底发布后,腾讯会议40天更新14个版本,8天紧急扩容超过10万台云主机,投入的计算资源超100万核.疫情复工期间,每周都有数万家企业和政府相关机构使用腾讯会议复工复产,通过腾讯会议开拓了云 ...

  4. h710阵列卡支持最大硬盘_DELL服务器RAID磁盘阵列在线扩容(以H710P阵列卡为例)

    DELL服务器RAID磁盘阵列在线扩容(以H710P阵列卡为例) 分享到: 作者来源: 未知       发布时间:2013-01-12 简介 我们可通过扩充容量和 / 或改变 RAID 级别的方式来 ...

  5. xfs文件系统lvm在线扩容

    通过pvs,vgs,lvs 等确认要扩容的VG,LV的名称.大小等信息,以免弄错. 1.确认服务器新扫描到的volume信息 #fdisk -l | more 2.fdisk 给新设备分区,选择分区类 ...

  6. qcow2 磁盘在线扩容方法

    qcow2 磁盘在线扩容方法 - zlzlnet - 博客园qcow2 磁盘在线扩容方法 直接扩展现有qcow2格式磁盘大小的方法 注: 对应虚拟机的分区为vda,虚拟机系统为centos7 1. 查 ...

  7. linux 扩lv文件系统,Linux LVM系列(五)lv xfs文件系统在线扩容

    之前都是ext4文件系统的lvm操作,虽然xfs不支持缩容但是可以扩容,这里是在线扩容 [root@aiker01 ~]# lvdisplay /dev/vg1/lv3 --- Logical vol ...

  8. linux扩大lvm_Linux下lvm在线扩容步骤

    LVM是逻辑盘卷管理(Logical Volume Manager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分区管理的灵活性.LV ...

  9. 快速摆脱在线扩容难的噩梦?

    #华为云开年采购季#游戏开服.电商大促抢购,在线人数难预估,时常担心写爆Redis,影响活动正常进行.如何解决Redis来不及扩容?推荐使用企业级Redis,支持秒级在线扩容,关键时刻不掉链. 限时秒 ...

最新文章

  1. 经典图书《重构:改善既有代码的设计》图灵再版出版倒计时
  2. fiddler设置抓取https请求后打开网页总是报“你的连接不是私密链接”的解决办法
  3. React-Native Navigator 过渡动画卡顿的解决方案
  4. 初等数论--同余--Fermat素性检测算法(为什么每次概率改变1/2)
  5. 分享15款为开发人员准备的开发移动应用程序必备的新资源和工具
  6. java实现人脸识别源码【含测试效果图】——Dao层(IBaseDaoUtil)
  7. Linux中的Total Video Converter——超级音视频转换软件:Winff
  8. linux删除jpeg动态库,linux如何不用的删除动态库
  9. 程序员面试强行用代码画画被骂,20分钟后面试官闭嘴了
  10. 2022年最新《谷粒学院开发教程》:2 - 前后端交互篇
  11. 数据分析:销售数据怎么分析?简单概述
  12. 有趣的人工智能项目合集,如老婆生成器
  13. 「python自学建议贴」Python学习路线+视频教程完整版
  14. react antd design columns 配置解析
  15. goahead(嵌入式) webservice (3.3.0)运行goforms
  16. 基于肌肉骨骼模型的预测仿真
  17. 【SQL server】关系运算
  18. java输出希腊字母_java 命令行窗口输出希腊字母表
  19. 屏幕录制大师哪款好用?这3款录屏工具,值得推荐!
  20. 飞桨领航团AI达人创造营学习笔记1

热门文章

  1. 敏捷团队为何失败,Bash技巧,Emacs vs. Vim,为Linux粉丝撰写的12部小说读物,以及其他热门歌曲
  2. linux 企业邮件服务器_什么是Linux服务器,为什么您的企业需要一个?
  3. sourceforge_SourceForge依旧re憬未来
  4. linux 中 man 1 man2 man3 ......man N的区别
  5. ROS Rviz 显示轨迹 Python
  6. 深度学习笔记(49) 风格代价函数
  7. php 7.2.5_CentOS7下PHP5.5.38升级PHP7.2.2
  8. linux驱动大全,linux驱动
  9. mvc移动创建oracle表,使用 ASP.NET MVC (C#)在15分钟内创建电影数据库应用程序 | Microsoft Docs...
  10. akka java_java – Akka和Spring集成