pg_restore - آنلاین در ابر

این دستور pg_restore است که می تواند در ارائه دهنده هاست رایگان OnWorks با استفاده از یکی از چندین ایستگاه کاری آنلاین رایگان ما مانند Ubuntu Online، Fedora Online، شبیه ساز آنلاین ویندوز یا شبیه ساز آنلاین MAC OS اجرا شود.

برنامه:

نام


pg_restore - بازیابی پایگاه داده PostgreSQL از یک فایل آرشیو ایجاد شده توسط pg_dump

خلاصه


pg_restore [گزینه اتصال...] [انتخاب...] [نام فایل]

شرح


pg_restore ابزاری برای بازیابی پایگاه داده PostgreSQL از آرشیو ایجاد شده توسط
pg_dump(1) در یکی از قالب های غیر متنی. دستورات لازم را صادر خواهد کرد
پایگاه داده را به حالتی که در زمان ذخیره در آن بود، بازسازی کنید. آرشیو
فایل‌ها همچنین به pg_restore اجازه می‌دهند تا در مورد آنچه بازیابی می‌شود، انتخابی باشد، یا حتی مرتب‌سازی مجدد آن‌ها را انجام دهد
موارد قبل از بازیابی فایل های آرشیو طوری طراحی شده اند که قابل حمل باشند
معماری

pg_restore می تواند در دو حالت کار کند. اگر نام پایگاه داده مشخص شده باشد، pg_restore متصل می شود
به آن پایگاه داده و محتویات بایگانی را مستقیماً در پایگاه داده بازیابی می کند. در غیر این صورت، الف
اسکریپت حاوی دستورات SQL لازم برای بازسازی پایگاه داده ایجاد می شود و
روی یک فایل یا خروجی استاندارد نوشته شده است. این خروجی اسکریپت معادل متن ساده است
فرمت خروجی pg_dump. بنابراین برخی از گزینه های کنترل خروجی هستند
مشابه گزینه های pg_dump.

بدیهی است که pg_restore نمی تواند اطلاعاتی را که در فایل بایگانی وجود ندارد بازیابی کند.
به عنوان مثال، اگر بایگانی با استفاده از داده‌های dump as ساخته شده باشد INSERT دستورات” گزینه،
pg_restore نمی تواند داده ها را با استفاده از بارگیری کند کپی کردن بیانیه.

OPTIONS


pg_restore آرگومان های خط فرمان زیر را می پذیرد.

نام فایل
محل فایل آرشیو (یا دایرکتوری، برای فرمت فهرستی) را مشخص می کند
بایگانی) بازیابی شود. اگر مشخص نشده باشد، از ورودی استاندارد استفاده می شود.

-a
--فقط داده
فقط داده ها را بازیابی کنید، نه طرحواره (تعریف داده ها). داده های جدول، اشیاء بزرگ،
و مقادیر توالی در صورت وجود در بایگانی بازیابی می شوند.

این گزینه مشابه است، اما به دلایل تاریخی با مشخص کردن یکسان نیست
--section=داده.

-c
--تمیز
اشیاء پایگاه داده را قبل از ایجاد مجدد آنها پاک کنید. (مگر اینکه --اگر وجود داشته باشد استفاده می شود،
این ممکن است برخی از پیام‌های خطای بی‌ضرر را ایجاد کند، در صورتی که اشیایی در آن وجود نداشته باشد
پایگاه داده مقصد.)

-C
--ایجاد کردن
قبل از بازگردانی در آن پایگاه داده را ایجاد کنید. اگر --تمیز نیز مشخص شده است، رها کردن و
قبل از اتصال به پایگاه داده هدف، دوباره ایجاد کنید.

هنگامی که این گزینه استفاده می شود، پایگاه داده با نام -d فقط برای صدور اولیه استفاده می شود
رها کردن DATABASE و ايجاد كردن DATABASE دستورات تمام داده ها در پایگاه داده بازیابی می شوند
نامی که در بایگانی ظاهر می شود.

-d dbname
--dbname=dbname
اتصال به پایگاه داده dbname و مستقیماً در پایگاه داده بازیابی کنید.

-e
--خروج روی خطا
اگر هنگام ارسال دستورات SQL به پایگاه داده با خطا مواجه شد، از آن خارج شوید. را
پیش‌فرض ادامه دادن و نمایش تعداد خطاها در پایان بازیابی است.

