আমি কীভাবে একটি সার্ভার থেকে অন্য সার্ভারে একটি ডাটাবেস স্থানান্তর করতে পারি?


136

আমি কীভাবে মাইএসকিউএল টেবিলগুলি একটি শারীরিক সার্ভার থেকে অন্য স্থানে সরিয়ে নিতে পারি?

এই নির্ভুল দৃশ্যের মতো: আমার কাছে একটি মাইএসকিউএল সার্ভার রয়েছে যা ইনানোডব টেবিল ব্যবহার করে এবং প্রায় 20 জিবি আকারের।

আমি এটিকে একটি নতুন সার্ভারে স্থানান্তরিত করতে চাই, এটি করার সবচেয়ে দক্ষ উপায় কোনটি?


4
আমি xtrabackup percona.com/docs/wiki/… ব্যবহার করব এটি একে অনুলিপি করার মতো তবে আপনি সার্ভারটি চালিয়ে রাখতে এবং ধরে নিতে পারেন যে আপনি মূলত ইনডোডব টেবিল ব্যবহার করেন (যা আপনি বলেছিলেন) আপনি এটি একটি "হট" হিসাবে বিবেচনা করতে পারেন পাশাপাশি ব্যাকআপ।
জোনাথন

আমি এই সরঞ্জামটি ব্যবহার করে অন্য ব্যক্তির দ্বারা উপকৃত হই না। এটি ফ্রি / ওপেন সোর্স এবং এটি কোনও সংস্থা দ্বারা তৈরি করা সত্ত্বেও, এটি এতটা সহজ যে আপনাকে সেই সংস্থার কাছ থেকে সমর্থন কেনার বিষয়টি বিবেচনা করার দরকার নেই use
জোনাথন

উত্তর:


80

আমার প্রিয় উপায়টি হল স্ক্যালডাম্প কমান্ডটি কোনও এসকিএল কমান্ডে পাইপ করা। আপনি সমস্ত ডাটাবেস বা একটি নির্দিষ্ট একটি করতে পারেন। সুতরাং, উদাহরণস্বরূপ,

mysqldump -uuser -ppassword myDatabase | mysql -hremoteserver -uremoteuser -premoteserverpassword 

আপনি সমস্ত ডাটাবেস দিয়ে করতে পারেন

mysqldump --all-databases -uuser -ppassword | mysql -hremoteserver -uremoteuser -premoteserver 

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


4
টিপ: যদি না কোনও ডাটাবেস রিমোট সংযোগের অনুমতি দেয় তবে পাইপের মাধ্যমে netcat
বার্ট ভ্যান হিউকেলোম

1
এটি আমার জন্য কাজ করার জন্য আমাকে দূরবর্তী সার্ভারে একই নামের একটি খালি ডাটাবেস তৈরি করতে হয়েছিল এবং তারপরে কমান্ডের শেষে সেই ডাটাবেসের নাম যুক্ত করতে হয়েছিল।
জুগওয়াল্ট

1
এটি মার্জিত, তবে 20 জিবি ডাটাবেসের জন্য খুব কমই কম্প্রেশন ছাড়াই যথেষ্ট দ্রুত।
32

এই সমাধানটি কেবলমাত্র একটি সম্পূর্ণ নিয়ন্ত্রিত নেটওয়ার্কের জন্য ভাল (যদি এবং শুধুমাত্র কোনও সুরক্ষিত ব্যক্তিগত নেটওয়ার্কে থাকে তবে পড়ুন: ইন্টারনেট নয়)! তবে দ্রুত এবং সহজ সমাধান!
tdaget

এই বজ্রপাত দ্রুত! তবে @ জুগওয়াল্ট যা বলেছেন তা আমার পক্ষেও সত্য was কমান্ডটি কাজ করে না যতক্ষণ না আমি ডাটাবেস তৈরি করেছি (খালি) কমান্ডের শেষে ডাটাবেসের নাম যুক্ত করে।
স্কাইট

65

আমি নিম্নলিখিত স্ট্রাজি সহ সম্প্রতি একটি 30 জিবি ডাটাবেস স্থানান্তরিত করেছি:

