PostgreSQL的DB在表空间之间迁移

Background

The /data/01 disk space is insufficient,but /data/02 is sufficient,so we migrate some data to /data/02.


1.Backup DB and upload to s3

pg_dump --verbose -Fc --dbname=region_il | gzip > /data/02/backup/region_il_20180907.psql.gz

pg_dump --verbose -Fc --dbname=region_anz | gzip > /data/02/backup/region_anz_20180907.psql.gz

pg_dump --verbose -Fc --dbname=region_mea | gzip > /data/02/backup/region_mea_20180907.psql.gz

pg_dump --verbose -Fc --dbname=region_sa | gzip > /data/02/backup/region_sa_20180907.psql.gz



$ aws s3 cp region_il_20180907.psql.gz s3://dba-backups/

$ aws s3 cp region_anz_20180907.psql.gz s3://dba-backups/

$ aws s3 cp region_mea_20180907.psql.gz s3://dba-backups/

$ aws s3 cp region_sa_20180907.psql.gz s3://dba-backups/


$ aws s3 ls s3://dba-backups/ |grep "20180907.psql.gz"

2018-07-09 07:31:57 1831857418 region_anz_20180907.psql.gz

2018-07-09 07:33:57 1615345844 region_il_20180907.psql.gz

2018-07-09 07:37:05 8780321291 region_mea_20180907.psql.gz

2018-07-09 07:44:52 20429541766 region_sa_20180907.psql.gz



2.Check Session and disk freeable space


postgres=#select*frompg_stat_activity;
datid|datname|pid|usesysid|usename|application_name|client_addr|client_hostname|client_port|backend_start|xact_start|query_start|state_change|waiting|state|query
-------+----------+-------+----------+----------+------------------+-------------+-----------------+-------------+-------------------------------+-------------------------------+-------------------------------+-------------------------------+---------+--------+----------------------------------
12840|postgres|23155|10|postgres|psql|||-1|2018-07-0907:38:34.935179-04|2018-07-0907:43:04.894374-04|2018-07-0907:43:04.894374-04|2018-07-0907:43:04.894378-04|f|active|select*frompg_stat_activity;
12840|postgres|22809|10|postgres|psql|||-1|2018-07-0907:34:45.688671-04||2018-07-0907:37:37.758388-04|2018-07-0907:37:37.758749-04|f|idle|selectoid,*frompg_tablespace;
(2rows)




$ df -Th

Filesystem Type Size Used Avail Use% Mounted on

/dev/xvde1 ext3 9.9G 6.4G 3.0G 69% /

none tmpfs 15G 12K 15G 1% /dev/shm

/dev/xvdl1 ext4 493G 47G 421G 10% /data/02

/dev/xvdk1 ext4 2.0T 1.8T 113G 94% /data/01




3.Create new tablespace location /data/02 disk:

create tablespace region owner denaliadmin location '/data/02/pgsql/data/base';

postgres=# \db+

List of tablespaces

Name | Owner | Location | Access privileges | Description

------------+-------------+--------------------------+-------------------+-------------

pg_default | postgres | | |

pg_global | postgres | | |

region | denaliadmin | /data/02/pgsql/data/base | |

(3 rows)




4.Move DB to new Tablespace