-f نام فایل
--file=نام فایل
فایل خروجی را برای اسکریپت تولید شده، یا برای فهرستی که با آن استفاده می شود، مشخص کنید -l.
پیش فرض خروجی استاندارد است.

-F قالب
--فرمت=قالب
فرمت آرشیو را مشخص کنید. نیازی به تعیین فرمت نیست، زیرا
pg_restore فرمت را به طور خودکار تعیین می کند. اگر مشخص شود، می تواند یکی از موارد باشد
زیر است:

c
سفارشی
آرشیو در قالب سفارشی pg_dump است.

d
فهرست راهنما
آرشیو یک آرشیو دایرکتوری است.

t
قیر
آرشیو یک است قیر بایگانی.

-I شاخص
--index=شاخص
فقط تعریف فهرست نامگذاری شده را بازیابی کنید. ممکن است چند شاخص مشخص شود
چندگانه -I سوئیچ ها

-j تعداد مشاغل
-- شغل =تعداد مشاغل
زمان‌برترین بخش‌های pg_restore را اجرا کنید - آن‌هایی که داده‌ها را بارگیری می‌کنند، ایجاد می‌کنند
ایندکس، یا ایجاد محدودیت - با استفاده از چندین کار همزمان. این گزینه می تواند
به طور چشمگیری زمان بازگردانی یک پایگاه داده بزرگ به سروری که روی a اجرا می شود کاهش می دهد
ماشین چند پردازنده

هر کار بسته به سیستم عامل یک فرآیند یا یک رشته است و از a استفاده می کند
اتصال جداگانه به سرور

مقدار بهینه برای این گزینه به تنظیمات سخت افزاری سرور بستگی دارد
مشتری و شبکه عوامل شامل تعداد هسته های CPU و دیسک است
برپایی. یک مکان خوب برای شروع، تعداد هسته های CPU روی سرور است، اما مقادیر
بزرگتر از آن نیز می تواند در بسیاری از موارد منجر به زمان بازیابی سریعتر شود. البته،
مقادیر بیش از حد بالا به دلیل thrashing منجر به کاهش عملکرد می شود.

فقط فرمت های سفارشی و آرشیو دایرکتوری با این گزینه پشتیبانی می شوند. را
ورودی باید یک فایل یا دایرکتوری معمولی باشد (مثلاً لوله نباشد). این گزینه است
هنگام انتشار یک اسکریپت به جای اتصال مستقیم به سرور پایگاه داده نادیده گرفته می شود.
همچنین، چندین کار را نمی توان همراه با گزینه مورد استفاده قرار داد -- تک معامله.

-l
-- لیست
فهرست مطالب آرشیو خروجی این عملیات می تواند به عنوان ورودی استفاده شود
la -L گزینه. توجه داشته باشید که اگر فیلتر سوئیچ هایی مانند -n or -t با استفاده می شوند -l، آنها
موارد ذکر شده را محدود می کند.

-L لیست-فایل
--use-list=لیست-فایل
فقط آن دسته از عناصر بایگانی را که در لیست هستند بازیابی کنید لیست-فایل، و آنها را بازیابی کنید
ترتیب ظاهر شدن آنها در فایل توجه داشته باشید که اگر فیلتر سوئیچ هایی مانند -n or -t
با استفاده می شوند -L، موارد بازیابی شده را بیشتر محدود می کنند.

لیست-فایل معمولاً با ویرایش خروجی قبلی ایجاد می شود -l عمل. خطوط
را می توان جابجا کرد یا حذف کرد و همچنین می توان با قرار دادن نقطه ویرگول (;) در آن نظر داد
شروع خط برای نمونه به زیر مراجعه کنید.

-n فضای نام
--طرحواره=طرح
فقط اشیایی را بازیابی کنید که در طرح نامگذاری شده هستند. ممکن است طرحواره های متعددی مشخص شود
با چند -n سوئیچ ها این را می توان با -t گزینه ای برای بازیابی فقط یک
جدول خاص

