আমি কীভাবে কোনও টেবিলের কাঠামো ব্যাক আপ করতে পারি তবে মাইএসকিউএলে এর ডেটা নয়


20

আমি আমার ডাটাবেস ব্যাকআপ তৈরির জন্য মাইএসকিউএল প্রশাসক ব্যবহার করছি। আমি পুরো ডাটাবেসটির সমস্ত সারণী সহ পুরোপুরি ব্যাক আপ করতে পারি। কিছু টেবিল রয়েছে যার আকার খুব বড় তাই আমি অবাক হয়েছি যদি আমি কেবল টেবিলগুলির কাঠামোর ব্যাকআপ নিতে পারি (কেবল তাদের উপাদানগুলি) তবে তাদের ডেটা না।

উত্তর:


40

--no-dataডেটা ডাম্প না করার জন্য মাইএসকিএলডাম সহ স্যুইচটি ব্যবহার করুন , কেবল টেবিলের কাঠামো।

এটি টেবিলগুলির জন্য তৈরি টেবিল বিবৃতি আউটপুট দেবে।

এটার মতো কিছু

mysqldump --no-data -h localhost -u root -ppassword mydatabase > mydatabase_backup.sql

নির্দিষ্ট সারণীগুলি লক্ষ্যবস্তু করতে, ডাটাবেসের নামের পরে সেগুলি প্রবেশ করান।

mysqldump --no-data -h localhost -u root -ppassword mydatabase table1 table2 > mydatabase_backup.sql

http://dev.mysql.com/doc/refman/5.1/en/mysqldump.html#option_mysqldump_no-data

http://dev.mysql.com/doc/refman/5.1/en/mysqldump.html


+1 সঠিক সম্পর্কে দেখায়।
ডেভিড প্যাশলে 21

অনেক অনেক ধন্যবাদ লুক। আমি এটি দিয়ে পরিচালনা করতে পারে। লেখার মুহুর্তে আমি মাইএসকিএলডাম্প সম্পর্কে কিছুই জানতাম না তবে আমি কোনও তথ্য-স্যুইচ দিয়ে সমস্যাটি সমাধান করতে পারতাম। তারপরে আমি মাইএসকিউএল প্রশাসকের কাছেও সেই টেবিলের "তৈরি করুন স্ক্রিপ্ট" পেয়েছি যাতে আমি এই বিকল্পটি দিয়েও এই সমস্যাটি সমাধান করতে পারতাম।

3

যেমন লূকআর বলেছিল, মাইসকিल्डম্পের কাছে - কোনও-ডেটা বিকল্পটি আপনার যা ইচ্ছা তা করবে।

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

#! / বিন / ব্যাশ

# ব্যাকআপ- mysql.sh
#
# ক্রেগ স্যান্ডার্স <cas@taz.net.au>
# এই স্ক্রিপ্টটি সর্বজনীন ডোমেনে রয়েছে। আপনি এটি দিয়ে যা চান তা করুন।

MYUSER = "ব্যবহারকারীর নাম"
MYPWD = "হল PASSWD"

এআরজিএস = "- একক লেনদেন - ফ্লাশ-লগস - সম্পূর্ণ-সন্নিবেশ"

DATABASES = $ (মাইএসকিএল -D মাইএসকিএল - স্কিপ-কলাম-নাম-বি -e 'ডাটাবেসগুলি দেখান;' | egrep -v 'তথ্য_চেমি');


BACKUPDIR = প্রথমেই / var / ব্যাকআপ / MySQL

YEAR = $ (তারিখ + "% Y")
মাস = $ (তারিখ + "% মি")
দিন = $ (তারিখ + "% d")

Date = "$ YEAR- $ মাসে / $ YEAR- $ MONTH- $ দিবস"

mkdir -p $ BACKUPDIR / ATE তারিখ
সিডি $ ব্যাকআপির / ATE তারিখ

আমার জন্য $ DATABASES; করা
  প্রতিধ্বনি -n "ব্যাক আপ $ i: স্কিমা ..."
  mysqldump $ ARGS --no-data -u $ MYUSER -p $ MYPWD $ i>। i.schema.sql

  প্রতিধ্বনিত করা "ডেটা ..."
  mysqldump $ ARGS --skip-opt --no-create-db --no-create-info -u Y MYUSER -p $ MYPWD $ i>। i.data.sql

  প্রতিধ্বনিত - "সংকোচনের ..."
  gzip -9fq $ i.schema.sql $ i.data.sql
  প্রতিধ্বনি "সম্পন্ন।"
সম্পন্ন

# 30 দিনের বেশি পুরানো ব্যাকআপ ফাইলগুলি মুছুন
ওল্ড = $ (সন্ধান করুন AC ব্যাকআপডিআর-টাইপ ডি -মাইট +30)
যদি [-n "$ ওল্ড"]; তারপর
        পুরানো ব্যাকআপ ফাইলগুলি মোছার প্রতিধ্বনি: $ ওল্ড
        প্রতিধ্বনি $ ওল্ড | xargs rm -rfv
ফাই

আপনার উত্তরের জন্য অনেক ধন্যবাদ ক্রেগ! প্রথমবারের মতো আমি কেবল লুকআর উত্তরটি তুলেছি। স্ক্রিপ্টের জন্য ধন্যবাদ, এটি একটি ভাল রেফারেন্স।

আমি কি --routinesস্কিমা স্ক্রিপ্টে যুক্ত করার পরামর্শ দেব ?
জোনাথন

0

আপনি mysqlকমান্ডলাইন ইন্টারফেসের মাধ্যমে ম্যানুয়ালি এটি করতে এবং DESCRIBE <tablename>ফলাফলগুলি অনুলিপি / আটকানোর মাধ্যমে করতে পারেন।


আপনি অনুলিপি এবং পেস্ট করতে পারেন এমন কিছু আপনাকে ডিজাইন করুন ES টেবিল তৈরি করুন প্রদর্শন করুন।
ডেভিড পাশলে

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