প্রতিদিন একটি 22 গিগাবাইট মাইএসকিউএল ডাটাবেস ব্যাক আপ করা


28

এই মুহুর্তে আমি মাইএসকিএলডাম্প ব্যবহার করে ব্যাকআপটি করতে সক্ষম হয়েছি। তবে আমাকে ওয়েব সার্ভারটি নামাতে হবে এবং ব্যাকআপটি নিতে প্রায় 5 মিনিট সময় লাগে। যদি আমি ওয়েব সার্ভারটি না নামি তবে এটি চিরকালের জন্য নেয় এবং কখনই শেষ হয় না + ব্যাকআপের সময় ওয়েবসাইট অ্যাক্সেসযোগ্য হয়।

আমার 22 গিগাবাইট এবং বর্ধমান ডাটাবেসের ব্যাকআপ নেওয়ার কি আরও দ্রুত / আরও ভাল উপায় আছে?

সমস্ত টেবিলগুলি মাইআইএসএএম।


এই লিঙ্কটি দেখুন এটি একটি অনুরূপ প্রশ্নের সার্ভারফল্ট
চার্লস ফাগা

উত্তর:


28

হ্যাঁ।

দ্বিতীয় মেশিনে প্রতিলিপি সেটআপ করুন। আপনার যখন ব্যাকআপ করার দরকার হয় তখন আপনি গৌণ মেশিনটি লক করতে পারেন, মাইএসকিহ্লটকপি বা মাইএসকিলডাম্প সম্পাদন করতে পারেন এবং তারপরে এটি আনলক করতে পারেন। এটি আপনার মাস্টারের সাথে ফিরে আসবে এবং আপনাকে কখনই মাস্টারটিকে অফলাইনে নিতে হবে না।

এমনকি আপনি একই মেশিনে এটি করতে পারেন, যদি আপনি I / O লেখার দ্বিগুণ করতে আপত্তি না করেন তবে আদর্শভাবে আপনার উচিত এটি রিয়েল-টাইমে দ্বিতীয় শারীরিক সার্ভারে ব্যাক আপ করা উচিত এবং আপনার স্ন্যাপশটের ব্যাকআপগুলি যতবার আপনার প্রয়োজন ততবার নেওয়া উচিত আপনার প্রোডাকশন সার্ভারকে ঝামেলা ছাড়াই।

একটি তাত্ত্বিকভাবে জানা রাষ্ট্র এবং বেনলগগুলি ব্যবহার করে একটি ডাটাবেস পুনরুদ্ধার করা সম্ভব। আমি এটি কখনই করি নি, তাই দয়া করে প্রথমে তদন্ত করুন, তবে আপনি আপনার ডাটাবেসের একটি পরিচিত অবস্থার ব্যাকআপ নিতে পারেন, তারপরে সমস্ত নতুন বিনলগগুলি কেবলমাত্র ব্যাকআপ নিতে পারেন এবং যদি আপনার পুনরুদ্ধার করার প্রয়োজন হয় তবে সেগুলি পুনরায় খেলুন। যেহেতু বিনলোগগুলি রৈখিকভাবে লেখা হয়, তাই একটি দূরবর্তী কম্পিউটারে নতুন বিনলগগুলি সংযুক্ত করা খুব দ্রুত হবে।

সম্পাদনা: প্রকৃতপক্ষে, দেখে মনে হচ্ছে ব্যাকআপের জন্য বিনলোগগুলি ডকুমেন্টেড।

এই প্রশ্নটি অত্যন্ত সম্পর্কিত


হ্যাঁ, এটি দুর্দান্ত কাজ করে এবং আমার উত্তর হতে চলেছে। একমাত্র প্রধান ক্ষতি হ'ল আপনার অবশ্যই এটি নিশ্চিত করা দরকার যে প্রতিলিপিটি প্রতিদিনের ভিত্তিতে সঠিকভাবে কাজ করছে। আমরা ব্যবসায়ের সময় আমাদের দাস ডাটাবেসের স্ন্যাপশট এবং মাস্টারের কাছ থেকে একটি নাইট ব্যাকআপ নিই।

5

