প্রশ্ন Ec2- সামঞ্জস্যপূর্ণ-স্ন্যাপশট নিয়ে নেওয়া স্ন্যাপশটগুলি থেকে একটি অ্যামাজন EBS RAID0 অ্যারে পুনরুদ্ধার করা


আমি অ্যামাজন EC2 এ একটি নতুন MySQL সার্ভার কনফিগার করেছি এবং EBS RAID0 অ্যারেতে আমার ডেটা সংরক্ষণ করার সিদ্ধান্ত নিয়েছি। এতদূর ভাল, এবং আমি ec2- সামঞ্জস্যপূর্ণ-স্ন্যাপশট সঙ্গে যারা ডিভাইস স্ন্যাপশট গ্রহণ, পরীক্ষা করেছি।

এখন, আপনি কিভাবে এই স্ন্যাপশট থেকে, একটি নতুন উদাহরণে অ্যারে পুনর্নির্মাণ করবেন?

একাধিক ভলিউমগুলির স্ন্যাপশট তৈরি করার জন্য ec2- সামঞ্জস্যপূর্ণ-স্ন্যাপশট ব্যবহার করার সময়, RAID- র প্রতিটি ডিভাইসের জন্য কোন পরিমাণে ব্যবহৃত হত তা আপনার কাছে কোন উপায় নেই। আমি হয়তো সম্পূর্ণ ভুল হতে পারব, কিন্তু যেহেতু আপনি ভলিউম জুড়ে তথ্য পারাপার করছেন, তাই আপনাকে এটির কারণ হতে হবে যে প্রতিটি নতুন ভলিউমকে RAID এ একই অবস্থানে রেখে দিতে হবে যার ফলে স্ন্যাপশট তৈরি করা হয়েছিল।

একটি উদাহরণ:

  • একটি RAID0 3x200gb ভলিউম কনফিগারেশন.
  • ভলিউ -1 হল RAID / dev / sdh ডিভাইস 0
  • ভলিউ -2 র মধ্যে / dev / sdh1 ডিভাইস 1
  • ভলিউম 3 RAID / dev / sdh2 ডিভাইস ২

আপনি একটি ec2 স্ন্যাপশট তৈরি করেছেন: ec2-consistent-snapshot <options> vol-1 vol-2 vol-3

আপনার এখন 3 স্ন্যাপশট রয়েছে, এবং তারা কোন ডিভাইসটি তারা অনুসরণ করছে তা ট্রেস করার একমাত্র উপায় হল উৎস ভলিউম আইডিটি দেখতে, তারপরে উত্স ভলিউম আইডি কোন ডিভাইসে মাউন্ট করা হয়েছে তা দেখুন এবং তারপরে RAID এর বিশদ পরীক্ষা করুন। উৎস ভলিউম এর উদাহরণ কনফিগারেশন।

এটি সম্ভবত অবিশ্বাস্যভাবে ম্যানুয়াল ... এবং দ্রুত নয় (যা স্পষ্টতই নতুন মাইস্ক্লল ইনস্ট্যান্স আনতে কঠিন হয়ে যায় যদি অন্যটি ব্যর্থ হয়। উল্লেখ না করাতে, আপনাকে সেই সময় RAID অবস্থানগুলিতে ডিভাইস অবস্থানগুলি রেকর্ড করতে হবে স্ন্যাপশট, কারণ উৎস ভলিউম ইনস্ট্যান্স ক্র্যাশ করলে, আপনার RAID কনফিগারেশন পেতে কোন উপায় নেই)।

সুতরাং, উপসংহারে:

  • আমি ec2- সামঞ্জস্যপূর্ণ-স্ন্যাপশট এবং একটি সফ্টওয়্যার RAID0 অ্যারে কাজ কিভাবে কিছু হারিয়েছি?
  • যদি না হয়, RAID অ্যারে কোন ডিভাইস / অবস্থানের স্ন্যাপশট সম্পর্কিত নয় তা জানার সমস্যাটির আশেপাশে কোনও পরিচিত সমাধান / সর্বোত্তম অনুশীলন আছে?

আমি এই পরিষ্কার ছিল আশা করি, এবং আপনার সাহায্যের জন্য ধন্যবাদ!


8
2018-02-20 19:45


উত্স




উত্তর:


যেহেতু আপনি ভলিউম জুড়ে ডেটা স্ট্রাইপ করছেন, তাই এটি হ'ল RAID- র একই অবস্থানের মধ্যে প্রতিটি নতুন ভলিউমটিকে স্ন্যাপশট তৈরি করা হয়েছে এমন ভলিউম হিসাবে যুক্ত করতে হবে।

