কীভাবে দক্ষতার সাথে একটি বিশাল মাইএসকিউএল ইন্নাডব ডাটাবেস ডাম্প করবেন?


8

আমি একটি উবুন্টু 10.04 প্রোডাকশন মাইএসকিউএল ডাটাবেস সার্ভার পেয়েছি যেখানে ডাটাবেসের মোট আকার 260 গিগাবাইট যেখানে রুট পার্টিশনের আকারটি 300 গিগাবাইট যেখানে ডিবি সঞ্চিত থাকে, মূলত এর মানে প্রায় 96% / পূর্ণ এবং ডাম্প / ব্যাকআপ সংরক্ষণের জন্য কোনও স্থান অবশিষ্ট নেই ইত্যাদি সার্ভারের সাথে এখন পর্যন্ত অন্য কোনও ডিস্ক সংযুক্ত নেই।

আমার কাজটি হ'ল এই ডাটাবেসটি অন্য ডেটাসেন্টারে বসে অন্য সার্ভারে স্থানান্তরিত করা। ন্যূনতম ডাউনটাইম সহ দক্ষতার সাথে কীভাবে করা যায় তা প্রশ্ন?

আমি এই লাইনে চিন্তা করছি:

  • সার্ভারে একটি অতিরিক্ত ড্রাইভ সংযুক্ত করার এবং সেই ড্রাইভে একটি ডাম্প নেওয়ার অনুরোধ। [সম্পাদনা: এটি এখন সম্ভব নয়।]
  • নতুন সার্ভারে ডাম্প স্থানান্তর করুন, এটি পুনরুদ্ধার করুন এবং ডেটা সিঙ্কে রাখার জন্য বিদ্যমান সার্ভারের নতুন গোলাম তৈরি করুন
  • যখন মাইগ্রেশন প্রয়োজন হয়, প্রতিলিপি বিরতি দিন, পড়ার / লেখার অনুরোধগুলি স্বীকার করার জন্য স্লেভ কনফিগারেশন আপডেট করুন এবং পুরাতন সার্ভারটি কেবল পঠনযোগ্য করুন যাতে এটি কোনও রাইটিং অনুরোধকে বিনোদন দেয় না এবং অ্যাপ্লিকেশন বিকাশকারীদেরকে ডিবি-র জন্য নতুন আইপি ঠিকানা সহ কনফিগারেশন আপডেট করতে বলে না।

এই বা এই কাজের জন্য কোনও বিকল্পতর ভাল পদ্ধতির উন্নতি করার জন্য আপনার পরামর্শগুলি কী?

উত্তর:


9

আপনি মাইএসকিউএল এর সঠিক একই সংস্করণের সাথে অন্য ডিবি সার্ভার থেকে মাইগ্রেট বিবেচনা করা হয়, আপনি চাইতে পারেন নতুন সার্ভারে পুরাতন সার্ভার থেকে।rsyncdatadir

এটি InnoDB ফাইল বিন্যাস বা মাইআইএসএএম টেবিলের উপস্থিতি নির্বিশেষে কাজ করবে।

  1. সার্ভারএর মাইএসকিএলের একই সংস্করণ ইনস্টল করুন
  2. সার্ভারএ-তে, RESET MASTER;আরএসসিএন প্রক্রিয়া করার আগে সমস্ত বাইনারি লগগুলি মুছতে চালান । বাইনারি লগিং সক্ষম না করা থাকলে আপনি এই পদক্ষেপটি এড়িয়ে যেতে পারেন।
  3. সার্ভারএ-তে, মাইএসকিএল SET GLOBAL innodb_max_dirty_pages_pct = 0;থেকে প্রায় 10 মিনিট চালান (এটি InnoDB বাফার পুল থেকে নোংরা পৃষ্ঠাগুলি মুছে দেয় It এটি মাইএসকিএল শাটডাউন দ্রুত সম্পাদন করতেও সহায়তা করে) আপনার ডাটাবেস যদি সমস্ত মাইআইএসএএম হয় তবে আপনি এই পদক্ষেপটি এড়িয়ে যেতে পারেন।
  4. সার্ভারের বিএসইএনসি / ভেরি / লিবিব / মাইএসকিএল থেকে সার্ভারের / ভার / লিব / মাইএসকিএল
  5. একটি আরএসআইএনসি 1 মিনিটেরও কম সময় না নিয়ে অবধি 3 ধাপ পুনরাবৃত্তি করুন
  6. service mysql stop সার্ভারএ
  7. আরও একটি আরএসআইএনসি সম্পাদন করুন
  8. scp সার্ভারএ: /etc/my.cnf থেকে সার্ভারবি: / ইত্যাদি /।
  9. service mysql start সার্ভারবি
  10. service mysql start সার্ভারএতে (alচ্ছিক)

