আর্ক লিনাক্সে কীভাবে বিদ্যমান পোস্টগ্রাইএসকিউএল ডাটাবেসকে একটি নতুন স্থানে (ফোল্ডার, পার্টিশন) স্থানান্তরিত করা যায় তার বিবরণ এখানে রয়েছে (অন্যান্য লিনাক্স বিতরণের ক্ষেত্রে এই পদ্ধতিটি একই হওয়া উচিত)।
pg_dumpall
ক্লাস্টারের সমস্ত PostgreSQL ডাটাবেসকে একটি স্ক্রিপ্ট ফাইলে লেখার জন্য (ডাম্পিং) ইউটিলিটি। ... এটি pg_dump
ক্লাস্টারের প্রতিটি ডাটাবেসের জন্য কল করে এটি করে । ...
উদাহরণ স্বরূপ:
## To dump all databases:
$ pg_dumpall > /tmp/db.out ## backup all postgres databases to file
$ pg_dumpall -Fc dbname > /tmp/outfile ## backup a database
## To reload database(s) from that file:
$ psql -f /tmp/db.out postgres
টি এল / ডিআর
তোমার দরকার:
- এক্সপোর্ট (
pg_dumpall
) ডাটাবেস
- নতুন EMPTY ডিরেক্টরি তৈরি করুন
- postgresql.conf ফাইল সম্পাদনা করুন
- পোস্টগ্রিজ সার্ভার পরিষেবা পুনরায় চালু করুন
- নতুন ডাটাবেসে ডাম্প ফাইল থেকে পুরানো ডেটা লোড করুন
কমান্ডের সংক্ষিপ্তসার
আমি আমার শেল প্রম্পটগুলি (হোস্টনাম ...) রেখে যাচ্ছি যে আমি এগিয়ে যাওয়ার সাথে সাথে আমি কী শেলটিতে আছি তা স্পষ্ট করে দিতে।
[victoria@victoria ~]$ postgres --version ## postgres (PostgreSQL) 11.2
[victoria@victoria claws]$ sudo -u postgres -i
[postgres@victoria ~]$ pg_dumpall > /tmp/db.out
[postgres@victoria ~]$ psql
[postgres]# SHOW data_directory; ## /var/lib/postgres/data
[postgres]# exit
[victoria@victoria postgres]$ mkdir /mnt/Vancouver/programming/rdb/postgres/postgresdb
## IMPORTANT: dir must be empty:
[victoria@victoria postgres]$ l postgresdb/ ## total 0
[victoria@victoria postgres]$ sudo chown postgres:root /mnt/Vancouver/programming/rdb/postgres/postgresdb/
[victoria@victoria postgres]$ sudo systemctl status postgresql
...
May 02 19:55:21 victoria systemd[1]: Started PostgreSQL database server.
[postgres@victoria ~]$ initdb --locale en_US.UTF-8 -E UTF8 -D '/mnt/Vancouver/programming/rdb/postgres/postgresdb/data'
[postgres@victoria ~]$ exit
[victoria@victoria postgres]$ sudo vim /var/lib/postgres/data/postgresql.conf
## added line:
data_directory = '/mnt/Vancouver/programming/rdb/postgres/postgresdb/data'
[victoria@victoria postgres]$ sudo -u postgres -i
[postgres@victoria ~]$ psql
[postgres]# SHOW data_directory;
## /var/lib/postgres/data ## << Old dir; need to restart postgresql service
[postgres]# \q
[victoria@victoria postgres]$ sudo systemctl restart postgresql
[victoria@victoria postgres]$ sudo -u postgres -i
[postgres@victoria ~]$ psql
[postgres]# SHOW data_directory;
## /mnt/Vancouver/programming/rdb/postgres/postgresdb/data
[postgres]# \q
[postgres@victoria ~]$ psql -f /tmp/db.out postgres
SET
SET
SET
CREATE ROLE
ALTER ROLE
[ ... SNIP! ... ]
[postgres@victoria ~]$ exit
## Done! :-D
উদাহরণ
মন্তব্য করা কোড এবং আউটপুটটির জন্য আমার সাথে থাকা ব্লগ পোস্টটি, আর্চ লিনাক্সে বিদ্যমান পোস্টগ্রিএসকিউএল ডেটাবেস কীভাবে স্থানান্তরিত করতে হয় তা দেখুন -----
তথ্যসূত্র