আমি আপনার প্রাঙ্গন পরীক্ষা, এবং এটি মনে হতে পারে হিসাবে যৌক্তিক, পর্যবেক্ষণ অন্যথায় হয়।

আমাকে এই বিস্তারিত জানানো যাক:
আপনি কি ঠিক একই প্রয়োজন আছে। যাইহোক, আমি ব্যবহার করছি RAID0 শুধুমাত্র 2 ভলিউম আছে।

আমি উবুন্টু 10 ব্যবহার করছি এবং XFS এর সাথে ফরম্যাট করা RAID0 ডিভাইস গঠনকারী 2 ইবিএস ডিভাইস রয়েছে।

Raid0 ডিভাইস নিম্নলিখিত কমান্ডটি ব্যবহার করে তৈরি করা হয়েছিল:
sudo mdadm --create /dev/md0 --level 0 --metadata=1.1 --raid-devices 2 /dev/sdg /dev/sdh 

আমি MYSQL এবং অন্যান্য সফ্টওয়্যারের গুচ্ছ ইনস্টল করেছি যা তাদের ডেটা ফাইল সংরক্ষণ করতে / dev / md0 ব্যবহার করার জন্য কনফিগার করা হয়েছে।

একই ভলিউম ব্যবহার করে: একবার সম্পন্ন হলে, আমি সবকিছু অঙ্কিত করি, রেইড বন্ধ করে আবার এটিকে আবার জুড়ুন: sudo mdadm --assemble /dev/md0 /dev/sdh /dev/sdg বিষয় যে নির্বিশেষে হয় /dev/sdg /dev/sghRAID নিজেকে সঠিকভাবে পুনর্গঠন করে।

স্ন্যাপশট ব্যবহার করে: এই পোস্ট, আমি ব্যবহার ec2-consistent-snapshotএকসাথে 2 ইবিএস ডিস্ক স্ন্যাপশট তৈরি করতে। আমি তারপর এই ডিস্ক থেকে ভলিউম তৈরি করি, এটি একটি নতুন ইনস্ট্যান্স (যা ইতিমধ্যে সফ্টওয়্যারের জন্য কনফিগার করা হয়েছে) সংযুক্ত করুন, RAID পুনরায় যুক্ত করুন (আমি EBS ভলিউমগুলির ক্রম বিনিময় করার চেষ্টা করেছি), এটি মাউন্ট করুন এবং আমি প্রস্তুত যাও.

অদ্ভুত শব্দ, কিন্তু এটি কাজ করে।


5
2018-02-24 08:52



সুতরাং, মূলত, যখন আপনি অ্যারেটি পুনঃনির্মাণ করেন, তখন এটি কোনও আদেশের ক্ষেত্রে গুরুত্বপূর্ণ নয় যে আপনি এটি তৈরি করেন। আমি ডিস্কগুলিতে লেখা সুপারব্লক তথ্যটির কারণে এটি অনুমান করি, তাই RAID কন্ট্রোলারটি কীভাবে এটি একত্রিত করতে জানে। এটি চমৎকার! আপনার উত্তরের জন্য ধন্যবাদ, এটা আমার যা দরকার তা বেশ সুন্দর! - Jim Rubenstein


আমি একটি অনুরূপ কনফিগারেশন চালানো (RAID0 4 ইবিএস ভলিউম), এবং এর ফলে তৈরি করা স্ন্যাপশটগুলি থেকে RAID অ্যারে পুনর্গঠনের একই উদ্বেগ ছিল EC2-সামঞ্জস্যপূর্ণ-স্ন্যাপশট

সৌভাগ্যবশত, একটি RAID অ্যারে প্রতিটি ডিভাইসে মেটাডেটা রয়েছে (একটি সুপারব্লকটিতে) যা অ্যারের অবস্থান, অ্যারের UUID এবং অ্যারের স্তর (যেমন RAID0) রেকর্ড করে। কোনও ডিভাইসে এই সুপারব্লবটি ক্যোয়ারী করার জন্য নিম্নোক্ত কমান্ড (লাইন মিলছে '^ এই' জিজ্ঞাসিত ডিভাইস বর্ণনা করে):

$ sudo mdadm --examine /dev/sdb1
/dev/sdb1:
          Magic : a92b4efc
        Version : 00.90.00
           UUID : 2ca96b4a:9a1f1fbd:2f3c176d:b2b9da7c
  Creation Time : Mon Mar 28 23:31:41 2011
     Raid Level : raid0
  Used Dev Size : 0
   Raid Devices : 4
  Total Devices : 4
