ব্যাকআপ উদ্দেশ্যে অস্থায়ী এসএসএইচ টানেল


11

দূরবর্তী সার্ভারে কয়েকটি মাইএসকিউএল স্কিমার সামগ্রী স্বয়ংক্রিয়ভাবে ব্যাক আপ করতে আমি একটি শেল স্ক্রিপ্ট (বর্তমানে ব্যাশ ব্যবহার করে) লিখতে চাই। রিমোট সার্ভারটি কেবল এসএসএইচ অ্যাক্সেসের অনুমতি দেওয়ার জন্য লক হয়ে গেছে তাই mysqldumpবিভিন্ন স্কিমার বিরুদ্ধে চালানোর আগে আমাকে একটি এসএসএইচ টানেল তৈরি করতে হবে ।

আমি কোনও সমস্যা ছাড়াই একটি টানেল তৈরি করতে পারি, তবে আমি ডাটাবেস ডাম্প সম্পূর্ণ হওয়ার পরে এটি স্বয়ংক্রিয়ভাবে বন্ধ করতে সক্ষম হতে চাই।

বর্তমানে আমার স্ক্রিপ্ট এটি করছে:

/usr/bin/ssh -T -f -L 4444:127.0.0.1:3306 -l remoteuser 208.77.188.166 sleep 600

/usr/bin/mysqldump --compress -h 127.0.0.1 -P 4444 -u user -ppassword db1 | gzip > /root/backups/snapshot/db1.sql.gz

/usr/bin/mysqldump --compress -h 127.0.0.1 -P 4444 -u user -ppassword db2 | gzip > /root/backups/snapshot/db2.sql.gz

/usr/bin/mysqldump --compress -h 127.0.0.1 -P 4444 -u user -ppassword db3 | gzip > /root/backups/snapshot/db3.sql.gz

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

কোন পরামর্শ?

উত্তর:


29

আপনাকে এই সমস্ত টানেলিং :-) নিয়ে বিরক্ত করার দরকার নেই।

কেবল এসএসএইচ সংযোগটি ব্যবহার করে মাইএসকিলডাম্প এর ডেটা প্রবাহিত করতে দিন:

ssh usr@host mysqldump -u dbuser -ppasswd my-database-name >dumpfile

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

3
প্রত্যন্ত সার্ভার প্রক্রিয়া তালিকার পাসওয়ার্ড সম্পর্কে "জুলাই 6 '09 এ 16:34" চিহ্নের উত্তরে (আমার কাছে কোনও মন্তব্য যুক্ত করার মতো যথেষ্ট খ্যাতি নেই): আপনি ব্যবহারকারী বাড়ীতে একটি .my.cnf ফাইল তৈরি করতে পারেন রিমোট সার্ভারে ডিরেক্টরি এবং সেখানে পাসওয়ার্ড নির্দিষ্ট করুন: [ক্লায়েন্ট] পাসওয়ার্ড = "গোপন" তারপরে কেবল মাইএসকিএলডাম্প ব্যবহার করুন (ডেটা স্থানান্তরকে গতিতে সংকোচনের সাথে এখানে):$ ssh user@host "mysqldump foobar | gzip -9" | gzip -d > foobar.sql
টমাস শিস্টার

5

-N বিকল্প, -f বিকল্প এবং স্লিপ 600 যুক্ত করুন, এটি পটভূমিতে না চালিয়ে এই টানেলটি খুলবে। তারপরে আপনি কমান্ডটি চালাতে পারেন & এর সাথে, পিআইডি পেতে, তারপরে চাকরি শেষ হওয়ার পরে এসএসএস প্রক্রিয়াটি মেরে ফেলুন।

/usr/bin/ssh -T -L 4444:127.0.0.1:3306 -l remoteuser 208.77.188.166 &
PID=$!
do_stuff
kill $PID

(আমি এটি বাশ দিয়ে পরীক্ষা করেছি - আপনার আলাদা শেলের জন্য জিনিসগুলি পরিবর্তন করতে হতে পারে)


4

সেলসেকের পরামর্শে সামান্যতম পার্থক্য, আপনি স্থানান্তরের আগে সংকোচনের জন্য মাইজকিলডাম্প আউটপুটটি জিজেপের মাধ্যমে পাইপ করতে পারেন:

ssh SSH-USER@SERVER mysqldump -u DB-USER -pDB-PASSWORD DB-NAME | gzip -c > DB-NAME.sql.gz

আমি সন্দেহ করি যে এই আদেশটি স্থানান্তরের পরে সংকোচিত হয় না, আপনাকে "মাইএসকিএল ... | জিজিপ" বিটটি উদ্ধৃত করতে হবে যাতে পাইপটি দূর থেকে মূল্যায়ন করা যায়
দ্য মাইটি ক্রিস

3

যেমন স্লেসকে বলেছে, কেন এই বিশেষ ক্ষেত্রে বিরক্ত করবেন? তবে সাধারণ ক্ষেত্রে কোনও এসএস টানেল নিয়ন্ত্রণের জন্য একটি সমাধান রয়েছে: নামযুক্ত পাইপ ব্যবহার করুন। প্রথমে পাইপটি তৈরি করুন:

ssh -l remoteuser 208.77.188.166 mkfifo /tmp/PIPO

তারপরে আপনি টানেলটি তৈরি করতে আপনার এসএসএতে (পাইপে ব্লক করা) লিখবেন:

/usr/bin/ssh -T -f -L 4444:127.0.0.1:3306 -l remoteuser 208.77.188.166 "echo T > /tmp/PIPO"

আপনি যখন টানেলটি বন্ধ করতে চান, কেবল পাইপটি পড়ুন:

ssh -l remoteuser 208.77.188.166 cat /tmp/PIPO

এট ভয়েইল!


2

এইভাবে আমি এটি লিখতে হবে,

scp backup-db.sh remoteuser@208.77.188.166:/root/backups/
ssh remoteuser@208.77.188.166 exec /root/backups/backup-db.sh

স্ক্রিপ্টটি যেখানে,

#!/bin/sh
# backup-db.sh
DUMPARGS=--compress -h 127.0.0.1 -P 4444 -u user -ppassword
BACKUP_PATH=/root/backups/snapshot

/usr/bin/mysqldump $DUMPARGS db1 | bzip2 > $BACKUP_PATH/db1.sql.bz2
/usr/bin/mysqldump $DUMPARGS db2 | bzip2 > $BACKUP_PATH/db2.sql.bz2
/usr/bin/mysqldump $DUMPARGS db3 | bzip2 > $BACKUP_PATH/db3.sql.bz2

শেষ অবধি, সংরক্ষণাগারটিকে scpঅন্য কমান্ড দিয়ে আবার সম্পাদনা করা যেতে পারে ।
হ্যাঁ, আমি পাইপ বা টানেল করিনি।

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