The customer has a request that they need to change the PGDATA location and then the PostgreSQL tablespace needs to be changed to the new location.
Step 1. Stop Postgres
[postgres@pdb10a ~]$ pg_ctl stop -D $PGDATA waiting for server to shut down.... done server stopped
Step 2. edit parameter PGDATA to new location
[postgres@pdb10a ~]$ vim ~/.bash_profile # .bash_profile # Get the aliases and functions if [ -f ~/.bashrc ]; then . ~/.bashrc fi export PGDATA=/PG/PGDATA export PGHOME=/usr/pgsql-14 export PATH=$PATH:$PGHOME/bin
Step 3. change directory to new $PGDATA/pg_tblspc location
[postgres@pdb10a ~]$ cd $PGDATA/pg_tblspc [postgres@pdb10a pg_tblspc]$ ls -l total 0 lrwxrwxrwx. 1 postgres postgres 24 Apr 6 15:04 16454 -> /PRI/PGTBS/PBBBBBDB lrwxrwxrwx. 1 postgres postgres 22 Apr 6 15:04 16455 -> /PRI/PGTBS/PAAADB
Step 4. replace link to new location
[postgres@pdb10a pg_tblspc]$ ln -fs /PG/PGTBS/PBBBBBDB 16454 [postgres@pdb10a pg_tblspc]$ ln -fs /PG/PGTBS/PAAADB 16455 [postgres@pdb10a pg_tblspc]$ ls -l total 0 lrwxrwxrwx. 1 postgres postgres 20 Apr 14 14:52 16454 -> /PG/PGTBS/PBBBBBDB lrwxrwxrwx. 1 postgres postgres 18 Apr 14 14:52 16455 -> /PG/PGTBS/PAAADB
Step 5. Start Postgres
[postgres@pdb10a pg_tblspc]$ pg_ctl start -D $PGDATA -l /tmp/logfile waiting for server to start.... done server started
Step 6. Check Tablespace mapping to new location
[postgres@pdb10a pg_tblspc]$ psql psql (14.2) Type "help" for help. postgres=# \db+ List of tablespaces Name | Owner | Location | ... | Size | Description ------------+-----------+----------------------+-----+---------+------------- pbbbdb | pxxxxxmgr | /PG/PGTBS/PBBBBBDB | ... | 8425 kB | pg_default | postgres | | ... | 33 MB | pg_global | postgres | | ... | 576 kB | paaadb | pxxxxxmgr | /PG/PGTBS/PAAADB | ... | 8577 kB | (4 rows)
Ref:
Moving Tablespaces in PostgreSQL
0 留言