মাইএসকিউএল সার্ভার বড় আকারের ডাম্পগুলির আমদানিতে বাধা সৃষ্টি করে চলে গেছে


14

আমি আমার ম্যাকের সাথে স্থানীয় মাইএসকিএলে একটি বৃহত স্কয়ার ডাম্প (2 জিবি) আমদানির চেষ্টা করছি। আমি অতীতে এটি করতে সক্ষম হয়েছি (আমি এমএএমপি ব্যবহার করছিলাম) তবে এখন আমি 77575৮ লাইনে একটি এয়ারআর 2006 (HY000) পাই: মাইএসকিউএল সার্ভার যখনই আমি ডাম্পটি আমদানি করার চেষ্টা করি তখন চলে যায়। ডাটাবেসে ইনোডাব টেবিল রয়েছে।

এই সেটিংসটি সাহায্য করবে কিনা তা দেখার জন্য আমি আমার-ইনোডাব-হেভি -4 জি সিএনএফ ফাইলটি আমার মাই সিএনএফ-তে অনুলিপি করার চেষ্টা করেছি, তবে ভাগ্য নেই।

কি টুইট করতে কোন ধারণা?

আমি এখান থেকে "ম্যাক ওএস এক্স ভার্জ। 10.6 (x86, 64-বিট), ডিএমজি সংরক্ষণাগার" ব্যবহার করছি: http://dev.mysql.com/downloads/mysql/

উত্তর:


15

মাইএসকিউএল সংযোগের নীরব ঘাতকদের মধ্যে একটি হ'ল মাই এসকিউএল প্যাকেট। এমনকি মাইএসকিউএল প্রতিলিপিটির I / O থ্রেডও এর দ্বারা শিকার হতে পারে।

মতে মাইএসকিউএল ডকুমেন্টেশন

  • আপনি যদি ভুল বা খুব বড় সার্ভারে কোনও কোয়েরি পাঠান তবে আপনি এই ত্রুটিগুলিও পেতে পারেন can যদি মাইএসকিএলডি এমন একটি প্যাকেট গ্রহণ করে যা খুব বড় বা অর্ডার বহির্ভূত হয় তবে এটি ধরে নেয় যে ক্লায়েন্টের সাথে কিছু ভুল হয়েছে এবং সংযোগটি বন্ধ করে দিয়েছে। আপনার যদি বড় প্রশ্নগুলির প্রয়োজন হয় (উদাহরণস্বরূপ, আপনি যদি বড় বিএলওবি কলামের সাথে কাজ করছেন), আপনি সার্ভারের সর্বোচ্চ_নিযুক্ত_প্যাকটি ভেরিয়েবল সেট করে কোয়েরির সীমাটি বাড়িয়ে দিতে পারেন, যার মান 1MB এর ডিফল্ট মান। আপনার ক্লায়েন্ট প্রান্তে সর্বাধিক প্যাকেটের আকার বাড়াতে হবে। প্যাকেটের আকার নির্ধারণের বিষয়ে আরও তথ্য বিভাগ C.5.2.10, "প্যাকেটটি খুব বড়" দেওয়া আছে।

  • একটি INSERT বা REPLACE বিবৃতি যা দুর্দান্ত অনেকগুলি সারি সন্নিবেশ করায় এই ধরণের ত্রুটিও ঘটতে পারে। এই বিবৃতিগুলির মধ্যে একটিতে সারি সন্নিবেশ করানোর সংখ্যা নির্বিশেষে সার্ভারকে একটি অনুরোধ প্রেরণ করে; সুতরাং, আপনি প্রায়শই ইনসার্ট বা প্রতিস্থাপনের জন্য প্রেরিত সারির সংখ্যা হ্রাস করে ত্রুটিটি এড়াতে পারেন।

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

আপনি নিতে পারেন এমন দুটি (2) পন্থা থাকতে পারে:

অ্যাপোআচ # 1: --স্কিপ-এক্সটেন্ডেড-সন্নিবেশ ব্যবহার করে মাইএসকিএলড্প সম্পাদন করুন