-O
-- بدون مالک
برای تنظیم مالکیت اشیا برای مطابقت با پایگاه داده اصلی از دستورات خروجی خودداری کنید. توسط
پیش فرض، مشکلات pg_restore تغییر دهید OWNER or مجموعه جلسه اعتبارسنجی بیانیه هایی برای تنظیم
مالکیت عناصر طرحواره ایجاد شده این عبارات شکست خواهند خورد مگر اینکه اولیه باشند
اتصال به پایگاه داده توسط یک ابرکاربر (یا همان کاربری که همه آنها را در اختیار دارد) ایجاد می شود
اشیاء در فیلمنامه). با -O، هر نام کاربری را می توان برای حرف اول استفاده کرد
اتصال، و این کاربر مالک تمام اشیاء ایجاد شده خواهد بود.

-P function-name(argtype [, ...])
--function=function-name(argtype [, ...])
فقط تابع نامگذاری شده را بازیابی کنید. مراقب املای نام تابع و آرگومان ها باشید
دقیقاً همانطور که در فهرست محتویات فایل dump ظاهر می شود. توابع چندگانه ممکن است باشد
با چندگانه مشخص شده است -P سوئیچ ها

-R
-- بدون اتصال مجدد
این گزینه منسوخ شده است اما همچنان برای سازگاری با نسخه قابل قبول است.

-s
--فقط طرحواره
فقط طرحواره (تعریف داده ها) را بازیابی کنید، نه داده ها را تا حدی که طرحواره
مطالب در آرشیو موجود است.

این گزینه برعکس است --فقط داده. شبیه است، اما برای تاریخی
دلایل غیر یکسان با، مشخص کردن --section=پیش داده --section=پست داده.

(این را با -- طرحواره گزینه ای که از کلمه طرحواره در الف استفاده می کند
معنی متفاوت.)

-S نام کاربری
--superuser=نام کاربری
نام کاربری ابرکاربر را برای استفاده در هنگام غیرفعال کردن تریگرها مشخص کنید. این فقط مربوط است
if --غیرفعال کردن محرک ها استفاده می شود.

-t جدول
-- جدول =جدول
فقط تعریف و/یا داده های جدول نامگذاری شده را بازیابی کنید. ممکن است چندین جدول مشخص شود
با چند -t سوئیچ ها این را می توان با -n گزینه ای برای تعیین a
طرحواره

-T ماشه
-- ماشه =ماشه
فقط ماشه با نام را بازیابی کنید. چندین محرک ممکن است با چندگانه مشخص شود -T
سوئیچ ها

-v
-- پرحرف
حالت پرحرف را مشخص می کند.

-V
- نسخه
نسخه pg_restore را چاپ کرده و خارج شوید.

-x
--بدون امتیاز
--بدون آکل
جلوگیری از بازیابی امتیازات دسترسی (دستورات اعطا/لغو).

-1
-- تک معامله
بازیابی را به صورت یک تراکنش واحد اجرا کنید (یعنی دستورات صادر شده را در آن بپیچید
شروع/مرتکب شدن). این تضمین می کند که یا تمام دستورات با موفقیت کامل شوند یا خیر
تغییرات اعمال می شود. این گزینه دلالت دارد --خروج روی خطا.

--غیرفعال کردن محرک ها
این گزینه فقط در هنگام انجام بازیابی فقط داده مربوط است. دستور می دهد
pg_restore برای اجرای دستوراتی برای غیرفعال کردن موقت تریگرها در جداول هدف
در حالی که داده ها بارگذاری مجدد می شوند. اگر چک یکپارچگی ارجاعی یا موارد دیگر دارید از این استفاده کنید
محرک‌هایی روی جداول که نمی‌خواهید در حین بارگیری مجدد داده‌ها از آنها استفاده کنید.

در حال حاضر، دستورات صادر شده برای --غیرفعال کردن محرک ها باید به عنوان superuser انجام شود. بنابراین
شما همچنین باید یک نام superuser را با آن مشخص کنید -S یا ترجیحاً pg_restore را به صورت a اجرا کنید
ابرکاربر PostgreSQL.

