অত্যন্ত অনুরূপ ফাইল স্টোরেজ জন্য ঘূর্ণায়মান বিভিন্ন?


18

কর্মক্ষেত্রে আমরা আমাদের মাইএসকিএল ডাটাবেসের একটি রাতের ডাম্প করি। দিনে দিনে, আমি অনুমান করব যে 90-95% ডেটার সদৃশ হয়, সময় বাড়ার সাথে সাথে এটি বাড়ছে। (এই মুহুর্তে হেক কিছু সম্ভবত 99%)

এই ডাম্পগুলি যেখানে এক লাইনটি একক মাইএসকিএল INSERT বিবৃতি, তাই কেবলমাত্র পার্থক্যগুলি সম্পূর্ণ লাইন এবং সেগুলি ফাইলে যে ক্রমে থাকে are যদি আমি সেগুলি বাছাই করে ফেলি তবে ফাইল থেকে ফাইলের মধ্যে আসল পার্থক্যটি খুব কম হবে।

আমি খুঁজছিলাম, এবং আমি ডাম্প উপর আউটপুট বাছাইয়ের কোন উপায় খুঁজে পাইনি। sortযদিও আমি কমান্ডের মাধ্যমে এটি পাইপ করতে পারি । তারপরে অভিন্ন লাইনের দীর্ঘ, দীর্ঘ ব্লক থাকবে।

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

এটা কি সম্ভব? কি সরঞ্জাম দিয়ে?


সম্পাদনা আমি কীভাবে মাইএসকিএল ব্যাকআপ করব তা জিজ্ঞাসা করছি না। মুহুর্তের জন্য মাইএসকিএল ভুলে যান। এটি একটি লাল রঙের হেরিং। আমি যেটি জানতে চাইছি তা হ'ল ফাইলগুলির একটি সিরিজ থেকে রোলিংয়ের ভিন্নতা কীভাবে তৈরি করা যায়। প্রতি রাতে আমরা একটি ফাইল পাই (যা মাইসকিल्डম্প ফাইল হিসাবে ঘটে ) এটি তার আগের 99% এর মতো similar হ্যাঁ, আমরা সেগুলি সব জিপ করি। তবে এই সমস্ত অপ্রয়োজনীয়তা প্রথম স্থানে রাখা অপ্রয়োজনীয়। আমার যা দরকার তা হ'ল আগের রাত থেকে পার্থক্যগুলি ... যা আগের রাত থেকে মাত্র 1% আলাদা ... ইত্যাদি ইত্যাদি। সুতরাং আমি যা করছি তা হল কীভাবে বিভিন্ন ধারা তৈরি করতে হয় তাই প্রতি রাতে আমার কেবল 1% স্টোর দরকার।

উত্তর:


14

দুই ব্যাকআপ টুলস যে বাইনারি diffs সংরক্ষণ করতে পারেন হয় rdiff ব্যাকআপ এবং ছলনা । উভয়ই ভিত্তিক librsync, তবে তারপরে তারা বেশ আলাদা আচরণ করে। আরডিফ-ব্যাকআপ সর্বশেষতম অনুলিপি এবং বিপরীত ডিফার্স সঞ্চয় করে, যখন সদৃশটি traditionalতিহ্যবাহী বর্ধমান ডিফগুলি সঞ্চয় করে। দুটি সরঞ্জাম পেরিফেরিয়াল বৈশিষ্ট্যগুলির একটি আলাদা সেটও দেয়।


1
আইআইইউসি, আরডিফ-ব্যাকআপ আরও আকর্ষণীয়, কারণ এটি একজনকে ব্যাকআপটি সাধারণত ব্রাউজ করার অনুমতি দেয়, যখন সদৃশটিতে কেবল একটি পুরানো অনুলিপি থাকে।
tshpang

আমি জানি প্রশ্ন + প্রশ্নটি বেশ পুরানো, তবে আপনি কীভাবে এটি ব্যবহার করবেন তা দেখানোর জন্য আদেশগুলির একটি উদাহরণ যুক্ত করতে পারেন? উদাহরণস্বরূপ ব্যাকআপ201901.tar.gz, ব্যাকআপ201902.tar.gz, ..., ব্যাকআপ201912.tar.gz, ব্যাকআপ 202001.tar.gz। এটি ভবিষ্যতের রেফারেন্সের জন্য দরকারী হবে।
বাসজ