মূলত, এই জাতীয় স্ক্রিপ্টটি এটি কী পছন্দ করবে তা এখানে

mysql -u... -p... -e"RESET MASTER;"
mysql -u... -p... -e"SET GLOBAL innodb_max_dirty_pages_pct = 0;"
RSYNCSTOTRY=10
cd /var/lib/mysql
X=0
while [ ${X} -lt ${RSYNCSTOTRY} ]
do
    X=`echo ${X}+1|bc`
    rsync -r * targetserver:/var/lib/mysql/.
    sleep 60
done
service mysql stop
rsync -r * targetserver:/var/lib/mysql/.
service mysql start

ডিবিএ স্ট্যাকএক্সচেঞ্জের সহকর্মী বলেছিলেন যে মাইএসকিপ্লারফরমেশনব্লগ.কমের কোনও কিছুর FLUSH TABLES WITH READ LOCK;ভিত্তিতে আমার দূরে থাকা উচিত

আমি পড়েছি এবং শিখেছি যে কোনওটির মাঝখানে InnoDB টেবিলের বিপরীতে SELECTs FLUSH TABLES WITH READ LOCK;এখনও কোনওভাবে লেখাকে ঘটতে দেয়। আরলুকিনের মন্তব্যে উল্লেখ করা হয়েছে , এলভিএম ইনোডিবিতেFLUSH TABLES WITH READ LOCK ঠিক জরিমানা (তাঁর মন্তব্যের জন্য +1) নিয়ে কাজ করবে।

সমস্ত অ-এলভিএম ব্যবহারকারীদের জন্য, আপনি ব্যবহারের জন্য অল-মাইআইএসএএম ডাটাবেসের সাথে ঠিক আছেন FLUSH TABLES WITH READ LOCK;। InnoDB এর জন্য, --single-tranactionদয়া করে মাইএসকিল্ডাম্পসের ব্যবহারে আটকে দিন ।


2
যখন আমরা ম্যানুয়ালি একটি মাস্টার-স্লেভ সেটআপ সিঙ্ক করতে হবে তখন আমরা এটি করি। সত্যিই ভাল কাজ করে। তবে আমাদের সর্বশেষ সার্ভারগুলিতে আমরা LVM স্ন্যাপশট ব্যবহার করছি, সুতরাং আমাদের সার্ভারটি থামানোর দরকার নেই। LVM- স্ন্যাপশট করার ঠিক আগে আমরা "FLUSH TABLES WIDH LADK" চালিত করি, সুতরাং ফাইলগুলি অনুলিপি করা ঠিক আছে। আপনি যদি ব্যাকআপের উদ্দেশ্যে সমস্ত ফাইল অনুলিপি করতে চান তবে lvm-snapshotটি সত্যিই খুব ভাল good সুতরাং আপনার নতুন সার্ভারটি এলভিএম দিয়ে সেটআপ করুন এবং স্ন্যাপশট করতে সক্ষম হতে অতিরিক্ত কিছু জায়গা যুক্ত করুন।
আরলুকিন

বিস্তারিত উত্তরের জন্য ধন্যবাদ। মাইএসকিউএল সংস্করণগুলি আলাদা হলে কী হবে? পুরানোটি উবুন্টু 10.04 সহ 5.1 এবং নতুনের মধ্যে আমি ডিফল্ট 5.5 সহ 12.04 ব্যবহার করতে চাই। এই ক্ষেত্রে আপনি কোন পদ্ধতির পরামর্শ দিচ্ছেন? অতিরিক্ত ড্রাইভ সংযুক্ত করা এখন প্রশ্নের বাইরে নয় সুতরাং ডাম্প / আরএসএনসি বা অন্য কোনও উপায়ে ডেটা দূরবর্তীভাবে প্রেরণ করা দরকার।
জগবীর