--enable-row-security
این گزینه فقط هنگام بازیابی محتویات جدولی که دارای ردیف است مرتبط است
امنیت. به‌طور پیش‌فرض، pg_restore row_security را خاموش می‌کند تا اطمینان حاصل شود که همه داده‌ها
به جدول بازگردانده می شود. اگر کاربر از امتیازات کافی برای دور زدن برخوردار نباشد
امنیت ردیف، سپس یک خطا پرتاب می شود. این پارامتر دستور تنظیم pg_restore را می دهد
در عوض row_security به روشن، به کاربر این امکان را می دهد که سعی کند محتویات را بازیابی کند
جدول با امنیت ردیف فعال است. اگر کاربر این کار را نداشته باشد، ممکن است باز هم شکست بخورد
حق درج سطرها از روگرفت به جدول.

توجه داشته باشید که این گزینه در حال حاضر به dump in نیز نیاز دارد INSERT قالب، به عنوان کپی کردن به
امنیت ردیف را پشتیبانی نمی کند.

--اگر وجود داشته باشد
هنگام تمیز کردن پایگاه داده از دستورات شرطی استفاده کنید (یعنی یک عبارت IF EXISTS اضافه کنید).
اشیاء. این گزینه معتبر نیست مگر اینکه --تمیز نیز مشخص شده است.

--no-data-for-failed-tables
به‌طور پیش‌فرض، حتی اگر دستور ایجاد جدول شکست بخورد، داده‌های جدول بازیابی می‌شوند
(مثلاً چون قبلاً وجود دارد). با این گزینه، داده های چنین جدولی حذف می شود.
این رفتار در صورتی مفید است که پایگاه داده هدف قبلاً شامل جدول مورد نظر باشد
فهرست. به عنوان مثال، جداول کمکی برای پسوندهای PostgreSQL مانند PostGIS
ممکن است قبلاً در پایگاه داده هدف بارگذاری شده باشد. تعیین این گزینه جلوگیری می کند
داده های تکراری یا منسوخ از بارگذاری در آنها.

این گزینه فقط هنگام بازیابی مستقیم در پایگاه داده موثر است، نه زمانی که
تولید خروجی اسکریپت SQL

--بدون برچسب های امنیتی
از خروجی دستورات برای بازیابی برچسب های امنیتی خودداری کنید، حتی اگر آرشیو حاوی آنها باشد.

--بدون جدول
برای انتخاب جدول‌ها از دستورات خروجی خودداری کنید. با این گزینه همه اشیا خواهند بود
ایجاد شده در هر جدولی که پیش‌فرض در حین بازیابی باشد.

--بخش =نام بخش
فقط بخش نامگذاری شده را بازیابی کنید. نام بخش می تواند باشد پیش داده, داده ها، یا پس داده ها.
این گزینه را می توان بیش از یک بار برای انتخاب چند بخش مشخص کرد. پیشفرض
بازیابی تمام بخش ها است.

بخش داده شامل داده های جدول واقعی و همچنین تعاریف شی بزرگ است.
آیتم های پس از داده شامل تعاریف شاخص ها، محرک ها، قوانین و محدودیت ها هستند
به غیر از محدودیت های چک معتبر اقلام پیش داده شامل تمام داده های دیگر است
موارد تعریف

--use-set-session-authorization
خروجی استاندارد SQL مجموعه جلسه اعتبارسنجی دستورات به جای تغییر دهید OWNER دستورات
برای تعیین مالکیت شی این امر باعث می شود زباله با استانداردها سازگارتر باشد، اما
بسته به تاریخچه اشیاء موجود در تخلیه، ممکن است به درستی بازیابی نشود.

-?
--کمک
راهنمایی در مورد آرگومان های خط فرمان pg_restore را نشان دهید و از آن خارج شوید.

pg_restore همچنین آرگومان های خط فرمان زیر را برای پارامترهای اتصال می پذیرد:

-h میزبان
-- میزبان =میزبان
نام میزبان ماشینی که سرور روی آن در حال اجرا است را مشخص می کند. اگر ارزش
با یک اسلش شروع می شود، به عنوان دایرکتوری برای سوکت دامنه یونیکس استفاده می شود. در
پیش فرض از PGHOST متغیر محیطی، اگر تنظیم شود، در غیر این صورت یک دامنه یونیکس
اتصال سوکت تلاش می شود.

-p بندر
--پورت=بندر
پورت TCP یا پسوند فایل سوکت دامنه یونیکس محلی که سرور روی آن قرار دارد را مشخص می کند
برای اتصالات گوش می دهد. به طور پیش فرض به PGPORT متغیر محیطی، اگر تنظیم شود، یا
یک پیش فرض کامپایل شده