গতবার আমি আরডিফ-ব্যাকআপ অনুসরণ করেছি, মূল দেবগণ এগিয়ে গেছে, এবং প্রকল্পটি একরকম স্থবির হয়ে পড়েছিল, জানি না যে এটি পরিবর্তন হয়েছে কিনা। এটি নেটওয়ার্কগুলির থেকেও অবিশ্বাস্যরূপে ধীর হয়ে গেছে, যদি এটি গুরুত্বপূর্ণ।
টিকটিকি

13

ইদানীং আমি গিটের মধ্যে ডেটাবেস ডাম্পগুলি সংরক্ষণ করার চেষ্টা করছি। আপনার ডেটাবেস ডাম্পগুলি সত্যিই বড় হলে এটি অযৌক্তিক হয়ে উঠতে পারে, তবে এটি আমার জন্য ছোট ছোট ডাটাবেসের জন্য (ওয়ার্ডপ্রেস সাইট এবং এর মতো) কাজ করেছে।

আমার ব্যাকআপ স্ক্রিপ্ট মোটামুটি:

cd /where/I/keep/backups && \
mysqldump > backup.sql && \
git commit -q -m "db dump `date '+%F-%T'`" backup.sql

এটি কি কেবল ডিফার্স স্টোর করে?
ব্যবহারকারী 394

2
হ্যাঁ. এটা খুব সুবিধাজনক! আপনি যেকোন সময় থেকে ফাইলটিকে "চেক আউট" করতে পারেন, এবং গিটটি স্বয়ংক্রিয়ভাবে পৃথকগুলি একত্রিত করে আপনাকে পুরো ফাইলটি সেই সময়ে উপস্থিত থাকার সাথে দেয়।
sep332

1
এই ব্লগ পোস্টটি (আমার নয়) আরও বিশদে চলে গেছে: viget.com/extend/backup-your-database-in-git মন্তব্যগুলি আরও ভাল এবং কনস এবং সতর্কতামূলক বিষয়ে আরও বেশি পেয়েছে । আমি আরও যুক্ত করব যে আপনি যদি গিট ব্যবহার করেন তবে সংস্করণগুলিকে রোল করতে সক্ষম হওয়ার চেয়ে বেশি পাবেন। আপনি ডাম্পগুলিকে ট্যাগ করতে পারেন, বা আলাদা শাখা রাখতে পারেন (দেব / প্রোড)। আমি এটিকে যেভাবে দেখি তা গিট (বা আপনার প্রিয় আধুনিক সংস্করণ নিয়ন্ত্রণ ব্যবস্থা সন্নিবেশ করানো) আমার নিজের ডিফ / জিজিপ 'দ্রবণ' রোলিংয়ের চেয়ে আরও ভাল কাজ করে। এই নিবন্ধটি সম্পর্কে একটি সতর্কতা: আপনি যদি জনসাধারণ না চান (বা কোনও ব্যক্তিগত রেপোর জন্য অর্থ প্রদান করছেন) না হলে আপনার ডাম্পগুলি গিথুবে চাপবেন না।
ভেজাল

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

3

আপনি এর মতো কিছু করতে পারেন ( a.sqlআপনার সাপ্তাহিক ব্যাকআপ হিসাবে)।

mysqldump > b.sql
diff a.sql b.sql > a1.diff
scp a1.diff backupserver:~/backup/

আপনার ভিন্ন ফাইলগুলি সপ্তাহের শেষের দিকে আরও বড় হয়ে উঠবে।

আমার পরামর্শটি কেবল এটি gzip ( gzip -9সর্বোচ্চ সংক্ষেপণের জন্য ব্যবহার করুন )) আমরা এই মুহুর্তে এটি করি এবং এটি একটি 59MB জিজেড-ফাইল ব্যবহার করে যখন মূলটি 639MB।


আমরা ইতিমধ্যে সেগুলি গ্রিজ করছি :)
ব্যবহারকারী 394

1

