পূর্বনির্ধারিত ফাইলের তারিখ থেকে স্বয়ংক্রিয় ডিবি ব্যাকআপের জন্য ক্রোনজব


12

আমি সর্বশেষতম লিনাক্স মিন্ট ব্যবহার করছি। আমি ভাবছিলাম যে কোনও ডাটাবেস ব্যাকআপের জন্য একটি বিশেষ ক্রোনজব তৈরি করা সম্ভব কিনা।

আমার /etc/cronjobফাইলে আমার কাছে নিম্নলিখিত কোড রয়েছে:

# Minute   Hour   Day of Month       Month          Day of Week        Command    
# (0-59)  (0-23)     (1-31)    (1-12 or Jan-Dec)  (0-6 or Sun-Sat)                
30        4          *            *                1-6            /home/users/backup.sh

আমার সালে /home/users/backup.shআমি আছে:

mysqldump -uroot -p MyDatabase > /home/users/backup_MyDB/full_myDB.sql

পরিবর্তে full_myDB.sqlআমি এমন কিছু পেতে চাই 2014-04-04_full_myDB.sqlযেখানে আমাদের তারিখের উপর নির্ভর করে তারিখটি গতিশীলভাবে যুক্ত করা হয়।

যদি এসকিউএল ব্যাকআপ ফাইলটি এক সপ্তাহেরও বেশি পুরানো হয় তবে আমি চাইব যে ক্রোনজব এটি স্বয়ংক্রিয়ভাবে মুছুন

উত্তর:


15

জিএনইউ দিয়ে date(লিনাক্স মিন্টে ডিফল্ট) আপনি এটি করতে পারেন:

mysqldump -uroot -p MyDatabase >/home/users/backup_MyDB/$(date +%F)_full_myDB.sql

1 সপ্তাহেরও বেশি পুরানো ফাইলগুলি মুছতে:

find /home/users/backup_MyDB -type f -mtime +7 -exec rm {} +

যদিও এটি মুছে ফেলার আগে আপনি কী মুছে ফেলছেন তা দেখার জন্য বুদ্ধিমানের কাজ (কমপক্ষে আপনার স্ক্রিপ্ট পরীক্ষা করার সময়) কেবল এটি করুন:

find /home/users/backup_MyDB -type f -mtime +7

আমি উত্তরটি প্রস্তুত করছিলাম তবে আপনি আমাকে মারলেন: পি
রমেশ

2
@ রামেশ, পরিবর্তনের জন্য আমি এর মধ্যে অন্য কাউকে মারলাম খুশি - সাধারণত আমি পোস্ট করি এবং কারও ইতিমধ্যে এর অনুরূপ উত্তর রয়েছে।
গ্রিম

খুব সুন্দর. আমার ব্যবহারের জন্য আমি কেবল যে জিনিসটি পরিবর্তন করছি তা হ'ল .my.cnf ফাইলে ডিবি অ্যাক্সেসের বিশদ।
জোহান ডাইক

4

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

আশা করি এটি অন্য কাউকে সহায়তা করবে।

উপরের তথ্যটি ব্যবহার করে আমি নিম্নলিখিত সামগ্রী সহ mysqlbackup.sh নামে একটি প্রাথমিক শেল স্ক্রিপ্ট তৈরি করেছি:

#!/bin/sh
find /data/var/backups/mysql/dumps -type f -mtime +3 -exec rm {} +
mysql -e "truncate table sitename_prod.cache_table"
mysqldump sitename_prod > /data/var/backups/mysql/dumps/$(date +%F)_full_sitename_prod.sql

চালানোর জন্য নিশ্চিত করুন: chmod + x mysqlbackup.sh

আমি এটি আমার ক্রোনটব-এও রেখেছি:

# MYSQL Dump and retention for 3 days
30 22 * * * bash /root/bin/mysqldump.sh > /dev/null 2>&1

3

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

1) কিছুটা গবেষণা করা, 7-জিপগুলি মনে হয় সেখানকার সেরা সংকোচকারী। যদি আপনার লিনাক্স ডিস্ট্রো এটি সমর্থন করে তবে আপনি অ্যাপ্লিকেশন ইনস্টলারটি ব্যবহার করতে পারেন:

sudo apt-get install p7zip-full

বিকল্পভাবে, আপনি যদি তার সাথে আরও স্বাচ্ছন্দ্য বোধ করেন তবে আপনি tar.gz ব্যবহার করতে পারেন।

2) তারপরে, আপনি একটি স্ক্রিপ্ট তৈরি করুন, উদাহরণস্বরূপ /home/users/backup.sh বিষয়বস্তু সহ:

#!/bin/sh
find /home/users/backup_MyDB -type f -mtime +7 -exec rm {} +
mysqldump -uroot -p MyDatabase >/home/users/backup_MyDB/$(date +%F)_full_myDB.sql
7z a /home/users/backup_MyDB/$(date +%F)_full_myDB.7z /home/users/backup_MyDB/*.sql
rm -f /home/users/backup_MyDB/*.sql

এই স্ক্রিপ্টটি days দিনেরও বেশি সময় ধরে ফাইলগুলি সন্ধান করবে এবং সেগুলি মুছবে, তারপরে এটি এসকিএল ডাম্প তৈরি করবে, তারপরে এটি ডিরেক্টরিতে সমস্ত .sql ফাইলগুলিকে 7-জিপ করবে, তারপরে এটি ডিরেক্টরিতে সমস্ত .sql মুছে ফেলবে ( বিটিডাব্লু, আপনি ডাম্পের আগে optionচ্ছিকভাবে একটি মাইএসকিএল কমান্ড যুক্ত করতে পারেন, আগের উত্তরটিতে উল্লিখিত যেমন আপনার প্রয়োজন হলে)

3) আমরা একটি কাজ করি chmod +x /home/users/backup.shযাতে এটি কার্যকর করা যায়।

৩.১) আপনার স্ক্রিপ্টটি যদি উদ্দেশ্য অনুযায়ী কাজ করে তবে এটি পরীক্ষা করা উচিত

4) আমরা সাথে টাস্ক প্রোগ্রাম crontab -e

# Minute   Hour   Day of Month       Month          Day of Week        Command    
# (0-59)  (0-23)     (1-31)    (1-12 or Jan-Dec)  (0-6 or Sun-Sat)                
30        4          *            *                1-6            /home/users/backup.sh >> /dev/null 2>&1

এবং এটাই. এটি আপনার মাইএসকিউএল ডাটাবেসটি সপ্তাহের প্রতিটি দিন সকাল সাড়ে চারটায় (রবিবার ব্যতীত) ব্যাকআপ করবে এবং ব্যাকআপটি সংকুচিত করবে


1

@ গ্র্যামের উত্তরে যোগ করতে, এটি লক্ষণীয় যে আপনার মাঝে মাঝে ক্রোন জব্যে '%' চরিত্রটি পালাতে হবে তাই এটি দেখতে এটির মতো দেখাবে:

 mysqldump -uroot -p MyDatabase >/home/users/backup_MyDB/$(date +\%F)_full_myDB.sql
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.