• پایان فعالیت بخشهای انجمن: امکان ایجاد موضوع یا نوشته جدید برای عموم کاربران غیرفعال شده است

backup / restore دیتابیس بوسیله shell ( آموزش )

salehnia

Registered User
تاریخ عضویت
11 ژوئن 2007
نوشته‌ها
1,036
لایک‌ها
16
محل سکونت
شیراز
سلام.
برای صاحبان سایت های دینامیک گرفتن بک آپ از دیتایس خیلی مهمه و اگر این بک آپ حجمش بالا باشه ( مثلا بالای 100 مگابایت یا حتی حدود 1 گیگابایت ) بک آپ گیری دشوار خواهد شد و با سرعتی که ما در ایران داریم تقریبا غیر ممکن هست .
حالا من میخوام آموزش گرفتن بک آپ و ریستورکردن آن رو از طریق خود سرور بیان کنم امیدوارم مفید باشه.
برای اینکار شما باید به سرور لینوکسی با دسترسی شل داشته باشید . ( حتما باید دسترسی شما root باشه)

اول : برنامه PuTTY رو دانلود کنیداین نرم افزار به نظر من حرفه ای ترین در shell هست > http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html

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

uname = نام کاربری دیتابیس (username)
dbname= نام دیتابیس
db_backup.sql = نام فایلی که اطلاعات دیتابیس در اون هست .

1_ طریقه بک آپ گیری (backup) :

کد:
mysqldump -u uname -p dbname > db_backup.sql


کاری که خط فرمان بالا در شل لینوکس انجام میده از دیتابیس dbname بک آپ میگیره و بعد اون رو با نام db_backup.sql ذخیر میکنه .
حالا شما با داشتن این بک آپ و آرشیو کردن اون میتونید هر زمان که بخواهین اون رو ریستو یا دانلود کند...

* اگر قصد دارید فایل بک آپ رو بصورت فشورد ( مثل zip) داشته باشین دستور زیر رو استفاده کنید .


کد:
mysqldump -u uname -p dbname | gzip -9 > db_backup.sql.gz

دراین حالت فایل تولید شده به صورت فشرده در میاد .

برای اینکه اون رو هم از حالب فشرده خارج کنید یعنی sql.gz به .sql دستور زیر :

کد:
gunzip db_backup.sql.gz


2_ طریقه ریستور کردن (restore):

ابتدا یک دیتابیس جدید بسازید و یک یوزم هم برای اون درست کنید .
و بعد :

کد:
mysql -u uname –p  dbname < db_backup.sql

و اما اگر نوع فایل بک آپ به صورت فشرده بود (.sql.gz ) از دستور زیر استفاده کنید :

کد:
gunzip < [db_backup.sql.gz] | mysql -u unmae -p dbname

زمان بک آپ گیری و ریستو کردن بستگی به حجم دیتابیس داره نیز قدرت سرور مثلا من سروی که داشتم سی پیو 8 هسته ای بود و حجم دیتابیس حدود 1.5 گیگابایت برای ریستور کردن حدود 5 دقیقه زمان بورد.

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

کد:
wget http://domain.com/database.sql

با سپاس .
 

mohsenshahbazi

همکار بازنشسته
کاربر فعال
تاریخ عضویت
21 ژوئن 2004
نوشته‌ها
4,025
لایک‌ها
3,825
محل سکونت
اصفهان
جالب بود .
البته بهتره در مورد پارامتر های mysqldump بیشتر بنویسید مثل استفاده از encoding خاص برای محتوای غیر انگلیسی و همچنین پارامترهایی مثل --force در restore کردن که باعث میشه از خطاهای warning بیجا رد بشه .
 

m-sh

Registered User
تاریخ عضویت
30 ژوئن 2003
نوشته‌ها
1,047
لایک‌ها
9
جالب بود .
البته بهتره در مورد پارامتر های mysqldump بیشتر بنویسید مثل استفاده از encoding خاص برای محتوای غیر انگلیسی و همچنین پارامترهایی مثل --force در restore کردن که باعث میشه از خطاهای warning بیجا رد بشه .
خوب خود شما تکمیلش کنید :)
 

dokhtodoz

کاربر تازه وارد
تاریخ عضویت
2 آگوست 2008
نوشته‌ها
81
لایک‌ها
0
کدوم فایل رو باید دانلود کنیم؟ تو اون صفحه 10 بیست تا فایل هست کدومش ؟
 

mohsenshahbazi

همکار بازنشسته
کاربر فعال
تاریخ عضویت
21 ژوئن 2004
نوشته‌ها
4,025
لایک‌ها
3,825
محل سکونت
اصفهان
پارامترهای دیگر برای mysqldump

کد:
  -?    /   --help
عملکرد : لیست کامل از گزینه های mysqldump را نمایش میدهد .

کد:
 --add-locks
عملکرد : فرمان Lock Tables را قبل از INSERT و UNLOCK Tables را بعد از آن اضافه میکند که به افزایش سرعت ورود اطلاعات کمک میکند .

کد:
  --add-drop-table
عملکرد : قبل از CREATE Table عبارت DROP Table را قرار میدهد تا اطمینان حاصل کند که عملیات تکراری ( Duplicate ) در مقصد رخ نمیدهد .

کد:
-C   /  --compress
عملکرد : داده ها را فشرده میکند . که البته هر دوپایگاه ( مبدا / مقصد ) باید از فشرده سازی پشتیبانی کنند .

کد:
-d   / --no-data
عملکرد : داده ها را حذف و فقط از دستورات CREATE Table پشتیبان تهیه میکند . در واقع فقط ساختار پایگاه برروی خروجی ارسال میشوند .

کد:
 -e    / --extended-insert
عملکرد : برای پشتیبان های پیچیده از insert استفاده میکند و ورود اطلاعات را سرعت میدهد .

کد:
  -F   / --flush-logs
عملکرد : قبل از عملیات پشتیبان گیری وقایع ثبت شده در mysql را flush میکند که برای همزمان سازی پشتیبان ها کامل مفید است .

کد:
  -f  / --force
عملکرد : از تمام خطا ها در عملیات صرف نظر میکند .

کد:
-h=hostname   / --host=hostname
عملکرد : پشتیبان گیری از یک میزبان غیر از localhost

کد:
  -l   / --lock-tables
عملکرد : قبل از شروع عملیات پشتیبان گیری تمامی جدول ها را قفل میکند . با این گزینه شما یک عملیات منسجم و مطمئن را انجام میدهید .

کد:
  -p   /  password
عملکرد : کلمه عبور جهت اتصال به پایگاه . این ورودی بدون -- استفاده میشود .

کد:
-q   /  --quick
گزینه : به جای ذخیره اطلاعات پشتیبان در حافظه آنها را مستقیما به stdout میفرستد . که این امر مانع پرشدن حافظه سیستم میشود .

کد:
  -t    / --no-create-info
عملکرد : عبارت create table را حذف میکند و فقط از داده ها پشتیبان تهیه میکند .

کد:
-u username    / --user=username
عملکرد : نام کاربری جهت ورود را میگیرد . نام کاربری پیش فرض unix است .

کد:
-w='condition'
عملکرد : این گزینه فقط از سطرهایی که با شرط ذکر شده در condition مطابقت دارند پشتیبان تهیه میکنند .

کد:
  --opt
عملکرد : معادل استفاده همزمان از گزینه های --add-drop-table , --extended-insert , --quick , --add-locks , --disable-keys است و سرعت ورود اطلاعات را افزایش میدهد .
عملکرد : یک نوع encoding خاص ( مثل utf-8 ) را برروی پشتیبان اعمال میکند .
 
بالا