এটি নিশ্চিত করবে যে মাইএসকিউএল প্যাকেটটি একাধিক বিএলওবি, টেক্সট ক্ষেত্রের সাথে সজ্জিত নয়। এই ভাবে এসকিউএল INSERT গুলি একবারে একটি করে সম্পাদিত হয়। এর প্রধান অসুবিধা হ'ল

  1. mysqldump অনেক বড় ump
  2. এই জাতীয় ডাম্প পুনরায় লোড করতে অনেক বেশি সময় নেয়।

অ্যাপোআচ # 2: সর্বাধিক_বিহীন_প্যাকেট বাড়ান

এটি পছন্দসই পদ্ধতি হতে পারে কারণ এটি বাস্তবায়ন কেবল একটি মাইএসকিএল পুনরায় আরম্ভ হবে। মাইএসকিউএল প্যাকেট কী তা বোঝা গেলে এটি পরিষ্কার হতে পারে।

"মাইএসকিউএল অভ্যন্তরীণ বোঝা" (আইএসবিএন 0-596-00957-7) এর 99 পৃষ্ঠা অনুসারে , এখানে অনুচ্ছেদ 1-3 রয়েছে যা এটি ব্যাখ্যা করছে:

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

এই বিকল্পের সাথে সম্পর্কিত আগ্রহের কোডটি স্কুয়েল / নেট_জারি.সি.সি তে পাওয়া যায় । কটাক্ষপাত my_net_read () , তারপর থেকে কল অনুসরণ my_real_read () এবং বিশেষভাবে নজর দিতে net_realloc ()

এই পরিবর্তনশীলটি অনেকগুলি স্ট্রিং ফান্টাক্টনের ফলাফলের দৈর্ঘ্যও সীমাবদ্ধ করে। দেখুন SQL / field.cc এবং SQL / intem_strfunc.cc বিস্তারিত জানার জন্য।

এই ব্যাখ্যাটি দেওয়া হয়েছে, বাল্ক INSERT গুলি তৈরি করা একটি MySQL প্যাকেট বরং দ্রুত লোড / আনলোড করবে। এটি বিশেষত সত্য যখন ম্যাক্স_এলড_প্যাক্টটি দেওয়া ডেটা লোড করার জন্য খুব ছোট হয়।

উপসংহার

মাইএসকিউএল এর বেশিরভাগ ইনস্টলগুলিতে, আমি সাধারণত এটি 256 এম বা 512 এম তে সেট করি। যখন ডেটা লোডগুলি "মাইএসকিউএল চলে গেছে" ত্রুটি তৈরি করে তখন আপনার বড় মানগুলির সাথে পরীক্ষা করা উচিত।


আমি max_allowed_packet৯০০ এম তে স্থির হওয়ার চেষ্টা করেছি এবং আমি ব্যবহার করছিলাম --skip-extended-insert(এবং আপনি ঠিক বলেছেন - যা হুগ ডিবি-ডাম্প তৈরি করে) তবে এটি এখনও ব্যর্থ হয়। আমি এখন ডাম্পের একটি নির্দিষ্ট লাইনের সন্দেহ করছি যে আমি সম্ভবত প্রায় কাজ করতে পারি। তবে এটি এখনও অদ্ভুত - আমার সেন্টস সার্ভারে ডাম্প সূক্ষ্মভাবে আমদানি করা যেতে পারে।
নেক্সোক

আমি স্কেল ডাম্প থেকে একটি সন্নিবেশ সরিয়ে শেষ করেছি যা খুব, খুব দীর্ঘ লাইন ছিল। এটি এটি স্থির করে (এবং লাইনের প্রয়োজন ছিল না)।
নকসোক

বিটিডাব্লু দয়া করে নিশ্চিত করুন যে ম্যাকোএসএক্স অপারেটিং সিস্টেম এবং মাইএসকিউএল ডেটা ডাম্পের জন্য ডিফল্ট অক্ষরটি সমর্থিত হতে পারে।
RolandoMySQLDBA

@নাক্সভ - ডাম্পটিতে আপনি যে একটি লাইন সন্দেহ করছেন সে সম্পর্কে আমি কেবল কৌতূহলী। এর সাথে কি কোনও পাঠ্য বা বিএলওবি ক্ষেত্র জড়িত আছে ???
RolandoMySQLDBA