-U نام کاربری
-- نام کاربری =نام کاربری
نام کاربری برای اتصال به عنوان.

-w
--بدون رمز عبور
هرگز درخواست رمز عبور صادر نکنید. اگر سرور به احراز هویت رمز عبور نیاز دارد و الف
رمز عبور با ابزارهای دیگری مانند فایل .pgpass، اتصال در دسترس نیست
تلاش شکست خواهد خورد این گزینه می تواند در کارهای دسته ای و اسکریپت هایی که هیچ کاربری ندارند مفید باشد
برای وارد کردن رمز عبور وجود دارد.

-W
--کلمه عبور
قبل از اتصال به پایگاه داده، pg_restore را مجبور به درخواست رمز عبور کنید.

این گزینه هرگز ضروری نیست، زیرا pg_restore به طور خودکار a را درخواست می کند
اگر سرور نیاز به احراز هویت رمز عبور داشته باشد. با این حال، pg_restore هدر خواهد رفت
تلاش برای اتصال برای یافتن اینکه سرور رمز عبور می خواهد. در برخی موارد چنین است
ارزش تایپ کردن را دارد -W برای جلوگیری از تلاش اضافی برای اتصال

--نقش=نام نقش
نام نقشی را مشخص می کند که برای انجام بازیابی استفاده می شود. این گزینه باعث pg_restore می شود
صدور مجموعه نقش نام نقش دستور پس از اتصال به پایگاه داده مفید است
زمانی که کاربر احراز هویت شده (مشخص شده توسط -U) فاقد امتیازات مورد نیاز pg_restore است،
اما می تواند به نقشی با حقوق مورد نیاز سوئیچ کند. برخی از تاسیسات دارای یک خط مشی هستند
در مقابل ورود مستقیم به عنوان ابرکاربر، و استفاده از این گزینه امکان بازیابی را فراهم می کند
بدون نقض خط مشی انجام شود.

محیط زیست


PGHOST
PGOPTIONS
PGPORT
PGUSER
پارامترهای اتصال پیش فرض

این ابزار، مانند بسیاری از ابزارهای دیگر PostgreSQL، از متغیرهای محیطی نیز استفاده می کند
پشتیبانی شده توسط libpq (به بخش 31.14، "متغیرهای محیطی"، در مستندات مراجعه کنید).
با این حال، آن را نمی خواند PGDATABASE زمانی که نام پایگاه داده ارائه نشده است.

عیب یابی


هنگامی که یک اتصال مستقیم پایگاه داده با استفاده از -d گزینه، pg_restore داخلی
دستورات SQL را اجرا می کند. اگر در اجرای pg_restore مشکل دارید، مطمئن شوید که قادر هستید
برای انتخاب اطلاعات از پایگاه داده با استفاده از، برای مثال، psql(1). همچنین، هر پیش فرض
تنظیمات اتصال و متغیرهای محیطی مورد استفاده توسط کتابخانه front-end libpq خواهد بود
درخواست دادن.

NOTES


اگر نصب شما هر گونه افزودنی محلی به پایگاه داده template1 دارد، مراقب بارگیری باشید
خروجی pg_restore به یک پایگاه داده واقعاً خالی. در غیر این صورت به احتمال زیاد دریافت خواهید کرد
خطاهای ناشی از تعاریف تکراری اشیاء اضافه شده. برای ایجاد یک پایگاه داده خالی
بدون هیچ گونه افزودنی محلی، از template0 نه template1 کپی کنید، به عنوان مثال:

ایجاد پایگاه داده foo با الگوی0.

محدودیت‌های pg_restore در زیر توضیح داده شده است.

· هنگام بازیابی داده ها به یک جدول از قبل موجود و گزینه --غیرفعال کردن محرک ها استفاده می شود،
pg_restore دستوراتی برای غیرفعال کردن تریگرها در جداول کاربر قبل از قرار دادن آن صادر می کند
داده، سپس دستوراتی برای فعال کردن مجدد آنها پس از درج داده صادر می کند. اگر
بازیابی در وسط متوقف می شود، کاتالوگ های سیستم ممکن است در اشتباه باقی بمانند
دولت است.