postgres=#selectoid,*frompg_database;
oid|datname|datdba|encoding|datcollate|datctype|datistemplate|datallowconn|datconnlimit|datlastsysoid|datfrozenxid|datminmxid|dattablespace|datacl
--------+--------------------+--------+----------+-------------+-------------+---------------+--------------+--------------+---------------+--------------+------------+---------------+-------------------------------------------------------------------
1|template1|10|6|en_US.UTF-8|en_US.UTF-8|t|t|-1|12835|200001862|1|1663|{=c/postgres,postgres=CTc/postgres}
12835|template0|10|6|en_US.UTF-8|en_US.UTF-8|t|f|-1|12835|200001940|1|1663|{=c/postgres,postgres=CTc/postgres}
12840|postgres|10|6|en_US.UTF-8|en_US.UTF-8|f|t|-1|12835|295302735|1|1663|
16384|template_postgis|10|6|en_US.UTF-8|en_US.UTF-8|f|t|-1|12835|205319808|1|1663|
21627|denali_test|16513|6|en_US.UTF-8|en_US.UTF-8|f|t|-1|12835|205320018|1|1663|
17794|denali|10|6|en_US.UTF-8|en_US.UTF-8|f|t|-1|12835|205316770|1|1663|{=Tc/postgres,postgres=CTc/postgres,r_denali_readonly=c/postgres}
25419|contrib_regression|10|6|en_US.UTF-8|en_US.UTF-8|f|t|-1|12835|295302735|1|1663|
71746|regression|16513|6|en_US.UTF-8|en_US.UTF-8|f|t|-1|12835|187750513|1|1663|
103050|test|16513|6|en_US.UTF-8|en_US.UTF-8|f|t|-1|12835|200001862|1|1663|
48729|region_na|16513|6|en_US.UTF-8|en_US.UTF-8|f|t|-1|12835|190246393|1|1663|
153385|region_sea|16513|6|en_US.UTF-8|en_US.UTF-8|f|t|-1|12835|200001862|1|1663|
158397|fuse|16513|6|en_US.UTF-8|en_US.UTF-8|f|t|-1|12835|200001862|1|1663|
81870|region_eu|16513|6|en_US.UTF-8|en_US.UTF-8|f|t|-1|12835|192495454|1|1663|
93796|region_sa|16513|6|en_US.UTF-8|en_US.UTF-8|f|t|-1|12835|200778866|1|1663|
×××8|region_mea|16513|6|en_US.UTF-8|en_US.UTF-8|f|t|-1|12835|190246488|1|1663|
101209|region_il|16513|6|en_US.UTF-8|en_US.UTF-8|f|t|-1|12835|199337179|1|1663|
101862|region_anz|16513|6|en_US.UTF-8|en_US.UTF-8|f|t|-1|12835|199763417|1|1663|
(17rows)


postgres=# select oid,* from pg_tablespace;

oid | spcname | spcowner | spcacl | spcoptions

--------+------------+----------+--------+------------

1663 | pg_default | 10 | |

1664 | pg_global | 10 | |

271240 | region | 16513 | |

(3 rows)



alter database region_il set tablespace region;

alter database region_anz set tablespace region;

alter database region_mea set tablespace region;

alter database region_sa set tablespace region;


postgres=#selectoid,*frompg_databasewheredatnamein('region_il','region_anz','region_mea','region_sa');
oid|datname|datdba|encoding|datcollate|datctype|datistemplate|datallowconn|datconnlimit|datlastsysoid|datfrozenxid|datminmxid|dattablespace|datacl
--------+------------+--------+----------+-------------+-------------+---------------+--------------+--------------+---------------+--------------+------------+---------------+--------
101209|region_il|16513|6|en_US.UTF-8|en_US.UTF-8|f|t|-1|12835|199337179|1|271240|
101862|region_anz|16513|6|en_US.UTF-8|en_US.UTF-8|f|t|-1|12835|199763417|1|271240|
×××8|region_mea|16513|6|en_US.UTF-8|en_US.UTF-8|f|t|-1|12835|190246488|1|271240|
93796|region_sa|16513|6|en_US.UTF-8|en_US.UTF-8|f|t|-1|12835|200778866|1|271240|
(4rows)

/dev/xvdl1 ext4 493G 332G 136G 71% /data/02

/dev/xvdk1 ext4 2.0T 1.5T 399G 79% /data/01



5.Restart Database

pg_ctl stop;

pg_ctl start;


6.Reference

https://www.postgresql.org/docs/9.3/static/sql-createtablespace.html

https://www.postgresql.org/docs/9.3/static/sql-alterdatabase.html

相关文章

项目需要,有个数据需要导入,拿到手一开始以为是mysql,结果...
本文小编为大家详细介绍“怎么查看PostgreSQL数据库中所有表...
错误现象问题原因这是在远程连接时pg_hba.conf文件没有配置正...
因本地资源有限,在公共测试环境搭建了PGsql环境,从数据库本...
wamp 环境 这个提示就是说你的版本低于10了。 先打印ph...
psycopg2.OperationalError: SSL SYSCALL error: EOF detect...