এটি হল pt-findp কমান্ড যা আমাদের একাধিক বিনামূল্যের অনলাইন ওয়ার্কস্টেশন যেমন উবুন্টু অনলাইন, ফেডোরা অনলাইন, উইন্ডোজ অনলাইন এমুলেটর বা MAC OS অনলাইন এমুলেটর ব্যবহার করে OnWorks ফ্রি হোস্টিং প্রদানকারীতে চালানো যেতে পারে।
কার্যক্রম:
NAME এর
pt-ফাইন্ড - MySQL টেবিল খুঁজুন এবং ক্রিয়া সম্পাদন করুন, যেমন GNU find।
সাইনোপিসিস
ব্যবহার: পিটি-ফাইন্ড [বিকল্প] [ডেটাবেস]
pt-ফাইন্ড মাইএসকিউএল টেবিলের জন্য অনুসন্ধান করে এবং জিএনইউ ফাইন্ডের মতো ক্রিয়া সম্পাদন করে। ডিফল্ট কর্ম
ডাটাবেস এবং টেবিলের নাম প্রিন্ট করা হয়।
এক দিনের বেশি আগে তৈরি করা সমস্ত টেবিল খুঁজুন, যা MyISAM ইঞ্জিন ব্যবহার করে এবং তাদের মুদ্রণ করে
নাম:
pt-ফাইন্ড --ctime +1 --ইঞ্জিন MyISAM
InnoDB টেবিল খুঁজুন এবং তাদের MyISAM এ রূপান্তর করুন:
pt-find --engine InnoDB --exec "পরিবর্তন টেবিল %D.%N ইঞ্জিন=MyISAM"
নাম_sid_pid নামকরণ অনুসরণ করে এমন একটি প্রক্রিয়ার দ্বারা তৈরি টেবিল খুঁজুন যা আর বিদ্যমান নেই
কনভেনশন, এবং তাদের অপসারণ.
pt-find --connection-id '\D_\d+_(\d+)$' --server-id '\D_(\d+)_\d+$' --exec- প্লাস "ড্রপ টেবিল %s"
পরীক্ষা এবং জাঙ্ক ডাটাবেসে খালি টেবিল খুঁজুন এবং সেগুলি মুছুন:
পিটি-ফাইন্ড -- খালি আবর্জনা পরীক্ষা -- এক্সেক-প্লাস "ড্রপ টেবিল %s"
মোট আকারে পাঁচ গিগাবাইটের বেশি টেবিল খুঁজুন:
pt-find --tablesize +5G
সমস্ত টেবিল খুঁজুন এবং তাদের মোট ডেটা এবং সূচক আকার মুদ্রণ করুন এবং প্রথমে সবচেয়ে বড় টেবিলগুলি সাজান
(বাছাই একটি ভিন্ন প্রোগ্রাম, উপায় দ্বারা)।
pt-find --printf "%T\t%D.%N\n" | sort -rn
উপরের হিসাবে, কিন্তু এইবার, উত্তরসূরির জন্য ডাটাবেসে ডেটা প্রবেশ করান:
pt-find --noquote --exec "INSERT INTO sysdata.tblsize(db, tbl, size) VALUES('%D', '%N', %T)"
ঝুঁকি
পারকোনা টুলকিট পরিপক্ক, বাস্তব জগতে প্রমাণিত, এবং ভালভাবে পরীক্ষিত, তবে সমস্ত ডাটাবেস
সরঞ্জামগুলি সিস্টেম এবং ডাটাবেস সার্ভারের জন্য ঝুঁকি তৈরি করতে পারে। এই টুল ব্যবহার করার আগে,
অনুগ্রহ:
· টুলের ডকুমেন্টেশন পড়ুন
· টুলটির পরিচিত "বাগস" পর্যালোচনা করুন
· একটি নন-প্রোডাকশন সার্ভারে টুলটি পরীক্ষা করুন
আপনার প্রোডাকশন সার্ভারের ব্যাকআপ নিন এবং ব্যাকআপগুলি যাচাই করুন৷
বর্ণনাঃ
পিটি-ফাইন্ড মাইএসকিউএল টেবিলের সন্ধান করে যা আপনার নির্দিষ্ট করা পরীক্ষায় উত্তীর্ণ হয় এবং ক্রিয়া সম্পাদন করে
আপনি নির্দিষ্ট করুন। ডিফল্ট অ্যাকশন হল ডাটাবেস এবং টেবিলের নাম STDOUT এ প্রিন্ট করা।
pt-ফাইন্ড জিএনইউ ফাইন্ডের চেয়ে সহজ। এটি আপনাকে জটিল অভিব্যক্তি নির্দিষ্ট করার অনুমতি দেয় না
কমান্ড লাইনে।
পিটি-ফাইন্ড যখন সম্ভব তখন টেবিল দেখায় এবং প্রয়োজনে টেবিলের অবস্থা দেখায়।
অনুযায়ী OPTION ধরনের
বিকল্প তিন ধরনের আছে: স্বাভাবিক বিকল্প, যা কিছু আচরণ নির্ধারণ বা
বিন্যাস; পরীক্ষা, যা টেবিলের তালিকায় একটি টেবিল অন্তর্ভুক্ত করা উচিত কিনা তা নির্ধারণ করে
পাওয়া গেছে এবং কর্ম, যা টেবিল pt-find খুঁজে কিছু করতে.
pt-find স্ট্যান্ডার্ড Getopt::লং অপশন পার্সিং ব্যবহার করে, তাই আপনার ডবল ড্যাশ ব্যবহার করা উচিত
দীর্ঘ বিকল্প নামের সামনে, GNU সন্ধানের বিপরীতে।
বিকল্প
এই টুলটি অতিরিক্ত কমান্ড-লাইন আর্গুমেন্ট গ্রহণ করে। "SYNOPSIS" এবং ব্যবহার পড়ুন
বিস্তারিত তথ্যের জন্য।
--আস্ক-পাস
MySQL এর সাথে সংযোগ করার সময় একটি পাসওয়ার্ডের জন্য অনুরোধ করুন।
--কেস-সংবেদনশীল
নির্দিষ্ট করে যে সমস্ত রেগুলার এক্সপ্রেশন সার্চ কেস-সংবেদনশীল।
-- অক্ষর সেট
সংক্ষিপ্ত রূপ: -ক; প্রকার: স্ট্রিং
ডিফল্ট অক্ষর সেট। মানটি utf8 হলে, STDOUT-এ পার্লের বিনমোডকে utf8-এ সেট করে,
DBD::mysql-এ mysql_enable_utf8 বিকল্পটি পাস করে এবং SET NAMES UTF8 এর পরে চালায়
MySQL এর সাথে সংযোগ করা হচ্ছে। অন্য কোনো মান UTF8 স্তর ছাড়াই STDOUT-এ বিনমোড সেট করে,
এবং MySQL এর সাথে সংযোগ করার পরে SET NAMES চালায়।
--config
প্রকার: অ্যারে
কনফিগার ফাইলের এই কমা দ্বারা পৃথক করা তালিকা পড়ুন; নির্দিষ্ট করা হলে, এটি অবশ্যই প্রথম হতে হবে
কমান্ড লাইনে বিকল্প।
--তথ্যশালা
সংক্ষিপ্ত রূপ: -D; প্রকার: স্ট্রিং
এই ডাটাবেসের সাথে সংযোগ করুন।
--দিনের শুরু
সময় পরিমাপ করুন ("--mmin" ইত্যাদির জন্য) এর চেয়ে আজকের শুরু থেকে
বর্তমান সময়.
--ডিফল্ট-ফাইল
সংক্ষিপ্ত রূপ: -F; প্রকার: স্ট্রিং
প্রদত্ত ফাইল থেকে শুধুমাত্র mysql অপশন পড়ুন। আপনাকে অবশ্যই একটি পরম পথের নাম দিতে হবে।
--help
সাহায্য দেখান এবং প্রস্থান করুন।
--হোস্ট
সংক্ষিপ্ত রূপ: -h; প্রকার: স্ট্রিং
হোস্টের সাথে সংযোগ করুন।
--বা
OR এর সাথে পরীক্ষাগুলি একত্রিত করুন, AND নয়।
ডিফল্টরূপে, পরীক্ষাগুলিকে মূল্যায়ন করা হয় যেন তাদের মধ্যে একটি AND ছিল৷ এই বিকল্প
এটিকে OR এ স্যুইচ করে।
অপশন পার্সিং নিজেই pt-ফাইন্ড দ্বারা প্রয়োগ করা হয় না, তাই আপনি জটিল নির্দিষ্ট করতে পারবেন না
বন্ধনী সহ অভিব্যক্তি এবং OR এবং AND এর মিশ্রণ।
--পাসওয়ার্ড
সংক্ষিপ্ত রূপ: -p; প্রকার: স্ট্রিং
সংযোগ করার সময় ব্যবহার করার জন্য পাসওয়ার্ড। যদি পাসওয়ার্ডে কমা থাকে তবে সেগুলিকে এস্কেপ করতে হবে৷
ব্যাকস্ল্যাশ সহ: "পরীক্ষা\,ple"
--পিড
প্রকার: স্ট্রিং
প্রদত্ত পিআইডি ফাইল তৈরি করুন। পিআইডি ফাইলটি ইতিমধ্যে বিদ্যমান থাকলে টুলটি শুরু হবে না এবং
এতে থাকা PID বর্তমান PID থেকে আলাদা। তবে পিআইডি ফাইল হলে
বিদ্যমান এবং এতে থাকা পিআইডি আর চলছে না, টুলটি পিআইডি ওভাররাইট করবে
বর্তমান পিআইডি সহ ফাইল করুন। পিআইডি ফাইলটি স্বয়ংক্রিয়ভাবে সরানো হয় যখন টুলটি প্রস্থান করে।
--বন্দর
সংক্ষিপ্ত রূপ: -P; প্রকার: int
সংযোগের জন্য ব্যবহার করার জন্য পোর্ট নম্বর।
--[না] উদ্ধৃতি
ডিফল্ট: হ্যাঁ
MySQL এর স্ট্যান্ডার্ড ব্যাকটিক চরিত্রের সাথে মাইএসকিউএল শনাক্তকারীর নাম উদ্ধৃত করে।
পরীক্ষা চালানোর পরে এবং অ্যাকশন চালানোর আগে উদ্ধৃতি ঘটে।
--সেট-ভার্স
প্রকার: অ্যারে
"variable=value" জোড়ার এই কমা দ্বারা পৃথক করা তালিকায় MySQL ভেরিয়েবল সেট করুন।
ডিফল্টরূপে, টুল সেট করে:
অপেক্ষা_সময় শেষ = 10000
কমান্ড লাইনে নির্দিষ্ট করা ভেরিয়েবল এই ডিফল্টগুলিকে ওভাররাইড করে। উদাহরণ স্বরূপ,
"--set-vars wait_timeout=500" নির্দিষ্ট করা 10000-এর ডিফল্ট মানকে ওভাররাইড করে।
টুলটি একটি সতর্কতা প্রিন্ট করে এবং একটি ভেরিয়েবল সেট করা না গেলে চলতে থাকে।
--সকেট
ছোট ফর্ম; প্রকার: স্ট্রিং
সংযোগের জন্য ব্যবহার করার জন্য সকেট ফাইল।
-- ব্যবহারকারী
সংক্ষিপ্ত রূপ: -u; প্রকার: স্ট্রিং
বর্তমান ব্যবহারকারী না হলে লগইন করার জন্য ব্যবহারকারী।
--সংস্করণ
সংস্করণ দেখান এবং প্রস্থান করুন।
--[কোন] সংস্করণ-চেক
ডিফল্ট: হ্যাঁ
Percona Toolkit, MySQL, এবং অন্যান্য প্রোগ্রামগুলির সর্বশেষ সংস্করণের জন্য পরীক্ষা করুন৷
এটি একটি স্ট্যান্ডার্ড "স্বয়ংক্রিয়ভাবে আপডেটের জন্য চেক করুন" বৈশিষ্ট্য, দুটি অতিরিক্ত সহ
বৈশিষ্ট্য প্রথমত, টুলটি স্থানীয় সিস্টেমে অন্যান্য প্রোগ্রামের সংস্করণ পরীক্ষা করে
এর নিজস্ব সংস্করণ ছাড়াও। উদাহরণস্বরূপ, এটি প্রতিটি MySQL সার্ভারের সংস্করণ পরীক্ষা করে
এটি পার্ল এবং পার্ল মডিউল DBD::mysql-এর সাথে সংযোগ করে। দ্বিতীয়ত, এটি পরীক্ষা করে এবং সতর্ক করে
পরিচিত সমস্যা সহ সংস্করণ সম্পর্কে। উদাহরণস্বরূপ, MySQL 5.5.25-এ একটি জটিল বাগ ছিল এবং
5.5.25a হিসাবে পুনরায় প্রকাশিত হয়েছিল৷
যেকোন আপডেট বা পরিচিত সমস্যা টুলের স্বাভাবিক আউটপুটের আগে STDOUT এ প্রিন্ট করা হয়।
এই বৈশিষ্ট্যটি কখনই টুলের স্বাভাবিক ক্রিয়াকলাপে হস্তক্ষেপ করবে না।
আরো তথ্যের জন্য, যান .
পরীক্ষা-নিরীক্ষা
বেশিরভাগ পরীক্ষাগুলি টেবিলের স্থিতি প্রদর্শনের আউটপুটের একটি কলামের বিরুদ্ধে কিছু মানদণ্ড পরীক্ষা করে। সংখ্যাসূচক
আর্গুমেন্টগুলিকে n-এর চেয়ে বেশির জন্য +n, n-এর কমের জন্য -n এবং ঠিক n-এর জন্য n হিসাবে নির্দিষ্ট করা যেতে পারে
n সমস্ত সংখ্যাসূচক বিকল্প k, M বা G (1_024,) এর একটি ঐচ্ছিক প্রত্যয় গুণক নিতে পারে
যথাক্রমে 1_048_576, এবং 1_073_741_824)। সমস্ত নিদর্শন পার্ল রেগুলার এক্সপ্রেশন
('man perlre' দেখুন) যদি না SQL LIKE প্যাটার্ন হিসাবে নির্দিষ্ট করা হয়।
তারিখ এবং সময়গুলি একই তাত্ক্ষণিকের সাপেক্ষে পরিমাপ করা হয়, যখন pt-find প্রথমে জিজ্ঞাসা করে
ডাটাবেস সার্ভার কতটা বাজে। সমস্ত তারিখ এবং সময় ম্যানিপুলেশন SQL এ সম্পন্ন করা হয়, তাই যদি আপনি
5 দিন আগে সংশোধিত টেবিল খুঁজে বের করতে বলুন, যা SELECT-এ অনুবাদ করে
DATE_SUB(CURRENT_TIMESTAMP, INTERVAL 5 দিন)। আপনি যদি "--দিন-শুরু" উল্লেখ করেন, যদি অবশ্যই তা হয়
পরিবর্তে CURRENT_DATE এর সাথে সম্পর্কিত।
যাইহোক, টেবিলের আকার এবং অন্যান্য মেট্রিক্স সময়ের সাথে সাথে তাত্ক্ষণিকভাবে সামঞ্জস্যপূর্ণ নয়। এটা হতে পারে
MySQL-এর জন্য সমস্ত SHOW কোয়েরি প্রক্রিয়া করতে কিছু সময় নিন, এবং pt-find কিছুই করতে পারে না
যে সম্পর্কে এই পরিমাপ তারা নেওয়া হয় সময় হিসাবে হয়.
আপনার যদি এমন কিছু পরীক্ষার প্রয়োজন হয় যা এই তালিকায় নেই, একটি বাগ রিপোর্ট ফাইল করুন এবং আমি পিটি-ফাইন্ড উন্নত করব
তোমার জন্য. এটা সত্যিই সহজ.
--অটোইঙ্ক
প্রকার: স্ট্রিং; গ্রুপ: পরীক্ষা
টেবিলের পরবর্তী AUTO_INCREMENT হল n। এটি Auto_increment কলাম পরীক্ষা করে।
--avgrowlen
প্রকার: আকার; গ্রুপ: পরীক্ষা
টেবিলের গড় সারি লেন হল n বাইট। এটি Avg_row_length কলাম পরীক্ষা করে। উল্লেখিত
যেখানে Avg_row_length NULL তা পরীক্ষা করার জন্য আকার "NULL" হতে পারে।
--চেকসাম
প্রকার: স্ট্রিং; গ্রুপ: পরীক্ষা
টেবিল চেকসাম হল n. এটি চেকসাম কলাম পরীক্ষা করে।
--cmin
প্রকার: আকার; গ্রুপ: পরীক্ষা
টেবিলটি n মিনিট আগে তৈরি করা হয়েছিল। এটি Create_time কলাম পরীক্ষা করে।
--সমষ্টি
প্রকার: স্ট্রিং; গ্রুপ: পরীক্ষা
সারণী সমষ্টি প্যাটার্ন মেলে. এটি কোলেশন কলাম পরীক্ষা করে।
--কলাম-নাম
প্রকার: স্ট্রিং; গ্রুপ: পরীক্ষা
টেবিলের একটি কলামের নাম প্যাটার্নের সাথে মেলে।
--কলাম-টাইপ
প্রকার: স্ট্রিং; গ্রুপ: পরীক্ষা
টেবিলের একটি কলাম এই ধরনের (কেস-সংবেদনশীল) সাথে মেলে।
প্রকারের উদাহরণ হল: varchar, char, int, smallint, bigint, decimal, year, timestamp,
টেক্সট, enum
--মন্তব্য
প্রকার: স্ট্রিং; গ্রুপ: পরীক্ষা
টেবিল মন্তব্য প্যাটার্ন মেলে. এটি মন্তব্য কলাম পরীক্ষা করে।
--সংযোগ-আইডি
প্রকার: স্ট্রিং; গ্রুপ: পরীক্ষা
সারণীর নামের অস্তিত্ব নেই MySQL সংযোগ আইডি। এটি একটি জন্য টেবিলের নাম পরীক্ষা করে
প্যাটার্ন এই পরীক্ষার যুক্তি অবশ্যই একটি পার্ল রেগুলার এক্সপ্রেশন হতে হবে যা ক্যাপচার করে
এই মত সংখ্যা: (\d+)। যদি টেবিলের নাম প্যাটার্নের সাথে মিলে যায়, তাহলে এই ক্যাপচার করা সংখ্যাগুলি
কিছু প্রক্রিয়ার MySQL সংযোগ আইডি হিসাবে নেওয়া হয়। যদি সংযোগ না হয়
সম্পূর্ণ প্রসেসলিস্ট দেখান অনুযায়ী বিদ্যমান, পরীক্ষাটি সত্য হয়। কানেকশন আইডি থাকলে
pt-ফাইন্ডের নিজস্ব সংযোগ আইডি থেকে বড়, নিরাপত্তার জন্য পরীক্ষাটি মিথ্যা প্রদান করে।
তুমি কেন এটা করতে চাও? আপনি যদি MySQL স্টেটমেন্ট-ভিত্তিক প্রতিলিপি ব্যবহার করেন, আপনি
সম্ভবত সমস্যা অস্থায়ী টেবিল কারণ হতে পারে জানি. আপনি কাছাকাছি কাজ করতে বেছে নিতে পারেন
এটি অস্থায়ী টেবিলের পরিবর্তে অনন্য নামের সাথে বাস্তব টেবিল তৈরি করে। একমুখী
এটি করার জন্য টেবিলের শেষে আপনার সংযোগ আইডি যুক্ত করতে হবে, এইভাবে:
scratch_table_12345. এটি নিশ্চিত করে যে টেবিলের নামটি অনন্য এবং আপনাকে একটি উপায় করতে দেয়
এটি কোন সংযোগের সাথে যুক্ত ছিল তা খুঁজুন। এবং সম্ভবত সবচেয়ে গুরুত্বপূর্ণ, যদি
সংযোগ আর বিদ্যমান নেই, আপনি অনুমান করতে পারেন সংযোগটি পরিষ্কার না করেই মারা গেছে
তার টেবিল, এবং এই টেবিল অপসারণের জন্য একটি প্রার্থী.
এইভাবে আমি স্ক্র্যাচ টেবিল পরিচালনা করি, এবং সেই কারণেই আমি এই পরীক্ষাটি pt-ফাইন্ডে অন্তর্ভুক্ত করেছি।
আমি "--সংযোগ-আইডি"-তে যে যুক্তিটি ব্যবহার করি তা হল "\D_(\d+)$"। যে একটি সঙ্গে টেবিল খুঁজে বের করে
শেষে সংখ্যার সিরিজ, একটি আন্ডারস্কোর এবং কিছু অ-সংখ্যা অক্ষর দ্বারা পূর্বে
(পরবর্তী মানদণ্ডটি আমাকে শেষে একটি তারিখ সহ টেবিল পরীক্ষা করতে বাধা দেয়, যা
লোকেরা করতে থাকে: baron_scratch_2007_05_07 উদাহরণস্বরূপ)। রাখাই ভালো
স্ক্র্যাচ টেবিল অবশ্যই পৃথক.
আপনি যদি এটি করেন, নিশ্চিত করুন যে ব্যবহারকারীর পিটি-ফাইন্ড প্রসেস-এর বিশেষাধিকারের মতো রান করে!
অন্যথায় এটি শুধুমাত্র একই ব্যবহারকারীর কাছ থেকে সংযোগ দেখতে পাবে এবং কিছু টেবিল মনে করতে পারে
তারা এখনও ব্যবহারে থাকা অবস্থায় সরানোর জন্য প্রস্তুত। নিরাপত্তার জন্য, পিটি-ফাইন্ড এটি পরীক্ষা করে
আপনি.
এছাড়াও "--server-id" দেখুন।
--createopts
প্রকার: স্ট্রিং; গ্রুপ: পরীক্ষা
টেবিল তৈরি বিকল্প প্যাটার্ন মেলে. এটি Create_options কলাম পরীক্ষা করে।
--ctime
প্রকার: আকার; গ্রুপ: পরীক্ষা
টেবিলটি n দিন আগে তৈরি করা হয়েছিল। এটি Create_time কলাম পরীক্ষা করে।
--ডেটাফ্রি
প্রকার: আকার; গ্রুপ: পরীক্ষা
টেবিলে এন বাইট খালি স্থান রয়েছে। এটি ডেটা_মুক্ত কলাম পরীক্ষা করে। নির্দিষ্ট আকার
ডেটা_ফ্রি কোথায় NULL তা পরীক্ষা করতে "NULL" হতে পারে।
--ডেটাসাইজ
প্রকার: আকার; গ্রুপ: পরীক্ষা
টেবিল ডেটা এন বাইট স্থান ব্যবহার করে। এটি ডেটা_লেংথ কলাম পরীক্ষা করে। উল্লেখিত
ডেটা_দৈর্ঘ্য কোথায় NULL তা পরীক্ষা করার জন্য আকার "NULL" হতে পারে।
--dblike
প্রকার: স্ট্রিং; গ্রুপ: পরীক্ষা
ডাটাবেসের নাম SQL LIKE প্যাটার্নের সাথে মেলে।
--dbregex
প্রকার: স্ট্রিং; গ্রুপ: পরীক্ষা
ডাটাবেস নাম এই প্যাটার্ন মেলে.
-- খালি
গ্রুপ: পরীক্ষা
টেবিলে কোনো সারি নেই। এটি সারি কলাম পরীক্ষা করে।
--ইঞ্জিন
প্রকার: স্ট্রিং; গ্রুপ: পরীক্ষা
টেবিল স্টোরেজ ইঞ্জিন এই প্যাটার্ন মেলে. এটি ইঞ্জিন কলাম, বা ইন পরীক্ষা করে
MySQL এর আগের সংস্করণ, টাইপ কলাম।
--ফাংশন
প্রকার: স্ট্রিং; গ্রুপ: পরীক্ষা
ফাংশন সংজ্ঞা প্যাটার্ন মেলে.
--সূচক আকার
প্রকার: আকার; গ্রুপ: পরীক্ষা
টেবিলের সূচীগুলি এন বাইট স্থান ব্যবহার করে। এটি Index_length কলাম পরীক্ষা করে। দ্য
Index_length NULL কোথায় তা পরীক্ষা করার জন্য নির্দিষ্ট আকার "NULL" হতে পারে।
--কিমি
প্রকার: আকার; গ্রুপ: পরীক্ষা
টেবিল n মিনিট আগে চেক করা হয়েছে. এটি Check_time কলাম পরীক্ষা করে।
--কিটাইম
প্রকার: আকার; গ্রুপ: পরীক্ষা
টেবিল n দিন আগে চেক করা হয়েছে. এটি Check_time কলাম পরীক্ষা করে।
--mmin
প্রকার: আকার; গ্রুপ: পরীক্ষা
টেবিলটি শেষবার n মিনিট আগে সংশোধন করা হয়েছিল। এটি Update_time কলাম পরীক্ষা করে।
--এমটাইম
প্রকার: আকার; গ্রুপ: পরীক্ষা
সারণী সর্বশেষ পরিবর্তন করা হয়েছিল n দিন আগে। এটি Update_time কলাম পরীক্ষা করে।
--প্রক্রিয়া
প্রকার: স্ট্রিং; গ্রুপ: পরীক্ষা
পদ্ধতি সংজ্ঞা প্যাটার্ন মেলে.
-- সারি বিন্যাস
প্রকার: স্ট্রিং; গ্রুপ: পরীক্ষা
টেবিল সারি বিন্যাস প্যাটার্ন মেলে. এটি Row_format কলাম পরীক্ষা করে।
--সারি
প্রকার: আকার; গ্রুপ: পরীক্ষা
টেবিলে n সারি আছে। এটি সারি কলাম পরীক্ষা করে। নির্দিষ্ট আকার হতে পারে "NULL" থেকে
পরীক্ষা করুন যেখানে সারি শূন্য।
--সার্ভার-আইডি
প্রকার: স্ট্রিং; গ্রুপ: পরীক্ষা
টেবিলের নামের মধ্যে সার্ভার আইডি রয়েছে। যদি আপনি নামকরণের সাথে অস্থায়ী টেবিল তৈরি করেন
কনভেনশন "--সংযোগ-আইডি" এ ব্যাখ্যা করা হয়েছে, তবে সার্ভারের সার্ভার আইডিও যোগ করুন
যা টেবিল তৈরি করা হয়, তাহলে আপনি টেবিলগুলি নিশ্চিত করতে এই প্যাটার্ন ম্যাচ ব্যবহার করতে পারেন
তারা যে সার্ভারে তৈরি করা হয়েছে তাতেই ড্রপ করা হয়েছে। এটি একটি টেবিল হতে বাধা দেয়
এটি ব্যবহার করার সময় দুর্ঘটনাক্রমে একটি স্লেভের উপর ড্রপ করা হয়েছে (প্রদান করা হয়েছে যে আপনার সার্ভার আইডি রয়েছে৷
সমস্ত অনন্য, যা তাদের প্রতিলিপি কাজ করার জন্য হওয়া উচিত)।
উদাহরণস্বরূপ, মাস্টারে (সার্ভার আইডি 22) আপনি একটি টেবিল তৈরি করেন যাকে বলা হয়
scratch_table_22_12345. আপনি যদি স্লেভে (সার্ভার আইডি 23) এই টেবিলটি দেখতে পান, তাহলে আপনি হতে পারেন
12345 এরকম কোন সংযোগ না থাকলে এটি নিরাপদে বাদ দেওয়া যেতে পারে বলে মনে করেন। কিন্তু যদি আপনিও করেন
নামটিকে "--সার্ভার-আইডি '\D_(\d+)_\d+$'" এর সাথে সার্ভার আইডির সাথে মেলাতে বাধ্য করুন, টেবিল
ক্রীতদাসের উপর ফেলে দেওয়া হবে না।
--টেবিল আকার
প্রকার: আকার; গ্রুপ: পরীক্ষা
টেবিল n বাইট স্থান ব্যবহার করে। এটি ডেটা_দৈর্ঘ্য এবং সূচক_দৈর্ঘ্যের সমষ্টি পরীক্ষা করে
কলাম.
--tbllike
প্রকার: স্ট্রিং; গ্রুপ: পরীক্ষা
টেবিলের নাম SQL LIKE প্যাটার্নের সাথে মেলে।
--tblregex
প্রকার: স্ট্রিং; গ্রুপ: পরীক্ষা
টেবিল নাম এই প্যাটার্ন মেলে.
--tblversion
প্রকার: আকার; গ্রুপ: পরীক্ষা
টেবিল সংস্করণ n. এটি সংস্করণ কলাম পরীক্ষা করে।
--ট্রিগার
প্রকার: স্ট্রিং; গ্রুপ: পরীক্ষা
ট্রিগার অ্যাকশন স্টেটমেন্ট প্যাটার্নের সাথে মেলে।
--ট্রিগার-টেবিল
প্রকার: স্ট্রিং; গ্রুপ: পরীক্ষা
"--ট্রিগার" টেবিল ম্যাচিং প্যাটার্নে সংজ্ঞায়িত করা হয়েছে।
--দর্শন
প্রকার: স্ট্রিং; গ্রুপ: পরীক্ষা
এই প্যাটার্নের সাথে মিলে যায় দৃশ্য তৈরি করুন।
ক্রিয়াগুলি
"--exec-plus" ক্রিয়াটি অন্য সব কিছুর পরে ঘটে, কিন্তু অন্যথায় ক্রিয়াগুলি একটিতে ঘটে৷
অনির্দিষ্ট আদেশ। আপনার যদি নির্ধারকতার প্রয়োজন হয়, একটি বাগ রিপোর্ট ফাইল করুন এবং আমি এটি যোগ করব
বৈশিষ্ট্য।
--exec
প্রকার: স্ট্রিং; গ্রুপ: কর্ম
পাওয়া প্রতিটি আইটেম সঙ্গে এই SQL চালান. এসকিউএল এস্কেপ এবং ফরম্যাটিং থাকতে পারে
নির্দেশাবলী ("--printf" দেখুন)।
--exec-dsn
প্রকার: স্ট্রিং; গ্রুপ: কর্ম
"--exec" দিয়ে এসকিউএল চালানোর সময় ব্যবহার করার জন্য কী-মান বিন্যাসে একটি DSN নির্দিষ্ট করুন এবং
"--exec-plus"। নির্দিষ্ট করা হয়নি এমন কোনো মান কমান্ড-লাইন আর্গুমেন্ট থেকে উত্তরাধিকারসূত্রে প্রাপ্ত।
--exec-plus
প্রকার: স্ট্রিং; গ্রুপ: কর্ম
একযোগে সমস্ত আইটেম দিয়ে এই SQL এক্সিকিউট করুন। এই বিকল্পটি "--exec" এর মত নয়। সেখানে
কোন পলায়ন বা বিন্যাস নির্দেশাবলী; জন্য শুধুমাত্র একটি বিশেষ স্থানধারক আছে
ডাটাবেস এবং টেবিলের নামের তালিকা, %s। পাওয়া টেবিলের তালিকা যোগদান করা হবে
একসাথে কমা এবং প্রতিস্থাপিত যেখানে আপনি %s রাখুন।
আপনি এটি ব্যবহার করতে পারেন, উদাহরণস্বরূপ, আপনার পাওয়া সমস্ত টেবিল ড্রপ করতে:
ড্রপ টেবিল %s
এটি জিএনইউ ফাইন্ডের "-exec কমান্ড {} +" সিনট্যাক্সের মতো। শুধু এটা সম্পূর্ণ না
রহস্যময় এবং এটি আমাকে একটি কমান্ড-লাইন পার্সার লিখতে হবে না।
--ছাপা
গ্রুপ: কর্ম
ডাটাবেস এবং টেবিলের নাম মুদ্রণ করুন, একটি নতুন লাইন অনুসরণ করুন। এটি ডিফল্ট কর্ম হয়
যদি অন্য কোন কাজ নির্দিষ্ট করা না থাকে।
--printf
প্রকার: স্ট্রিং; গ্রুপ: কর্ম
স্ট্যান্ডার্ড আউটপুটে প্রিন্ট ফরম্যাট, '\' এস্কেপস এবং '%' নির্দেশাবলী ব্যাখ্যা করে।
পালানো হল ব্যাকস্ল্যাশ করা অক্ষর, যেমন \n এবং \t। পার্ল এই ব্যাখ্যা, তাই আপনি করতে পারেন
পার্ল জানেন যে কোনো পালাবার ব্যবহার করুন। নির্দেশাবলী %s দ্বারা প্রতিস্থাপিত হয়, এবং এই হিসাবে
লেখা, আপনি কোনো বিশেষ বিন্যাস নির্দেশনা যোগ করতে পারবেন না, যেমন ক্ষেত্রের প্রস্থ বা
প্রান্তিককরণ (যদিও আমি এটি করার উপায়গুলি নিয়ে চিন্তা করছি)।
এখানে নির্দেশাবলীর একটি তালিকা আছে. মনে রাখবেন যে তাদের অধিকাংশই কেবল কলাম থেকে আসে
টেবিল স্ট্যাটাস দেখান। যদি কলামটি NULL হয় বা বিদ্যমান না থাকে তবে আপনি একটি খালি স্ট্রিং পাবেন
আউটপুট. একটি % অক্ষর অনুসরণ করে যে কোন অক্ষর নিম্নলিখিত তালিকায় নেই
বাতিল (কিন্তু অন্য অক্ষর মুদ্রিত)।
CHAR ডেটা সোর্স নোট
---------------------------------------------------------------------------------------- --------------
একটি স্বয়ংক্রিয়_বৃদ্ধি
একটি গড়_সারি_দৈর্ঘ্য
গ চেকসাম
C Create_time
D ডেটাবেস ডাটাবেসের নাম যেখানে টেবিল থাকে
d ডেটা_দৈর্ঘ্য
ই ইঞ্জিন MySQL এর পুরানো সংস্করণে, এটি হল প্রকার
F ডেটা_মুক্ত
f Innodb_free মন্তব্য ক্ষেত্র থেকে পার্স করা হয়েছে
I Index_length
কে চেক_টাইম
এল কোলেশন
M সর্বোচ্চ_ডেটা_দৈর্ঘ্য
N নাম
হে মন্তব্য
P Create_options
# সারি_বিন্যাস
এস সারি
# টেবিল_দৈর্ঘ্য ডেটা_দৈর্ঘ্য + সূচক_দৈর্ঘ্য
U Update_time
ভি সংস্করণ
ডিএসএন বিকল্প
এই DSN বিকল্পগুলি একটি DSN তৈরি করতে ব্যবহৃত হয়। প্রতিটি অপশন দেওয়া আছে যেমন "option=value"।
বিকল্পগুলি কেস-সংবেদনশীল, তাই P এবং p একই বিকল্প নয়। থাকতে পারে না
"=" এর আগে বা পরে হোয়াইটস্পেস এবং যদি মানটিতে হোয়াইটস্পেস থাকে তবে এটি অবশ্যই উদ্ধৃত করা উচিত।
DSN বিকল্পগুলি কমা দ্বারা পৃথক করা হয়৷ সম্পূর্ণ বিবরণের জন্য percona-toolkit ম্যানপেজ দেখুন।
· এ
dsn: অক্ষর সেট; অনুলিপি: হ্যাঁ
ডিফল্ট অক্ষর সেট।
· ডি
dsn: ডাটাবেস; অনুলিপি: হ্যাঁ
ডিফল্ট ডাটাবেস।
· F
dsn: mysql_read_default_file; অনুলিপি: হ্যাঁ
প্রদত্ত ফাইল থেকে শুধুমাত্র ডিফল্ট বিকল্পগুলি পড়ুন
· জ
dsn: হোস্ট; অনুলিপি: হ্যাঁ
হোস্টের সাথে সংযোগ করুন।
· পি
dsn: পাসওয়ার্ড; অনুলিপি: হ্যাঁ
সংযোগ করার সময় ব্যবহার করার জন্য পাসওয়ার্ড। যদি পাসওয়ার্ডে কমা থাকে তবে সেগুলিকে এস্কেপ করতে হবে৷
ব্যাকস্ল্যাশ সহ: "পরীক্ষা\,ple"
· পি
dsn: পোর্ট; অনুলিপি: হ্যাঁ
সংযোগের জন্য ব্যবহার করার জন্য পোর্ট নম্বর।
। এস
dsn: mysql_socket; অনুলিপি: হ্যাঁ
সংযোগের জন্য ব্যবহার করার জন্য সকেট ফাইল।
· u
dsn: ব্যবহারকারী; অনুলিপি: হ্যাঁ
বর্তমান ব্যবহারকারী না হলে লগইন করার জন্য ব্যবহারকারী।
পরিবেশ
পরিবেশ পরিবর্তনশীল "PTDEBUG" STDERR-এ ভার্বোজ ডিবাগিং আউটপুট সক্ষম করে। সক্রিয় করতে
ডিবাগিং এবং একটি ফাইলে সমস্ত আউটপুট ক্যাপচার করুন, টুলটি চালান যেমন:
PTDEBUG=1 pt-find... > ফাইল 2>&1
সতর্কতা অবলম্বন করুন: ডিবাগিং আউটপুট বিশাল এবং অনেক মেগাবাইট আউটপুট তৈরি করতে পারে।
সিস্টেম যোগ্যতা
আপনার প্রয়োজন পার্ল, ডিবিআই, ডিবিডি::মাইসকিউএল, এবং কিছু মূল প্যাকেজ যা যেকোনো একটিতে ইনস্টল করা উচিত
পার্লের যুক্তিসঙ্গত নতুন সংস্করণ।
onworks.net পরিষেবা ব্যবহার করে অনলাইনে pt-findp ব্যবহার করুন
