بک آپ گیری از دیتا بیس PostgreSQL

postgresql

#1

با سلام خدمت دوستان .

از دیتا بیس Postgre چطوری میشه با cron jobs به صورت هر 6 ساعت یکبار بک آپ تهیه کرد و جایی خارج از سرور نگه داری کرد ؟

ممنون از شما دوستان :wink:

نیاز به راهنمایی دارم :pray:


#2

بستگی به هدف بک آپ گیری داره. ولی یه راهی که پیشنهاد می کنم اینه که یه دیتا بیس جدا روی یه سری نود جدا به عنوان بک آپ داشته باشین که با هر write به صورت اتوماتیک دیتا رو روی اون هم بنویسین. البته اگر براتون سرعت نوشتن مهم هست می تونین این وسط از کافکا استفاده کنین. اینجوری اگر سیستم اصلی failed بشه در جا می تونین سوئیچ کنین روی اون یکی.

اما اگر هدفتون نگه داشتن نسخه های مختلف دیتا هست این روش فایده ای نداره


#3

هدفم اینه دیتابیس دارم که خیلی در حال افزایش اطلاعاته قصد دارم جوری مطمئن باشم که مشکلی برای دیتا بیس پیش امد خرابکاری نشه :roll_eyes:


#4

چه جور مشکلی ؟ مثلا دیتا اشتباه ذخیره کنی ؟‌ یا اینکه postgres مثلا زیر فشار بترکه ؟


#5

مثلا ddos انجام بشه یا به هر نحوی دسترسیم از دیتابیس قطع بشه .
با حداقل امکانات سرور آپ شده .Nginx Gunicorn Postgresql کمی نگرانم


#6

تو این حالت بد بتونم یه سرور دیگه رو راه اندازی کنم و دیتابیس رو برگردونم
میدونم که کاره درستی نیست ولی چون برای 15 روز هست یه روشی باشه خیلی ام اطولی نباشه ولی کار کنه میشه :sweat_smile:


#7

خوب برای همه مشکلات یه راه حل ثابت وجود نداره اما راهی که پیش پات گذاشتم می تونه خیلی کمکت کنه


#8

آقا سمیر اینی که فرمودین خیلی expert یه هفته ریسرچ باید کنم تا بتونم اجراش کنم :blush:
لطفا یه راه حل کمی آسون تر بهم پیشنهاد بدین


#9

اسون ترش اینه که pg_dump استفاده کنی و مثلا رو S3 با یه شل سکریپت آپش کنی ولی خوب اگر دیتا زیاد باشه همین dump کردن دیتا خودش بار اضافی رو سرور هست و آپ کردنشم یه دردسر جدید. از طرفی برای restore کردنش هم باید زمان گذاشت


#10

:sweat_smile::sweat_smile: pg_dump رو میتونم رو لوکال داشته باشم فایل های بک آپشو ؟ cron jobi درست کنم که اینکارو انجام بده ؟ داریم اینجور چیزی ؟


#11

بله می تونی وصل شی به دیتا بیس و دامپ بگیری


#12

سلام

0 */6 * * *  pg_dump -U database_user  database_name > /your_directory/your_db_name.pgsql

البته پسوند بالا اختیاری هست هر چیز دیگه ای میتونه باشه


#13

یک کدی هم بنویسی که هر چند دقیقه بکاپتو در گوگل درایوی جا جایی ذخیره کنه هم بد نیست.


#14

برای نوشتن اینجور چیزی ایده ای ندارم متاسفانه ولی خیلی عالیه فرمایشتون :ok_hand:


#15

ایده خاصی نمی خواد چه زبانی رو مسلط هستید هر زبانی باشه حتما براش کتابخونه ای هست که بتونید از دیتابیس خودتون بکاپ بگیرید برای php که خیلی زیاد بود قبلنا بعد فقط می مونه ارسالش به گوگل درایو که کار با api گوگل هست براش اسکریپت هم زیاده . و بکاپتون به راه می شه


#16

بهتره از pg_dump استفاده کنی

export PGHOST=<host address>
export PGUSER=<db user>
export PGPASSWORD=<password>

# dump
pg_dump db_name | gzip > dump_file.gz

# restore
gunzip -c dump_file.gz | psql -W db_name

#17

این تقریبا نیاز منو برطرف میکنه و فقط چطوری بیرون از سرور انتقالش بدم :smiley: ?


#18

یعنی چی؟


#19

نیاز نیست . اگر رو سیستم خودت می خوای نگه داری. همین سکریپتی که توماج داد رو ران کن البته باید بتونی به صورت ریموت به دیتابیست وصل شی. امن نیست ولی کار شما رو راه مینداره


#20

امیدوارم هوست https باشه حداقل
اما بهتره بکاپ رمزنگاری هم بشه مگر اینکه واقعا لازم نباشه.
https://www.imagescape.com/blog/2015/12/18/encrypted-postgres-backups/