Mysql管理必备工具Maatkit详解.docx
- 文档编号:30740085
- 上传时间:2023-08-20
- 格式:DOCX
- 页数:65
- 大小:52.66KB
Mysql管理必备工具Maatkit详解.docx
《Mysql管理必备工具Maatkit详解.docx》由会员分享,可在线阅读,更多相关《Mysql管理必备工具Maatkit详解.docx(65页珍藏版)》请在冰豆网上搜索。
Mysql管理必备工具Maatkit详解
Mysql管理必备工具Maatkit详解
Maatkit是一个Perl写的Mysql开源管理工具,根据调查全球大约有70%多的Mysql管理员使用这个工具来管理Mysql,但我发现在国内很少有人知道这个工具,因此打算写一个系列的文章来介绍这个工具,并带上自己的心得和一些体会。
首先安装Maatkt,需要Perl,DBI,DBD:
:
mysql相关模块。
1.perl
perl-v
Thisisperl,v5.8.5builtfori386-linux-thread-multi
Copyright1987-2004,LarryWall
一般linux安装的时候默认安装了perl。
2.Mysql可以到这里下载
Mysql的安装网上到处都是,就省略了。
3.DBI,可以到这里下载相应的版本
tarzxfDBI-1.58.tar.gz
cdDBI-1.58
perlMakefile.pl
make
maketest
make
makeinstall
4.data-showtable包,可以到这里下载查找相应的包
gzip-c-dData-ShowTable-?
.?
?
.tar.gz|tarxvf-
cdData-ShowTable-?
.?
?
perlMakefile.PL
make
不要试maketest,测试套件损坏了!
makeinstall
5.msql-mysql-modules可以到这里下载
gzip-c-dMsql-Mysql-modules-?
.?
?
.tar.gz|tarxvf-
将压缩文件接压缩到一个名为Msql-Mysql-modules-?
.?
?
的目录。
cdMsql-Mysql-modules-?
.?
?
perlMakefile.PL
在"perlMakefile.PL"期间,会向你提出一些问题。
特别是你必须选择安装驱动器(MySQL,mSQL2and/ormSQL1)。
MySQL驱动程序叫
DBD:
:
mysql,单独的mSQL驱动程序叫DBD:
:
mSQL。
如果你想支持mSQL1和mSQL2,用DBD:
:
mSQL1。
make
maketest
makeinstall
6.DBD-mysql可以到这里下载
安装DBD:
DBD-mysql-4.005
perlMakefile.PL--mysql_config=/usr/local/mysql/bin/mysql_config
make
maketest
make
makeinstall
如果出现以下错误,
install_driver(mysql)failed:
Can'tload'/usr/lib/perl5/site_perl/5.8.5/i386-linux-thread-multi/auto/DBD/mysql/mysql.so'for
moduleDBD:
:
mysql:
libmysqlclient.so.12:
cannotopensharedobjectfile:
Nosuchfileordirectoryat
/usr/lib/perl5/5.8.5/i386-linux-thread-multi/DynaLoader.pmline230.
at(eval6)line3
Compilationfailedinrequireat(eval6)line3.
Perhapsarequiredsharedlibraryordllisn'tinstalledwhereexpected
at/root/mysqlreportline162
就做操作
cp/usr/local/mysql/include/mysql*/usr/include/
cp/usr/local/mysql/lib/*/usr/lib/(64位的是lib64)
然后再重新安装DBD:
DBD-mysql-4.005
perlMakefile.PL--mysql_config=/usr/local/mysql/bin/mysql_config
make
maketest
makeinstall
7.安装maatkit可以到这里下载
tarzxvfmaatkit-2325.tar.gz
cdmaatkit-2325
perlMakefile.PL
makeinstall
下面分别列出这套工具,以及官方的定义,在后续的文章中,会分别对这些工具进行介绍,以及自己的测试和心得体会。
mk-archiverArchiverowsfromaMySQLtableintoanothertableorafile.
mk-auditAnalyze,summarizeandreportonMySQLconfig,schemaandoperation
mk-checksum-filterFilterchecksumsfrommk-table-checksum.
mk-deadlock-loggerExtractandlogMySQLdeadlockinformation.
mk-duplicate-key-checkerFindduplicatekeysandforeignkeysonMySQLtables.
mk-fifo-splitSplitfilesandpipelinestoafifowithoutreallysplitting.
mk-findFindMySQLtablesandexecuteactions,likeGNUfind.
mk-heartbeatMonitorMySQLreplicationdelay.
mk-log-playerSplitandplayMySQLslowlogs.
mk-log-serverServeMySQLbinarylogs.
mk-parallel-dumpDumpsetsofMySQLtablesinparallel.
mk-parallel-restoreLoadfilesintoMySQLinparallel.
mk-profile-compactCompacttheoutputfrommk-query-profiler.
mk-query-digestParseslogsandmore.Analyze,transform,filter,reviewandreportonqueries.
mk-query-profilerExecuteSQLstatementsandprintstatistics,ormeasureactivitycausedbyotherprocesses.
mk-show-grantsCanonicalizeandprintMySQLgrantssoyoucaneffectivelyreplicate,compareandversion-controlthem.
mk-slave-delayMakeaMySQLslaveserverlagbehinditsmaster.
mk-slave-findFindandprintreplicationhierarchytreeofMySQLslaves.
mk-slave-moveMoveaMySQLslavearoundinthereplicationhierarchy.
mk-slave-prefetchPipelinerelaylogsonaMySQLslavetopre-warmcaches.
mk-slave-restartWatchandrestartMySQLreplicationaftererrors.
mk-table-checksumPerformanonlinereplicationconsistencycheck,orchecksumMySQLtablesefficientlyononeormanyservers.
mk-table-syncSynchronizeMySQLtablesefficiently.
mk-visual-explainFormatEXPLAINoutputasatree.
mk-archiver–删除时按行备份,支持备份到异地库。
安装方法可以参考这里。
mysql在删除数据的时候,是无法rollback(innodb引擎除外)的,如果你删错了数据,那么你就只能进行恢复了,这显然是很耗成本的操作。
当然你也可以在执行delete的之前,用mysqldump进行备份,或者你在删除之前,先执行loaddata或者insertintoasselect,至少需要执行2次命令,并且不支持备份到异地库。
那么,下面这个工具可能是你需要的。
利用mk-archiver工具,可以在删除mysql表数据的时候,把需要删除的数据备份。
备份的方式有2种,其一是备份到文件,就像loaddata一样。
其二是备份到另外1张结构相同的表,支持备份到异地库。
mysql>select*fromtest;
+------+------+
|uid|note|
+------+------+
|1|NULL|
|2|NULL|
|3|NULL|
|4|NULL|
|5|NULL|
|6|NULL|
|7|NULL|
|8|NULL|
|9|NULL|
+------+------+
9rowsinset(0.00sec)
mk-archiver--sourceh=localhost,u=sg,p='xxxx',D=test,t=test--file'/u01/%Y-%m-%d-%D.%t'--where'uid<5'
Cannotfindanascendableindexintableat/usr/bin/mk-archiverline1262.
需要给这个表加一个索引。
mysql>createindexuidontest(uid);
Currentdatabase:
test
QueryOK,9rowsaffected(0.00sec)
Records:
9Duplicates:
0Warnings:
0
mysql>\!
mk-archiver--sourceh=localhost,u=sg,p='xxxx',D=test,t=test--file'/u01/%Y-%m-%d-%D.%t'--where'uid<5'
mysql>select*fromtest;
Currentdatabase:
test
+------+------+
|uid|note|
+------+------+
|5|NULL|
|6|NULL|
|7|NULL|
|8|NULL|
|9|NULL|
+------+------+
5rowsinset(0.00sec)
OK,已经被删除了。
被删除的数据在指定的文件里
mysql>\!
cat/u01/2008-07-31-test.test
1\N
2\N
3\N
4\N
想恢复回来,很简单。
mysql>LOADDATALOCALINFILE'/u01/2008-07-31-test.test'intotabletest;
Currentdatabase:
test
QueryOK,4rowsaffected(0.01sec)
Records:
4Deleted:
0Skipped:
0Warnings:
0
mysql>select*fromtest;
+------+------+
|uid|note|
+------+------+
|4|NULL|
|3|NULL|
|2|NULL|
|1|NULL|
|5|NULL|
|6|NULL|
|7|NULL|
|8|NULL|
|9|NULL|
+------+------+
9rowsinset(0.00sec)
当然,也可以把数据备份到另外一个相同结构的表,这样需要先把备份表建立,支持备份到异地库。
mysql>createtabletest2select*fromtestwhere1=2;
QueryOK,0rowsaffected(0.02sec)
Records:
0Duplicates:
0Warnings:
0
mysql>desctest2;
+-------+----------+------+-----+---------+-------+
|Field|Type|Null|Key|Default|Extra|
+-------+----------+------+-----+---------+-------+
|uid|int(11)|YES||NULL||
|note|char(10)|YES||NULL||
+-------+----------+------+-----+---------+-------+
2rowsinset(0.00sec)
mysql>select*fromtest2;
Emptyset(0.00sec)
mysql>\!
mk-archiver--sourceh=localhost,u=sg,p='xxxx',D=test,t=test--desth=localhost,u=sg,p='xxxx',D=test,t=test2--where'uid<5'
mysql>select*fromtest2;
+------+------+
|uid|note|
+------+------+
|1|NULL|
|2|NULL|
|3|NULL|
|4|NULL|
+------+------+
4rowsinset(0.00sec)
OK,还有其他的一些参数,可以看下帮助文件。
mk-archiver--help
mk-archivernibblesrecordsfromaMySQLtable.The--sourceand--dest
argumentsuseDSNsyntax;ifCOPYisyes,--destdefaultstothekey'svalue
from--source.Formoredetails,pleaseusethe--helpoption,ortry'perldoc
mk-archiver'forcompletedocumentation.
Usage:
mk-archiver--sourceDSN--whereWHERE
Options:
--analyze-ZRunANALYZETABLEafterwardson--sourceand/or--dest
--ascendfirstAscendonlyfirstcolumnofindex
--askpassPromptforpasswordforconnections
--buffer-bBufferoutputto--fileandflushatcommit
--bulkdelDeleteeachchunkwithasinglestatement(implies
--commit-each)
--bulkinsInserteachchunkwithLOADDATAINFILE(implies--bulkdel
--commit-each)
--charset-ADefaultcharacterset
--[no]chkcols-CEnsure--sourceand--desthavesamecolumns(default)
--columns-cComma-separatedlistofcolumnstoarchive
--commit-eachCommiteachsetoffetchedandarchivedrows(disables-z)
--delayedinsAddtheDELAYEDmodifiertoINSERTstatements
--dest-dTabletoarchiveto
--file-fFiletoarchiveto,withDATE_FORMAT()-likeformatting
--forupdateAddstheFORUPDATEmodifiertoSELECTstatements
--header-hPrintcolumnheaderattopof--file
--helpShowthishelpmessage
--hpselectAddstheHIGH_PRIORITYmodifiertoSELECTstatements
--ignore-iUseIGNOREforINSERTstatements
--limit-lNumberofrowstofetchandarchiveperstatement(default
1)
--local-LDonotwriteOPTIMIZEorANALYZEqueriestobinlog
--lpdelAddtheLOW_PRIORITYmodifiertoDELETEstatements
--lpinsAddtheLOW_PRIORITYmodifiertoINSERTstatements
--noascendDonotuseascendingindexoptimization
--nodeleteDonotdeletearchivedrows
--optimize-ORunOPTIMIZETABLEafterwardson--sourceand/or--dest
--pkonly-kPrimarykeycolumnsonly
--pluginPerlmodulenametouseasagenericplugin
--progress-PPrintprogressinformationeveryXrows
--purge-pPurge,notarchive;allowstoomit--fileand--dest
--quickdelAddtheQUICKmodifiertoDELETEstatements
--quietDonotprintanyoutput,suchasfor--statistics
--replace-rUseREPLACEinsteadofINSERTstatements
--retries-RNumberofretriespertimeoutordeadlock(default1)
--[no]safeautoincDonotarchiverowwithmaxAUTO_INCREMENT(default)
--sentinel-SSentinelfile;default/tmp/mk-archiver-sentinel
--setvarsSettheseMySQLvariables(defaultwait_timeout=10000)
--sharelockAddsLOCKINSHAREMODEtoSELECTstatements
--skipfkchk-KTurnoffforeignkeychecks
--sleep-eSleeptimebetweenfetches
--source-sTabletoarchivefrom(required)
--statisticsCollectandprinttimingstatistics
--stopStoprunninginstancesbycreatingthesentinelfile
--test-tTest:
printqueriesandexitwithoutdoinganything
--time-mTimetorunbeforeexiting.Optionalsuffixs=seconds,
m=minutes,h=hours,d=days;ifnosuffix,sisused.
--txnsize-zNumberofrowspertransaction;disablewith0;default1)
--versionOutputversioninformationandexit
--where-WWHEREclausetolimitwhichrowstoarchive(required)
--whyquit-qPrintreasonforexitingunlessrowsexhausted
--ignoreand--replacearemutuallyexclusive.
--txnsizeand--commit-eacharemutuallyexclusive.
--lpinsand--delayedinsaremutuallyexclusive.
--sharelockand--forupdatearemutuallyexclus
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Mysql 管理 必备 工具 Maatkit 详解