ওএসকে লিনাক্স বলে ধরে নেওয়ার জন্য আমাকে ক্ষমা করুন। আপনি যদি এলভিএম ব্যবহার না করেন তবে আপনার হওয়া উচিত। আপনি যদি হন তবে স্ন্যাপশটের মাধ্যমে ব্যাকআপগুলি তৈরি করার একটি খুব সহজ উপায়।

# Define these vars to meet your needs. These meet mine.
lvol="/dev/VolGroup03/lvol0"
snap_name="nightly_snapshot"
snap_vol="$(dirname $lvol)/$snap_name"
snap_path="/mnt/$snap_name"
snap_size="10g" # Not the size of your data, anticipated data changes during the backup
backup_path="/backups/$snap_name"

/usr/bin/time -f 'Databases were locked for %E' -- \
mysql <<- MYSQL
# based on http://pointyhair.com/tiki-view_blog_post.php?blogId=1&postId=5
FLUSH TABLES WITH READ LOCK;
\! lvcreate --size $snap_size --snapshot --name $snap_name $lvol
UNLOCK TABLES;
MYSQL
mount $snap_vol $snap_path
rsync -av --delete $snap_path/mysql $backup_path/
umount $snap_path
lvremove -f $snap_vol

এটি আপনাকে গোলাম সার্ভারটি যুক্ত না করেই রাতের ব্যাকআপ তৈরি করতে দেয়। আমি উচ্চ উপলভ্যতার জন্য একটি ক্রীতদাস সার্ভার থাকার পক্ষে, তবে আমি আপনাকে এই ধারণাটি চাই না যে আপনি এই দাসটিকে তৈরি না করা পর্যন্ত আপনি আটকে আছেন।


2

লক সহ ফ্ল্যাশ টেবিলগুলি কোনও প্রডাকশন সিস্টেমে আপনি নিয়মিত (বা এমনকি অর্ধ-নিয়মিত) ভিত্তিতে করতে চান এমন কিছু নয়। এটি কেবলমাত্র একটি শেষ অবলম্বন হওয়া উচিত।

কমপক্ষে দুটি প্রতিলিপি ক্রীতদাস সেট আপ করুন (অবশ্যই এটি পড়ার তালিকার সাথে একটি ফ্ল্যাশ টেবিলগুলির প্রয়োজন হবে)। একবার সেগুলি সেট আপ হয়ে গেলে, অন্যটি অতিরিক্ত মাস্টার হিসাবে সিঙ্কে থাকা অবস্থায় আপনি একটি ব্যাকআপ নিতে পারেন।

এছাড়াও, যদি আপনার কোনও দাস ব্যর্থ হয় তবে আপনি দ্বিতীয়টি (বা তৃতীয়) ক্রীতদাসটিকে পুনর্নির্মাণ করতে সেখান থেকে একটি স্ন্যাপশট ব্যবহার করতে পারেন। যদি আপনার সমস্ত ক্রীতদাস ব্যর্থ হয় তবে আপনি লক সহ ফ্ল্যাশ টেবিলগুলিতে ফিরে আসবেন।

নিয়মিত ডেটা সিঙ্কে রয়েছে এমন একটি প্রক্রিয়া মনে রাখবেন - এটি করার জন্য এমকে-টেবিল-চেকসামের মতো কিছু ব্যবহার করুন (এটি সেট আপ করার জন্য অনর্থক, বিশদটির জন্য মাটকিট ডকুমেন্টেশন দেখুন)।

22 গিগাবাইট তুলনামূলকভাবে ছোট হওয়ায় আপনার এটি করতে কোনও সমস্যা হবে না। বড় ডেটাবেস দিয়ে এটি করা আরও সমস্যাযুক্ত হতে পারে।


1