· pg_restore نمی تواند اشیاء بزرگ را بطور انتخابی بازیابی کند. به عنوان مثال، فقط کسانی که برای a
جدول خاص اگر یک بایگانی حاوی اشیاء بزرگ باشد، تمام اشیاء بزرگ خواهند بود
بازیابی شده اند، یا اگر از طریق حذف شوند، هیچ کدام از آنها حذف نشده اند -L, -t، یا گزینه های دیگر

همچنین ببینید pg_dump(1) اسناد برای جزئیات در مورد محدودیت های pg_dump.

پس از بازیابی، اجرای آن عاقلانه است تجزیه و تحلیل در هر جدول بازیابی شده، بنابراین بهینه ساز دارد
آمار مفید؛ بخش 23.1.3، "به روز رسانی آمار برنامه ریز" را در مستندات ببینید
و بخش 23.1.6، "شبح اتوواکیوم"، در مستندات برای اطلاعات بیشتر.

مثال ها


فرض کنید یک پایگاه داده به نام mydb را در یک فایل dump با فرمت سفارشی ریخته ایم:

$ pg_dump -Fc mydb > db.dump

برای حذف پایگاه داده و ایجاد مجدد آن از Dump:

$ dropdb mydb
$ pg_restore -C -d postgres db.dump

پایگاه داده ای که در -d سوئیچ می تواند هر پایگاه داده موجود در خوشه باشد.
pg_restore فقط از آن برای صدور استفاده می کند ايجاد كردن DATABASE دستور برای mydb با -C، داده است
همیشه به نام پایگاه داده ای که در فایل dump ظاهر می شود بازیابی می شود.

برای بارگذاری مجدد Dump در یک پایگاه داده جدید به نام newdb:

$ ایجاد شده ب -T قالب 0 newdb
$ pg_restore -d newdb db.dump

توجه داشته باشید که ما استفاده نمی کنیم -Cو در عوض مستقیماً به پایگاه داده متصل شوید تا در آن بازیابی شود.
همچنین توجه داشته باشید که ما پایگاه داده جدید را از template0 و نه template1 کلون می کنیم تا مطمئن شویم که درست است
در ابتدا خالی

برای مرتب سازی مجدد آیتم های پایگاه داده، ابتدا لازم است فهرست محتویات را حذف کنید
بایگانی:

$ pg_restore -l db.dump > db.list

فایل فهرست شامل یک سربرگ و یک خط برای هر مورد است، به عنوان مثال:

;
; بایگانی در دوشنبه 14 سپتامبر 13، 55:39:2009 ایجاد شد
; dbname: DBDEMOS
; ورودی های TOC: 81
; فشرده سازی: 9
; نسخه دامپ: 1.10-0
; فرمت: CUSTOM
; عدد صحیح: 4 بایت
; افست: 8 بایت
; حذف شده از نسخه پایگاه داده: 8.3.5
; Dumped توسط pg_dump نسخه: 8.3.8
;
;
; ورودی های TOC انتخاب شده:
;
3; 2615 2200 SCHEMA - پاشا عمومی
1861; 0 0 نظر - SCHEMA پاشا عمومی
1862; 0 0 ACL - پاشا عمومی
317; 1247 17715 TYPE عمومی کامپوزیت پاشا
319; 1247 25899 DOMAIN public domain0 pasha

نقطه ویرگول ها یک نظر را شروع می کنند و اعداد در ابتدای خطوط به داخلی اشاره می کنند
شناسه آرشیو اختصاص داده شده به هر مورد.

خطوط موجود در فایل را می توان نظر داد، حذف کرد و مرتب کرد. مثلا:

10; 145433 TABLE map_resolutions postgres
;2; 145344 TABLE گونه postgres
;4; 145359 TABLE nt_header postgres
6 145402 TABLE species_records postgres
;8; 145416 TABLE ss_old postgres

می تواند به عنوان ورودی pg_restore استفاده شود و فقط موارد 10 و 6 را به ترتیب بازیابی می کند:

$ pg_restore -L db.list db.dump

با استفاده از خدمات onworks.net از pg_restore آنلاین استفاده کنید



جدیدترین برنامه های آنلاین لینوکس و ویندوز