Preferred Minor : 0

    Update Time : Mon Mar 28 23:31:41 2011
          State : active
 Active Devices : 4
Working Devices : 4
 Failed Devices : 0
  Spare Devices : 0
       Checksum : ed10058a - correct
         Events : 1

     Chunk Size : 256K

      Number   Major   Minor   RaidDevice State
this     0     202       17        0      active sync   /dev/sdb1

   0     0     202       17        0      active sync   /dev/sdb1
   1     1     202       18        1      active sync   /dev/sdb2
   2     2     202       19        2      active sync   /dev/sdb3
   3     3     202       20        3      active sync   /dev/sdb4

যদি আপনি এমন ডিভাইসে একই প্রশ্ন করেন যা একটি অ্যারের অংশ নয়, তবে আপনি এটি পাবেন:

$ sudo mdadm --examine /dev/sda1
mdadm: No md superblock detected on /dev/sda1.

যা প্রমাণ করে যে এই কমান্ডটি ডিভাইসে সংরক্ষিত তথ্যের উপর নির্ভর করে এবং কিছু কনফিগারেশন ফাইল নয়।

RAID ডিভাইস থেকে শুরু হওয়া RAID অ্যারের ডিভাইসগুলি পরীক্ষা করেও একই তথ্য উদ্ধার করা যাবে:

$ sudo mdadm --detail /dev/md0

আমি পাশাপাশি পরে ব্যবহার EC2-বর্ণনা-ভলিউম ec2- সামঞ্জস্যপূর্ণ-স্ন্যাপশট জন্য ভলিউমের তালিকা তৈরি করতে (-n এবং --debug স্ন্যাপশট তৈরি না করে এই কমান্ডটি পরীক্ষা করার অনুমতি দিন)। নিম্নোক্ত কমান্ডটি নির্দেশ করে যে ডিরেক্টরিটি / MySQL ভলিউমের জন্য মাউন্ট পয়েন্ট এবং AWS অঞ্চলটি হল উস-পশ্চিমে -1:

$ sudo -E ec2-consistent-snapshot --region us-west-1 --mysql --freeze-filesystem /mysql --mysql-master-status-file /mysql/master-info --description "$(date +'%Y/%m/%d %H:%M:%S') - ASR2 RAID0 (4 volumes) Snapshot" --debug -n $(ec2-describe-volumes --region us-west-1 | grep $(wget http://169.254.169.254/latest/meta-data/instance-id -O - -q) | egrep $(sudo mdadm --detail $(awk '{if($2=="/mysql") print $1}' /etc/fstab) | awk '/ \/dev\//{printf "%s ", $7}' | sed -e 's# /#|/#g') | awk '{printf "%s ", $2}')

3
2018-04-12 10:45





আমি জানি এটি আপনার প্রশ্নের উত্তর দেয় না, তবে আমি কিছুটা করছি কিন্তু আমাজন এর বেস ec2- তৈরি-স্ন্যাপশট সরঞ্জাম এবং ক্রন স্ক্রিপ্ট দিয়ে। এটি ec2- সামঞ্জস্যপূর্ণ-স্ন্যাপশট হিসাবে দ্রুত নয়, তবে আমার অতিরিক্ত অতিরিক্ত নিয়ন্ত্রণ দরকার: fsync, lock লিখেছেন, এবং সবচেয়ে গুরুত্বপূর্ণভাবে, স্ন্যাপশটগুলিকে যথাযথভাবে নাম দিন যাতে সঠিক সঠিকভাবে পুনর্গঠন করা যায়।


0
2018-02-20 19:55



আমি আসলে এক্সএফএস ব্যবহার করছি, তাই আমি স্ন্যাপশট করার সময় ফাইল সিস্টেমটি বন্ধ করে দিচ্ছি। MySQL এ FLUSH এবং LOCK এর সাথে সংযুক্ত (ec2- সামঞ্জস্যপূর্ণ-স্ন্যাপশট এই সবকিছু করে), আমার প্রতিটি সময় একটি সুসংগত স্ন্যাপশট থাকা উচিত। সমস্যাটি নামকরণের জন্য, যার জন্য আমি এখনই একটি স্থায়ী সমাধান তৈরি করেছি, এখনকার জন্য ec2-সামঞ্জস্যপূর্ণ-স্ন্যাপশট পার্ল স্ক্রিপ্টটি সংশোধন করে। - Jim Rubenstein