এখানে সমাধানটি দ্বিগুণ, উপরে বর্ণিত হিসাবে:

  1. আপনার সার্ভারের একটি দাসের প্রতিলিপি সেট আপ করুন যা আপনি অফলাইনে নিতে পারেন। এটি করার সর্বোত্তম উপায় হ'ল মাইকিকিল্ডাম্প এবং - মাস্টার-ডেটা প্যারামিটার ব্যবহার করে ডাটাবেসের ডাম্প নেওয়া।
  2. দাসের উপর রাতের ব্যাকআপ সেট আপ করুন। আপনি হয় - মাস্টার-ডেটা - ফ্লাশ-লগ এবং --সেনসেল-লেনদেনের পতাকা ব্যবহার করে মাইএসকিএলডাম্প ব্যবহার করতে পারেন, বা আপনি মাইএসকিএল সার্ভারটি বন্ধ করতে পারেন, ডিস্কে ফাইলগুলি অনুলিপি করতে পারেন এবং এটি পুনরায় চালু করতে পারেন (প্রতিলিপিটি যেখানে নির্বাচন করবে এটি ছেড়ে দেওয়া)।
  3. দাসের উপর প্রতিবার (যেমন 5, 10, 20 মিনিট) স্ক্রিপ্ট চালান এবং পরীক্ষা করে দেখুন যে মাইএসকিএল এখনও প্রতিলিপি করা হচ্ছে। এটি করার জন্য আমি একটি সাধারণ অজগর স্ক্রিপ্ট লিখেছিলাম , যা আপনাকে ব্যবহারে স্বাগত।

মনে রাখবেন যে আপনি যদি আপনার টেবিলগুলির জন্য InnoDB ব্যবহার করে থাকেন তবে কোনও টেবিল লক না করা এবং আপনি এখনও মাস্টারে ডাটাবেসের একটি ধারাবাহিক ডাম্প পেতে এড়াতে আপনি --সিংল-লেনদেনের পতাকা ব্যবহার করতে পারেন এবং এভাবে ব্যাকআপগুলি না করেই করতে পারেন সার্ভারটি নামাচ্ছে। উপরের সমাধানটি তবে আরও ভাল।

এছাড়াও, আপনি যদি লিনাক্সে এলভিএম ব্যবহার করেন, আপনি পার্টিশনের একটি এলভিএম স্ন্যাপশট নিতে পারেন, তারপরে ফিরে আসুন। LVM স্ন্যাপশটগুলি পারমাণবিক, সুতরাং যদি আপনি 'রিড লকযুক্ত ফ্লাশ টেবিলগুলি' করেন এবং তারপরে আপনার স্ন্যাপশটটি এবং আনলকটি নেন, আপনি একটি সামঞ্জস্যপূর্ণ স্ন্যাপশট পাবেন।

যদি আপনি I / O এর বিতর্কটি ডাম্পটিকে অনেক বেশি সময় নেয় সম্পর্কে উদ্বিগ্ন হন তবে আপনার ডিস্ক ছিটানো এড়াতে আপনি একটি তৃতীয় মেশিন যুক্ত করতে পারেন এবং নেটওয়ার্কটিতে মাইএসকিএলডাম্প চালাতে পারেন।


0

আপনার পরিবেশের উপর নির্ভর করে স্ন্যাপশটগুলি সাধারণত যাওয়ার একটি দুর্দান্ত উপায়। বিশেষত যদি আপনাকে কোনও কারণে মাস্টারটিকে ব্যাকআপ করতে হয়। আমরা মাস্টার এবং স্লেভ জুড়ি চালাই, এবং উভয় স্ন্যাপশট ব্যাকআপ ব্যবহার করি।

  1. FLUSH TABLES WITH READ LOCK;
  2. ডাটাবেস এবং লগ ফাইল সিস্টেমে একটি স্ন্যাপশট টানুন।
  3. UNLOCK TABLES;
  4. আপনার অবসর সময়ে স্ন্যাপশট থেকে আপনার ডেটা ফাইলগুলি অনুলিপি করুন।

InnoDB টেবিলগুলির সাহায্যে আপনি SET AUTOCOMMIT=0;পঠিত লকটি কার্যকর করার আগে চালনা করতে চান ।



-1

আপনি ধীরে ধীরে ব্যাকআপ করতে পারেন। প্রতি ঘন্টা 1/24 রেকর্ড ব্যাকআপ। এই পদ্ধতির সাথে একমাত্র সমস্যাটি যদি এটি দিনের প্রথম কয়েক ঘন্টার মধ্যে ক্র্যাশ হয়ে যায়, আপনি সেই সময় থেকে ক্রাশের সময় পর্যন্ত কোনও কিছু হারাবেন। যে কোনও উপায়ে, এটি রেকর্ডের 24 ঘণ্টারও কম (আমি জানি না এটি আপনার পক্ষে কতটা গুরুত্বপূর্ণ)।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.