ডাটাবেস ডাম্পগুলির আকার এবং প্রকৃত পাঠ্য মিলের উপর নির্ভর করে একাধিক সম্ভাব্য পন্থা অনুসরণ করা যেতে পারে:

  1. ওপি অনুরোধ হিসাবে রোলিং চেকসাম ব্যবহার করে এমন একটি নকল ব্যাকআপ প্রোগ্রাম প্রয়োগ করুন, উদাহরণস্বরূপ রিস্টিক ( https://restic.net/ ) বা বারডব্যাকআপ ( https://borgbackup.readthedocs.io/ ) অবিশোধিত ডাম্পগুলিতে। উভয় সিস্টেমই FUSE এর মাধ্যমে একটি নির্দিষ্ট ব্যাকআপ সংস্করণ মাউন্ট করার অনুমতি দেয় এবং চিরকালের জন্য বর্ধিত পদ্ধতিতে কাজ করে।
  2. এনসিবিআই ছেলেরা কীভাবে তাদের বেশ বড় জেনেটিক্স ডেটা বেসগুলির জন্য এটি করে তার অনুরূপ বিষয়বস্তু থেকে ডাটাবেস কাঠামোটি ডিকুয়াল করুন। এটি হ'ল: আপনি ডাটাবেস স্কিমা তৈরি করার জন্য এসকিউএল স্ক্রিপ্টগুলি তৈরি করবেন (যেমন ftp://ftp.ncbi.nlm.nih.gov/snp/organisms/human_9606_b151_GRCh38p7/datedia/organism_schema/ ) এবং আলাদাভাবে টেবিলের সামগ্রী সংরক্ষণ করুন clearোকানো বিবৃতিগুলি ছাড়াই ক্লিয়ারটেক্সট বা সংক্রামিত বাইনারি ফর্ম্যাট (যেমন ftp://ftp.ncbi.nlm.nih.gov/snp/organisms/human_9606_b151_GRCh38p7/database/organism_data/) যেমন ট্যাব বা কমা দ্বারা পৃথক মান হিসাবে। অবশ্যই এটির জন্য একটি পৃথক আমদানি রুটিন প্রয়োজন যা ডেটা বেসে ডেটা আমদানির জন্য ঠিক সময়ে সন্নিবেশ বিবৃতি তৈরি করতে পারে, অর্থাত ব্যাকআপ থেকে পুনরুদ্ধার। আপনার ডিবিএমএস যদি কোনও সিএসভি ফাইল আমদানিকারক সরবরাহ করে তবে উপরের অতিরিক্ত স্ক্রিপ্টের প্রয়োজনীয়তা বাদ দেওয়া যেতে পারে। অতএব সঙ্কুচিত পাঠ্য ফাইলগুলি আবার উপরের বর্ণিত বা আরডিআইফ-ব্যাকআপের মতো অন্যান্য নিয়মিত ব্যাকআপ প্রোগ্রামগুলিতে খাওয়ানো যেতে পারে।
  3. WEKA ( https://www.cs.waikato.ac.nz/ML/weka/arff.html ) যেভাবে কাঠামো এবং বিষয়বস্তুগুলি আরফ ফাইলগুলির মতো বিন্যাস ব্যবহার করে আলগাভাবে মিলিত হয়েছে এমন একটি সমাধান চয়ন করুন : এর কাঠামো এবং ডেটা ধরণের ফাইলগুলির শিরোনামে কলামগুলি ঘোষিত হবে এবং আসল সামগ্রীটি আবার @Data বিবৃতিতে CSV- মত ফর্মের মাধ্যমে পৃথক হবে। বর্তমানে প্রচুর ইটিএল সরঞ্জাম ডেটা বেস সংযোজক ছাড়াও একটি আরফ রিডার অফার করে। ফাইলগুলি আবার নিয়মিত ব্যাকআপ প্রোগ্রামগুলিতে খাওয়ানো যেতে পারে

এই উত্তরটি "কীভাবে ডাটাবেস ডাম্পগুলির রোলিং ব্যাকআপগুলি করবেন" এই প্রশ্নের উত্তর দেয়, তবে আরও সাধারণ প্রশ্ন নয় "অত্যন্ত অনুরূপ ব্যাকআপগুলির রোলিং ব্যাকআপ কীভাবে", যা আমি জিজ্ঞাসা করেছি
ইউজার 394

সত্যই আমি সন্দেহ করি যে আপনি আসলে যা অর্জন করতে চান তা হ'ল প্রতিলিপি, যা 1 ম পদ্ধতির মধ্যে উল্লেখ করা হয়েছে। সম্ভবত আপনি রেস্টিক . net/blog/2015-09-12/restic-foundation1-cdc যেখানে এটি বর্ণিত হয়েছে তা একবার দেখতে চান এবং সম্ভবত আপনি তাদের চেষ্টা করে দেখতে চান?
jf1

এই মন্তব্যটি, বিস্তারিতভাবে প্রকাশিত হয়েছে, আপনার বর্তমানের চেয়ে অনেক বেশি প্রাসঙ্গিক উত্তর দেবে।
ইউজার 394

-3

(আমি প্রযোজনায় এটি করিনি))

প্রতিদিন বা সপ্তাহে একবারে পুরো ব্যাকআপ করুন। ব্যাকআপ রিলে প্রতি ঘন্টা বা দিনে একবার লগ হয়।


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