ওল্ড সার্ভার

  • মাইএসকিএল সার্ভার বন্ধ করুন
  • ডেটাডিরের সামগ্রীগুলি ডিস্কের অন্য কোনও স্থানে অনুলিপি করুন ( ~/mysqldata/*)
  • আবার mysql সার্ভার শুরু করুন (ডাউনটাইম ছিল 10-15 মিনিট)
  • তথ্য সংকোচন ( tar -czvf mysqldata.tar.gz ~/mysqldata)
  • নতুন সার্ভারে সংকুচিত ফাইলটি অনুলিপি করুন

নতুন সার্ভার

  • মাইএসকিএল ইনস্টল করুন (শুরু করবেন না)
  • সঙ্কুচিত ফাইল আনজিপ করুন ( tar -xzvf mysqldata.tar.gz)
  • মাইসকিলডাটার সামগ্রীগুলি ডেটাডিরে সরান move
  • নতুন সার্ভারে আপনার ইনোডবি_লগ_ফিল_সাইজটি একইরকম কিনা তা নিশ্চিত করুন বা এটি না হলে পুরানো লগ ফাইলগুলি অনুলিপি করবেন না ( মাইএসকিএল এগুলি উত্পন্ন করবে )
  • মাইএসকিএল শুরু করুন

1
কমপ্রেস / ডিকম্প্রেস করার পরে অনুলিপিটি এড়িয়ে যান। SSH ব্যবহার নেটওয়ার্কের মাধ্যমে আলকাতরা, বা Stream (যদি এবং কেবল একটি নিরাপদ ব্যক্তিগত নেটওয়ার্কে যদি পড়ুন: না ইন্টারনেট) netcat ব্যবহার এনক্রিপশন ওভারহেড এড়ানো। এছাড়াও যদি কোনও স্থানীয় নেটওয়ার্কে গিজিপিং এড়িয়ে যান, আপনার কাছে যদি একটি দ্রুত নেটওয়ার্ক পাইপ থাকে তবে আপনি স্থানান্তরটি একটি
পেগড

এটি ইনোডাব এবং মাইসাম উভয়ের পক্ষে কাজ করে? এছাড়াও, মাইএসকিএল ব্যবহারকারীরাও দাতাদিরে আছেন?
giorgio79

2
@ জিওরজিও 7979 নিশ্চিত যতক্ষণ আপনি ইবদাটা ফাইলগুলি সরান ততক্ষণ। ডিফল্টরূপে সেগুলি ডেটাডির মধ্যে রয়েছে। মাইএসকিউএল ব্যবহারকারীরা কোনও ব্যবহারকারীর টেবিল স্পেসে মাইএসকিএল ফোল্ডারে সংরক্ষিত থাকে।
ডেরেক ডোনিয়ে

2
এই পদ্ধতিটি উইন্ডোজ থেকে লিনাক্সে যাওয়ার জন্য কাজ করবে?
ypercubeᵀᴹ

2
@ টাইপকিউব respond সাড়া দিতে দু'বছরের বেশি সময় নেওয়ার জন্য দুঃখিত, তবে কেউ যদি নিশ্চিতভাবে বলেছিলেন যে "হ্যাঁ, এটি উইন্ডোজ থেকে লিনাক্সে কাজ করে"। আমার ক্ষেত্রে, আমি উইন্ডোজ সার্ভার 2012 আর 2 থেকে সেন্ট ওএসে (রেড হ্যাট 4.8.5-11) গিয়েছিলাম । নির্দিষ্ট মাইএসকিএল সংস্করণটি ছিল মারিয়া ডিবি 10.1 । প্রস্তাবিত হিসাবে, আমি উভয়ই মাইএসকিএল পরিষেবাগুলি বন্ধ করে দিয়েছি, ডাটা ডিরেক্টরিটি পুনরায় সেন্সড করেছি এবং নতুন সার্ভারে মাইএসকিএল পরিষেবা শুরু করার পরে, সমস্ত ডাটাবেস, ডাটাবেস টেবিল এবং ডাটাবেস ব্যবহারকারী সম্পূর্ণ অক্ষত ছিল।
ওয়েজবুজু 7'17

30

মতে মাইএসকিউএল 5.0 সার্টিফিকেশন স্টাডি গাইড , অধ্যায় 32 অনুচ্ছেদ 32.3.4, পৃষ্ঠাগুলি 456.457 বর্ণনা বাইনারি পোর্টেবিলিটি জন্য শর্ত যা আউট নিম্নলিখিত আনতে:

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

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

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

মাইআইএসএএম টেবিল এবং ইনোডিবি টেবিল স্পেসগুলি দুটি শর্ত পূরণ করলে একটি হোস্ট থেকে অন্য হোস্টে বাইনারি পোর্টেবল হয়:

  • উভয় মেশিনে অবশ্যই দু'জনের পরিপূরক পূর্ণসংখ্যার গাণিতিক ব্যবহার করা উচিত
  • উভয়ই মেশিন অবশ্যই আইইইই ভাসমান-পয়েন্ট ফর্ম্যাট ব্যবহার করতে হবে অন্যথায় সারণিতে অবশ্যই কোনও ভাসমান-পয়েন্ট কলাম থাকতে হবে না (ফ্লাট বা ডাবল)

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

[mysqld]
lower_case_table_names=1

আপনি যদি প্রতি টেবিল টেবিল স্পেসগুলি ব্যবহার করতে InnoDB কনফিগার করেন তবে বাইনারি বহনযোগ্যতার শর্তগুলি InnoDB টেবিলের জন্য .ibd ফাইলগুলি অন্তর্ভুক্ত করার জন্য বাড়ানো হয়েছে। (ভাগ করা টেবিল স্পেসগুলির শর্তাবলী এখনও প্রযোজ্য কারণ এতে ডেটা ডিকশনারি রয়েছে যা সমস্ত InnoDB টেবিল সম্পর্কে তথ্য সঞ্চয় করে))

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

পৃথক সারণী সরানোর জন্য স্টোরেজ ইঞ্জিনের উপর ভিত্তি করে দুটি বড় উপায় রয়েছে।

প্রদত্ত উদাহরণের জন্য আমরা নিম্নলিখিতটি অনুমান করব:

  1. ডেটাডির হ'ল / ভার / লিব / মাইএসকিএল
  2. ডাটাবেস মাইডিবি নামে পরিচিত
  3. mydb ডাটাবেসে সারণী বলা হয় mytable

মাইআইএসএএম টেবিল

যদি mydb.mytable মাইআইএসএএম স্টোরেজ ইঞ্জিন ব্যবহার করে, টেবিলটি শারীরিকভাবে তিনটি পৃথক ফাইল হিসাবে প্রকাশিত হবে

  1. /var/lib/mysql/mydb/mytable.frm (.frm ফাইল)
  2. /var/lib/mysql/mydb/mytable.MYD (.MYD ফাইল)
  3. /var/lib/mysql/mydb/mytable.MYI (.MYI ফাইল)

.Frm এ টেবিলের কাঠামো
রয়েছে। এমওয়াইডি টেবিলের ডেটা
ধারণ করে .MYI সারণী সূচী পৃষ্ঠাটি রয়েছে

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

LOCK TABLES mydb.mytable READ;
SELECT SLEEP(86400);
UNLOCK TABLES;

কেবলমাত্র পঠনযোগ্য হিসাবে টেবিল রাখার জন্য এক ssh অধিবেশনে এবং 24 ঘন্টা লকটি ধরে রাখুন। এক সেকেন্ড পরে, অন্য ssh সেশনে অনুলিপি সম্পাদন করুন। তারপরে 24 ঘন্টা লক দিয়ে মাইএসকিএল সেশনটি হত্যা করুন। আপনার 24 ঘন্টা অপেক্ষা করার দরকার নেই।

InnoDB টেবিল

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

যেহেতু এখানে দুটি প্রশ্ন একত্রীভূত হয়েছিল (jcolebrand): EDIT

আপনি যদি কিছু ধীর ডিবি পারফরম্যান্সের সাথে বাঁচতে ইচ্ছুক না হন, তবে mysql এখনও সার্ভারে চলমান থাকা সত্ত্বেও আপনি পুরানো সার্ভার (সার্ভারএ) থেকে নতুন সার্ভারে (সার্ভারবি) বেশ কয়েকটি সিরিজ করতে পারেন s

পদক্ষেপ 01) সার্ভারএর যে মাইএসকিএল এর একই সংস্করণ ইনস্টল করুন

পদক্ষেপ 02) সার্ভারএ-তে, মাইএসকিএল SET GLOBAL innodb_max_dirty_pages_pct = 0;এবং প্রায় 10 মিনিট থেকে চালান (এটি InnoDB বাফার পুল থেকে নোংরা পৃষ্ঠাগুলি মুছে দেয় It এটি মাইএসকিএল শাটডাউন দ্রুত সম্পাদন করতেও সহায়তা করে) আপনার ডাটাবেস যদি সমস্ত মাইআইএসএএম হয় তবে আপনি এই পদক্ষেপটি এড়িয়ে যেতে পারেন।

পদক্ষেপ 03) rsync --archive --verbose --stats --partial --progress --human-readable ServerA:/var/lib/mysql ServerB:/var/lib/mysql

পদক্ষেপ 04) আরএসসিএন 1 মিনিটেরও কম সময় না নেয় না হওয়া পর্যন্ত পদক্ষেপ 03 পুনরাবৃত্তি করুন

পদক্ষেপ 05) service mysql stopসার্ভারে

পদক্ষেপ 06) আরও একটি আরএসএনসি সম্পাদন করুন

পদক্ষেপ 07) scp ServerA:/etc/my.cnf ServerB:/etc/

পদক্ষেপ 08) service mysql startসার্ভারে

পদক্ষেপ 08) service mysql startসার্ভারএতে (alচ্ছিক)

একবার চেষ্টা করে দেখো !!!

বিচারকার্য স্থগিত রাখার আদেশ

আপনি এর মতো একটি রেপ্লিকেশন স্লেভ তৈরি করতে পারেন। কেবল মনে রাখবেন সার্ভার-আইডি স্পষ্টভাবে মাস্টার /etc/my.cnf এ সেট করা এবং স্লেভ /etc/my.cnf- এ সার্ভার-আইডির জন্য আলাদা নম্বর


29

এমনকি যদি আপনি একটি সম্পূর্ণ ডাটাবেস স্কিমা সরিয়ে নিয়ে থাকেন তবে আপনার কাছে মাইএসকিल्डম্পের প্রয়োজন নেই এবং আপনি প্রথম ডাটাবেসটি বন্ধ করতে ইচ্ছুক (সুতরাং স্থানান্তরিত হওয়ার সময় এটি সামঞ্জস্যপূর্ণ)

  1. ডাটাবেস বন্ধ করুন (বা এটি লক করুন)
  2. সেই ডিরেক্টরিতে যান যেখানে মাইএসকিএল ডেটা ফাইল থাকে।
  3. নতুন সার্ভারের মাইএসকিএল ডেটা ডিরেক্টরিতে ফোল্ডারটি (এবং এর সামগ্রীগুলি) এর মাধ্যমে স্থানান্তর করুন
  4. ডাটাবেস ব্যাক আপ শুরু করুন
  5. নতুন সার্ভারে একটি 'তৈরি ডাটাবেস' কমান্ড জারি করুন। '
  6. ব্যবহারকারীদের পুনরায় তৈরি করুন এবং অনুমতিগুলি মঞ্জুর করুন।

আমার মনে আছে যদি না mysqldump ব্যবহারকারী এবং অনুমতি, বা শুধু ডেটা পরিচালনা ... কিন্তু এমনকি যদি এটা আছে, এই পথ একটি ডাম্প করছেন & চলমান তুলনায় দ্রুততর। আমি কেবল এটিই ব্যবহার করতাম যে যদি আমার কোনও আরএসবিবিএমএসে আবার প্রবেশ করার জন্য কোনও মাইএসকিএল ডাটাবেস ডাম্প করার প্রয়োজন হয় তবে আমার যদি স্টোরেজ বিকল্পগুলি (ইনোডাব বনাম মাইসাম) পরিবর্তন করার প্রয়োজন হয়, বা যদি আমি মাইএসকিএল এর বড় অংশগুলি পরিবর্তন করছিলাম (তবে আমি মনে করি আমি এটি 4 এবং 5 এর মধ্যে করেছি, যদিও)


এটি আরও দক্ষ, বিশেষত যদি কেউ সিসাদমিন / ডিবিএ হয়। বিটিডাব্লু মাইএসকিএলডাম্প মাইএসকিএল --all-databasesস্কিমা ব্যবহার করে । পরবর্তী মেশিনে মাইএসকিএল শুরু করার সাথে সাথে মাইএসকিউএলের একই বড় রিলিজের সাহায্যে আপনি ডেটা ফোল্ডারটিকে অন্য মেশিনে স্থানান্তরিত করে অনুমতিগুলি নিয়ে আসে। (MySQL 5.5.x থেকে MySQL 5.5.x, MySQL 5.1.x থেকে MySQL 5.1.x, MySQL 5.0.x থেকে MySQL 5.0.x)
RolandoMySQLDBA

4
@ জো, হ্যাঁ, mysqldumpব্যবহারকারী এবং অনুমতিগুলি পরিচালনা করে, কারণ এগুলি mysqlস্কিমাতে সংরক্ষণ করা হয় ।
Shlomi Noach

এই পদ্ধতির বিশেষত AWS এর মতো ক্লাউড হোস্টিংয়ের ক্ষেত্রে কার্যকর। আপনি বর্তমান সার্ভার থেকে মাইএসকিএল বন্ধ, আনমাউন্ট এবং বিচ্ছিন্ন করতে পারেন; সংযুক্ত করুন এবং নতুন সার্ভারে মাউন্ট করুন এবং মাইএসকিএল শুরু করুন। ভলিউম একই সার্ভার ফার্মে থাকলে অনুলিপি করা হবে না over
পার্শ্ববর্তী ফ্র্যাক্টাল

12

আপনি যদি কেবল একটি নির্দিষ্ট টেবিলটি সরাতে চান তবে চেষ্টা করুন:

mysqldump -u username -ppassword databasename tablename > databasename.tablename.sql

আপনি একই কমান্ডে উপরে আরও সারণির নাম উল্লেখ করতে পারেন। কমান্ডটি সম্পূর্ণ হয়ে গেলে, ডাটাবেসনাম.টায়বলনাম.এসকিউএল ফাইলটি অন্য সার্ভারে সরান এবং তারপরে পুনরায় ব্যবহার করে পুনরুদ্ধার করুন:

mysql -u username -ppassword databasename < databasename.tablename.sql

মনে রাখবেন যে, ফিরে .sql ফাইল ব্যবহার করে তৈরি করা হয় mysqldump প্রোগ্রাম, এবং পুনঃস্থাপন মধ্যে সরাসরি সম্পন্ন করা হয় MySQL


7
  1. আপনার যদি ssh অ্যাক্সেস থাকে তবে আপনি কমান্ড লাইন থেকে mysqldump ব্যবহার করতে পারেন
  2. আপনার যদি ssh অ্যাক্সেস না থাকে তবে আপনার কাছে phpMyAdmin অ্যাক্সেস থাকে আপনি এটিকে রফতানি / আমদানিতে ব্যবহার করতে পারেন
  3. আপনার কাছে পিএইচপিএমআইএডমিন অ্যাক্সেস না থাকলে এমন কিছু হ্যান্ডি পিএইচপি স্ক্রিপ্ট রয়েছে যা ডাম্প এবং আমদানি করবে (তবে নিজের অভিজ্ঞতা থেকে বললে আমি পিএইচপিএমআইএডমিনের মতো নির্ভরযোগ্য এমন কোনওটিই পাইনি)।

আপনি যেখানে আসল ডাটাবেস ফাইলগুলি সরিয়ে নিয়েছেন সেখানে এই পজিবিলিটি থাকতে পারে (আমার ইনস্টলের জন্য তারা / var / lib / mysql এ অবস্থিত) তবে আমি কীভাবে এটি কার্যকর / কার্যকর হবে তা আমি সত্যই জানি না।


5

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

  1. সোর্স হোস্টে মাইএসকিএল ডিমন বন্ধ করুন।
  2. ফাইলগুলি পেতে আপনার টার্গেট হোস্টে একটি টিএমপি ফোল্ডার তৈরি করুন।
  3. কোনও শেল সেশন তৈরি করতে স্ক্রিনটি ব্যবহার করুন যা আপনার এসএসএই সংযোগ বিচ্ছিন্ন হয়ে গেলে বেঁচে থাকবে।
  4. হোস্টগুলির মধ্যে ফাইল স্থানান্তর করতে rsync ব্যবহার করুন । এর মতো কিছু: rsync -avhP উত্স ব্যবহারকারী @ টার্গেটস্টস্ট: / পাথ / টু / ফোল্ডার /
  5. আপনি স্থানান্তরটিতে কোনও কিছু হারান নি তা নিশ্চিত করার জন্য আপনার পরীক্ষার কেসগুলি চালান।

তারপরে স্থানীয় মাইএসকিউএল সেট আপ করে যথারীতি এগিয়ে যান।

* দ্রষ্টব্য: আপনি স্থানান্তরটিতে একটি চেকসাম যোগ করতে আরএসসিএন-এর সাথে -c পরামিতি ব্যবহার করতে পারেন, তবে এটি সিপিইউ গতির উপর নির্ভর করে স্লুও হবে be


4

আমি নিশ্চিত করতে পারি যে ডিটিস্টের পদ্ধতিটি উবুন্টু এবং ওএসএক্সের মধ্যে অনুলিপি করার জন্যও কাজ করে।

কোনও ডাম্পিং বা অনুরূপ না করে সমস্ত ডাটাবেস অনুলিপি করতে:

নিশ্চিত করুন যে আপনার কাছে মাইএসকিএল একটি পরিষ্কার মাইএসকিএল রয়েছে (মাইএসকিএল থেকে ডাউনলোড করা ডিএমজি ইনস্টল করেছেন http://cdn.mysql.com/Downloads/MySQL-5.1/mysql-5.1.63-osx10.6-x86_64.dmg ), এটি (খুব গুরুত্বপূর্ণ) কখনও চালানো হয়নি।

উবুন্টু মেশিন থেকে / ইউএসআর / লোকাল / মাইএসকিএল / ডেটা / সামগ্রীর উপরে ম্যাকের উপর / var / lib / mysql / ফোল্ডার সামগ্রী অনুলিপি করুন। উবুন্টু মেশিনে ফোল্ডারটি পেতে অ্যাক্সেস পেতে আমাকে সুডো ব্যবহার করতে হয়েছিল অর্থাৎ:

sudo cp /var/lib/mysql /home/foouser/mysql_data_folder
sudo chown -R foouser /home/foouser/mysql_data_folder

আমি scp ব্যবহার করে ফোল্ডারটি অনুলিপি করেছি।

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

ফোল্ডারটি অনুলিপি করার পরে, ম্যাক মেশিনে নিম্নলিখিতটি করুন:

sudo chown -R _mysql /usr/local/mysql/data/
sudo chgrp -R wheel /usr/local/mysql/data/
sudo chmod -R g+rx /usr/local/mysql/data/

প্রথমবারের জন্য মাইএসকিএল সার্ভারটি শুরু করুন (সিস্টেম পছন্দসমূহ>> মাইএসকিএল এর অধীন পছন্দসই ফলক থেকে)। সমস্ত ব্যবহারকারী এবং ডাটাবেস এখন সঠিকভাবে সেট আপ করা উচিত।

এটি উবুন্টু bit৪ বিট ১১.১০ এবং মাইএসকিএল ৫.১.3৩ এর সাথে ওএসএক্স সিংহে (ম্যাকবুক প্রো) কাজ করেছে q


4

আমি মনে করি পূর্ববর্তী সমস্ত উত্তর সম্ভবত খুব ভাল কাজ করে তবে বাস্তবে স্থানান্তরকালে কোনও ডাটাবেসের নাম সেট করার বিষয়টি বিবেচনা করে না।

বাশ দিয়ে আমি কেবল এটি করেছিলাম:

আপনি যদি প্রায়শই এটি করে থাকেন তবে আপনি ফাইলটি সংকোচনের rsyncচেয়ে বেশি ভাল ব্যবহার scpকরতে পারেন।

আমার উত্স সার্ভারে:

me@web:~$ d=members
me@web:~$ mysqldump $d | gzip > $d.sql.gz
me@web:~$ scp -i .ssh/yourkeynamehere $d.sql.gz $sbox:$d.sql.gz

আমার গন্তব্য সার্ভারে:

me@sandbox:~$ d1=members
me@sandbox:~$ d2=members_sb
me@sandbox:~$ mysqladmin create $d2
me@sandbox:~$ cat $d1.sql.gz | gunzip |  mysql $d2

উভয়ই মেশিনে অগ্রগতি দেখতে:

me@sandbox:~$ ls *.gz 
me@sandbox:~$ cat $d.sql.gz | gunzip |  less

এই সমস্ত অনুমান করে আপনার উভয় মেশিনে আপনার হোম ডিরেক্টরিতে মাইএসকিউএল কনফিগারেশন ফাইল রয়েছে এবং অনুমতিগুলি সেট করেছেন:

$ echo "
[client]
user=drupal6
password=metoknow
host=ord-mysql-001-sn.bananas.com
[mysql]
database=nz_drupal" > .my.cnf
$ chmod 0600 ~/.my.cnf

3

আপনি কি এটি অন্য মাইএসকিএল সার্ভার ডিবিতে সরিয়ে নিচ্ছেন? যদি তাই ব্যবহার করে তবে এটিতে একটি রফতানি করুন

# mysqldump -u username -ppassword database_name > FILE.sql

Mysqldump? আপনি যখন অল্প পরিমাণে ডেটা নিয়ে কাজ করছেন তখন?
ওহ চিন বুন

2
আমি মনে করি আজকাল ছোট / বড় বেশ কিছু বিষয়মূলক। আমি যখন প্রশ্নের শিরোনামটি দেখেছি তখন আমি আশা করছিলাম যে ডাটাবেসটি 20 জিবি থেকে অনেক বড় "বড়" হিসাবে বিবেচিত হবে ...
অ্যারন বারট্রান্ড

3

জেনেরিক লিনাক্স পদ্ধতি:

/etc/init.d/mysqld stop
rsync -avz source_files destination
vi /etc/my.cnf

mysqld এবং mysqld_safe উভয়ের জন্য ডেটাডির (এবং সকেট) সম্পাদনা করুন (যদি প্রযোজ্য হয়) নতুন অবস্থানের দিকে নির্দেশ করুন, তারপরে

/etc/init.d/mysql start

আমি এটি পোস্ট করেছি কারণ এটি করার জন্য কোনও পদক্ষেপের ন্যূনতম পরিমাণের তালিকা কেবল কেউ তালিকাভুক্ত করে বলে মনে হয় না এবং আমি ব্যক্তিগতভাবে এটি সহজতম উপায় বলে মনে করি।


2

সম্ভবত এটি এটি করার একটি ভাল উপায়:

সংস্করণ 1 : ডেটা-ফাইলের অনুলিপি (কেবলমাত্র মাইসাম)

ssh server1
service mysql stop
cd $mysql-data-dir
rsync -avz dirs-or-files server2:$mysql-data-dir
service mysql start

ssh সার্ভার 2 পরিষেবা পুনরায় আরম্ভ করুন mysql

  • যদি আপনার ডাটাবেস ফাইলগুলি কেবল পঠিত হয় তবে আপনি সার্ভারটি থামিয়ে দিতে পারেন।

সংস্করণ 2 : mysqldump

পিগজ ইনস্টল করুন - আধুনিক জিওন বা ওপ্টরন প্রসেসরের উপর, বিশেষত যখন আপনার 2 বা ততোধিক সিপিইউ থাকে, এটি জিজিপের চেয়ে অনেক বেশি দ্রুত।

ssh server1 
mysqldump ... | pigz > backup-YYMDD.sql.gz
rsync backup-YYMDD.sql.gz server:location

ssh server2
pigz -dc location/backup-YYMDD.sql.gz | mysql ..

সংস্করণ 3 : মাস্টার / স্লেভ + মাইএসকিএলডম্প / ফাইল-অনুলিপি

In HA environment you should use the following trick:
setup slave server & do all backups from it
before backups - do "slave stop"; 
then do version 1 or version 2

লিপি:

touch full.start
mysqladmin -h slave-db stop-slave
echo "show slave status \G" | mysql -h slave-db > FULL/comfi-$NOW.master-position
/usr/bin/mysqldump -h slave-db --default-character-set=utf8 -A --opt --skip-lock-tables | pigz > "FULL/XXXX-$NOW.sql.gz"
mysqladmin -h slave-db start-slave
touch full.end

ln -fs "FULL/XXXX-$NOW.sql.gz" FULL.sql.gz

দ্রষ্টব্য:

ছোট টেবিলগুলি অনুলিপি করতে ব্যবহার করুন:

ssh server1 mysqldump স্কিমা টেবিল | ssh সার্ভার 2 মাইএসকিএল স্কিমা


2

আমি পুরো ডাটাবেসটি একটি সার্ভার থেকে অন্য সার্ভারে স্থানান্তর করতে দুটি সহজ পদক্ষেপের পরামর্শ দেব।

পদক্ষেপ 1 : mysqldump ব্যবহার করে সোর্স সার্ভারে ডেটাবেসগুলির একটি সম্পূর্ণ ব্যাকআপ করুন ।

পদক্ষেপ 2 : আপনি গন্তব্য সার্ভারে সম্পূর্ণ ডাটাবেস স্থানান্তর করতে rsync কমান্ড ব্যবহার করতে পারেন ।

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