হ্যাঁ খুব দীর্ঘ পাঠ্যক্ষেত্র।
naxoc

2

সময় শেষ হওয়ার আগে এই আর কতক্ষণ চলবে? আপনার আমদানির জন্য তারা যথেষ্ট বড় কিনা তা নিশ্চিত করতে প্রথম পদক্ষেপটি সেটিংস wait_timeoutএবং interactive_timeoutসেটিংস চেক করার জন্য বাজি ধরতে পারে :

SHOW VARIABLES LIKE '%_timeout';
SET SESSION wait_timeout=28800;

ডিফল্টটি 8 ঘন্টা (28800) হয়, সুতরাং এটি সম্ভবত সমস্যা নয়। এই ইস্যুটির অন্যান্য ইঙ্গিত এখানে পাওয়া যাবে । যেটি দাঁড়িয়ে আছে তা হ'ল:

একটি পৃথক হোস্টে চলমান ক্লায়েন্ট অ্যাপ্লিকেশনটির সেই হোস্ট থেকে মাইএসকিউএল সার্ভারের সাথে সংযোগ স্থাপনের জন্য প্রয়োজনীয় সুযোগ-সুবিধা নেই।

প্রথমে অনুমতি যাচাই করুন, তবে তারপরে সম্ভাব্য সমস্যার তালিকার মধ্য দিয়ে যান।


এটি সমস্ত লোকালহোস্টে রয়েছে, তাই হয় আপনি কী বোঝাতে চাইছেন তা আমি বুঝতে পারি না বা এটি সমস্যা নয়। আপনি কি মাইএসকিএলের সুবিধাগুলি হিসাবে অনুমতিগুলি বোঝাতে চেয়েছিলেন?
নেক্সোক

2

হ্যাঁ সাধারণত ওয়েটটাইমআউট এবং ম্যাক্স_গ্ল্যাড_প্যাকেটগুলি খেলে আমাকে ত্রুটি বার্তাটিও পেতে দেয়।


এটি আমার পক্ষে কাজ করেনি। আমাকে ডাম্প ফাইলে এসকিএল সম্পাদনা করতে হয়েছিল এবং খুব দীর্ঘ লাইনটি মুছে ফেলতে হয়েছিল যা সমস্যার সৃষ্টি করছে।
নকসোক

কেউ বুঝতে পারে না এমন কিছু প্যারামিটার নিয়ে খেলতে হবে না
জেরেডেপ

2

এটি করা "সঠিক" জিনিস নাও হতে পারে তবে এটি কাজ করতে পারে (ঠিক আছে 'ঠিক আছে?):

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

আমি আপনার বাক্সে যে পরিমাণ র‍্যাম পেয়েছে তার সাথে কিছু করতে পারলে আমি কিছুটা কৌতূহলী। মাইএসকিউএল এটি চালানোর সময় পুরো ডাম্পটিকে মেমরিতে লোড করে? আমি জানি না ... তবে যদি আপনার কাছে কেবল 2 জিবি র‌্যাম থাকে এবং এর কিছুটি আপনার ওএস এবং অন্যান্য অ্যাপ্লিকেশনগুলি ব্যবহার করে থাকে, তবে এটি সমস্যা হতে পারে।


2

অন্যান্য পরামর্শগুলির সাথে যাদের সাফল্য নেই তারা বিগডাম্প পিএইচপি স্তম্ভিত মাইএসকিউএল ডাম্প আমদানিকারী স্ক্রিপ্টটি একবার দেখে বিবেচনা করতে পারেন

এটি মাইএসকিউএলে বড় ডেটাবেস ডাম্পগুলি আমদানির জন্য কার্যকর ar আমি এটিকে সফলভাবে আমার স্থানীয় বিকাশের পরিবেশে একটি বৃহত মাইএসকিউএল ডাম্প আমদানি করতে ব্যবহার করেছি (আমি এই ক্ষেত্রে এমএএমপি ব্যবহার করছি)।

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