1

একটি ডাটাবেসের একটি ডাম্প এবং পুনরুদ্ধার করতে আকারটি কয়েক ঘন্টা সময় নিতে পারে। আমি, যতক্ষণ না সংস্করণ সংখ্যা বৃদ্ধি হিসাবে মাইএসকিএল সংস্করণগুলির উপর নির্ভর করে এবং প্রধান সংশোধন সংখ্যায় কোনও লাফ নেই। আপনারা / var / lib / mysql তে কাঁচা ডাটাবেস ফাইলগুলি নিতে এবং সেগুলি নতুন সার্ভারে স্থাপন করতে পারবেন, অনুমতি নির্ধারণ করুন এবং --স্কিপ-গ্রান্ট-টেবিলগুলি স্যুইচ দিয়ে সার্ভারটি ফায়ার করতে পারবেন। ব্যবহারকারীদের জন্য নতুন আইপি ঠিকানা প্রতিবিম্বিত করার জন্য প্রয়োজনীয় অনুদান যুক্ত করুন তারপরে সাধারণত পুনরায় আরম্ভ করুন।

আমি আপনার ডাটাবেসের আকারটি সম্বোধন করব কারণ এটি দক্ষ হওয়ার পক্ষে খুব বড়।


চারটি ডাটাবেস রয়েছে প্রায় 50-90 জিবি আকারের সামগ্রিক আকার 260 গিগাবাইট। এটি দক্ষ হতে পারে তবে আমি এখন পর্যন্ত এটির সাথে বেঁচে থাকতে পারি। এছাড়াও মাইএসকিউএল সংস্করণগুলি আলাদা, আপনি সেই ক্ষেত্রে কী পরামর্শ দিচ্ছেন?
জগবীর

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

1

এই বিশাল InnoDB ডাটাবেস স্থানান্তর করতে আপনি এই পদক্ষেপগুলি অনুসরণ করতে পারেন।

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

    $ renice -n 5 -p <SCRIPT-PID>

  • উভয় সার্ভারই ​​মাইএসকিউএল সার্ভারের একই রিলিজ চলছে কিনা তা নিশ্চিত করুন।
  • হটকপিটি সম্পূর্ণ হয়ে গেলে, আপনি এটি নতুন সার্ভারে পুনরুদ্ধার প্রক্রিয়া শুরু করতে পুনরুদ্ধার করতে পারেন

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

ব্যবহারের ধরণ এবং পরিসংখ্যানের উপর নির্ভর করে, সার্ভারে সর্বনিম্ন ট্র্যাফিক থাকলে আপনি এই প্রক্রিয়াটি চালাতে পারেন। সম্ভবত সপ্তাহান্তে এটি করা ভাল ধারণা? উপরেরটি প্রক্রিয়াটির একটি রূপরেখা মাত্র। আপনার পারকোনা এক্সট্রাব্যাকআপ এবং এসএসএইচএফএস ডকুমেন্টেশনের মধ্য দিয়ে যেতে হবে।


1

আপনি সরাসরি ডাটাবেসটি সরাসরি রিমোট সার্ভারে ফেলে দিতে পারেন ...

$ mysqldump | ssh user@server 'cat - > dumpfile.sql.gz'

... এসকিউএল ভালভাবে সংকোচিত হওয়া উচিত যাতে আপনার এই বিকল্পগুলির মধ্যে একটির সাথে এটি খুব দ্রুত সম্পন্ন করা উচিত যদিও এটি আপনার বাক্সে থাকা র‌্যামের পরিমাণের উপর নির্ভর করবে ...

$ mysqldump | ssh -C user@server 'cat - > dumpfile.sql.gz'
$ mysqldump | gzip -c | ssh user@server 'cat - > dumpfile.sql.gz'
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.