《MYSQL數(shù)據(jù)庫安裝和使用percona-toolkit來輔助操作MySQL的基本教程》要點:
本文介紹了MYSQL數(shù)據(jù)庫安裝和使用percona-toolkit來輔助操作MySQL的基本教程,希望對您有用。如果有疑問,可以聯(lián)系我們。
MYSQL學(xué)習(xí)一、percona-toolkit簡介
percona-toolkit是一組高級命令行工具的集合,用來執(zhí)行各種通過手工執(zhí)行非常復(fù)雜和麻煩的mysql和系統(tǒng)任務(wù),這些任務(wù)包括:
MYSQL學(xué)習(xí)percona-toolkit源自Maatkit 和Aspersa工具,這兩個工具是管理mysql的最有名的工具,現(xiàn)在Maatkit工具已經(jīng)不維護了,請大家還是使用percona-toolkit吧!這些工具主要包括開發(fā)、性能、配置、監(jiān)控、復(fù)制、系統(tǒng)、實用六大類,作為一個優(yōu)秀的DBA,里面有的工具非常有用,如果能掌握并加以靈活應(yīng)用,將能極大的提高工作效率.
MYSQL學(xué)習(xí)二、percona-toolkit工具包安裝
1.? 軟件包下載
訪問http://www.percona.com/software/percona-toolkit/下載最新版本的Percona Toolkit 或者通過如下命令行來獲取最新的版本:
MYSQL學(xué)習(xí)
wget percona.com/get/percona-toolkit.tar.gz
wget percona.com/get/percona-toolkit.rpm
MYSQL學(xué)習(xí)我這里選擇直接從網(wǎng)站上找到最新版本下載:
MYSQL學(xué)習(xí)
wget http://www.percona.com/redir/downloads/percona-toolkit/2.1.1/percona-toolkit-2.1.1-1.noarch.rpm
wget http://www.percona.com/redir/downloads/percona-toolkit/2.1.1/percona-toolkit-2.1.1.tar.gz
MYSQL學(xué)習(xí)?從http://pkgs.repoforge.org/perl-TermReadKey/下載最新的TermReadKey包
MYSQL學(xué)習(xí)
wget http://pkgs.repoforge.org/perl-TermReadKey/perl-TermReadKey-2.30-1.el5.rf.x86_64.rpm
MYSQL學(xué)習(xí)?
2. 軟件包安裝
我的環(huán)境是Centos 5.5 64 BIT
A. percona-toolkit的rpm安裝方式
MYSQL學(xué)習(xí)
rpm -ivh perl-TermReadKey-2.30-1.el5.rf.x86_64.rpm
rpm -ivh percona-toolkit-2.1.1-1.noarch.rpm
MYSQL學(xué)習(xí)注意:需要安裝Term::ReadKey 包,否則會報perl(Term::ReadKey) >= 2.10 is needed by percona-toolkit-2.1.1-1.noarch錯誤
B. percona-toolkit的編譯安裝方式
tar xzvf percona-toolkit-2.1.1.tar.gz
cd percona-toolkit-2.1.1
perl Makefile.PL
make
make test
make install
MYSQL學(xué)習(xí)三、常用功能
1. pt-duplicate-key-checker
功能介紹:
功能為從mysql表中找出重復(fù)的索引和外鍵,這個工具會將重復(fù)的索引和外鍵都列出來,并生成了刪除重復(fù)索引的語句,非常方便
用法介紹:
pt-duplicate-key-checker [OPTION...] [DSN]
包含比較多的選項,具體的可以通過命令pt-duplicate-key-checker? --help來查看具體支持那些選項,我這里就不一一列舉了.DNS為數(shù)據(jù)庫或者表.
使用示例:
查看test數(shù)據(jù)庫的重復(fù)索引和外鍵使用情況使用如下命令
MYSQL學(xué)習(xí)
pt-duplicate-key-checker --host=localhost --user=root --password=zhang@123 --databases=test
MYSQL學(xué)習(xí)???????
2. pt-online-schema-change
功能介紹:
功能為在alter操作更改表結(jié)構(gòu)的時候不用鎖定表,也就是說執(zhí)行alter的時候不會阻塞寫和讀取操作,注意執(zhí)行這個工具的時候必須做好備份,操作之前最好詳細讀一下官方文檔http://www.percona.com/doc/percona-toolkit/2.1/pt-online-schema-change.html.
工作原理是創(chuàng)建一個和你要執(zhí)行alter操作的表一樣的空表結(jié)構(gòu),執(zhí)行表結(jié)構(gòu)修改,然后從原表中copy原始數(shù)據(jù)到表結(jié)構(gòu)修改后的表,當(dāng)數(shù)據(jù)copy完成以后就會將原表移走,用新表代替原表,默認動作是將原表drop掉.在copy數(shù)據(jù)的過程中,任何在原表的更新操作都會更新到新表,因為這個工具在會在原表上創(chuàng)建觸發(fā)器,觸發(fā)器會將在原表上更新的內(nèi)容更新到新表.如果表中已經(jīng)定義了觸發(fā)器這個工具就不能工作了.
用法介紹:
pt-online-schema-change [OPTIONS] DSN
options可以自行查看help,DNS為你要操作的數(shù)據(jù)庫和表.
這里有兩個參數(shù)需要介紹一下:
--dry-run? 這個參數(shù)不建立觸發(fā)器,不拷貝數(shù)據(jù),也不會替換原表.只是創(chuàng)建和更改新表.
--execute? 這個參數(shù)的作用和前面工作原理的介紹的一樣,會建立觸發(fā)器,來保證最新變更的數(shù)據(jù)會影響至新表.注意:如果不加這個參數(shù),這個工具會在執(zhí)行一些檢查后退出.這一舉措是為了讓使用這充分了解了這個工具的原理,同時閱讀了官方文檔.
使用示例:
在線更改表的的引擎,這個尤其在整理innodb表的時候非常有用,示例如下:
MYSQL學(xué)習(xí)
pt-online-schema-change --user=root --password=zhang@123 --host=localhost --lock-wait-time=120 --alter="ENGINE=InnoDB" D=test,t=oss_pvinfo2 --execute
MYSQL學(xué)習(xí)從下面的日志中可以看出它的執(zhí)行過程:
MYSQL學(xué)習(xí)
Altering `test`.`oss_pvinfo2`...
Creating new table...
Created new table test._oss_pvinfo2_new OK.
Altering new table...
Altered `test`.`_oss_pvinfo2_new` OK.
Creating triggers...
Created triggers OK.
Copying approximately 995696 rows...
Copied rows OK.
Swapping tables...
Swapped original and new tables OK.
Dropping old table...
Dropped old table `test`.`_oss_pvinfo2_old` OK.
Dropping triggers...
Dropped triggers OK.
Successfully altered `test`.`oss_pvinfo2`.
MYSQL學(xué)習(xí)在來一個范例,大表添加字段的,語句如下:
MYSQL學(xué)習(xí)
pt-online-schema-change --user=root --password=zhang@123 --host=localhost --lock-wait-time=120 --alter="ADD COLUMN domain_id INT" D=test,t=oss_pvinfo2 --execute
MYSQL學(xué)習(xí)3. pt-query-advisor
功能介紹:
根據(jù)一些規(guī)則分析查詢語句,對可能的問題提出建議,這些評判規(guī)則大家可以看一下官網(wǎng)的鏈接:http://www.percona.com/doc/percona-toolkit/2.1/pt-query-advisor.html,這里就不詳細列舉了.那些查詢語句可以來自慢查詢文件、general日志文件或者使用pt-query-digest截獲的查詢語句.目前這個版本有bug,當(dāng)日志文件非常大的時候會需要很長時間甚至進入死循環(huán).
用法介紹:
MYSQL學(xué)習(xí)
pt-query-advisor /path/to/slow-query.log
pt-query-advisor --type genlog mysql.log
pt-query-digest --type tcpdump.txt --print --no-report | pt-query-advisor
MYSQL學(xué)習(xí)?
使用示例:
分析一個語句的例子:
MYSQL學(xué)習(xí)
pt-query-advisor --query "select * from aaa"
MYSQL學(xué)習(xí)分析general log中的查詢語句的例子:
MYSQL學(xué)習(xí)
pt-query-advisor /data/dbdata/general.log
MYSQL學(xué)習(xí)分析慢查詢中的查詢語句的例子:
MYSQL學(xué)習(xí)
pt-query-advisor /data/dbdata/localhost-slow.log
MYSQL學(xué)習(xí)?
4.? pt-show-grants
功能介紹:
規(guī)范化和打印mysql權(quán)限,讓你在復(fù)制、比較mysql權(quán)限以及進行版本控制的時候更有效率!
用法介紹:
pt-show-grants [OPTION...] [DSN]
選項自行用help查看,DSN選項也請查看help,選項區(qū)分大小寫.
使用示例:
查看指定mysql的所有用戶權(quán)限:
MYSQL學(xué)習(xí)
pt-show-grants --host='localhost' --user='root' --password='zhang@123'
MYSQL學(xué)習(xí)查看執(zhí)行數(shù)據(jù)庫的權(quán)限:
MYSQL學(xué)習(xí)
pt-show-grants --host='localhost' --user='root' --password='zhang@123' --database='hostsops'
MYSQL學(xué)習(xí)查看每個用戶權(quán)限生成revoke收回權(quán)限的語句:
MYSQL學(xué)習(xí)
pt-show-grants --host='localhost' --user='root' --password='zhang@123' --revoke
MYSQL學(xué)習(xí)?
5.? pt-upgrade
功能介紹:
在多臺服務(wù)器上執(zhí)行查詢,并比較有什么不同!這在升級服務(wù)器的時候非常有用,可以先安裝并導(dǎo)數(shù)據(jù)到新的服務(wù)器上,然后使用這個工具跑一下sql看看有什么不同,可以找出不同版本之間的差異.
用法介紹:
pt-upgrade [OPTION...] DSN [DSN...] [FILE]
比較文件中每一個查詢語句在兩個主機上執(zhí)行的結(jié)果,并檢查在每個服務(wù)器上執(zhí)行的結(jié)果、錯誤和警告.
使用示例:
只查看某個sql在兩個服務(wù)器的運行結(jié)果范例:
MYSQL學(xué)習(xí)
pt-upgrade h='localhost' h=192.168.3.92 --user=root --password=zhang@123 --query="select * from user_data.collect_data limit 5"
MYSQL學(xué)習(xí)查看文件中的對應(yīng)sql在兩個服務(wù)器的運行結(jié)果范例:
MYSQL學(xué)習(xí)
pt-upgrade h='localhost' h=192.168.3.92 --user=root --password=zhang@123 aaa.sql
MYSQL學(xué)習(xí)查看慢查詢中的對應(yīng)的查詢SQL在兩個服務(wù)器的運行結(jié)果范例:
MYSQL學(xué)習(xí)
pt-upgrade h='localhost' h=192.168.3.92 --user=root --password=zhang@123 slow.log
MYSQL學(xué)習(xí)此外還可以執(zhí)行compare的類型,主要包含三個query_times,results,warnings,比如下面的例子,只比較sql的執(zhí)行時間
MYSQL學(xué)習(xí)
pt-upgrade h=192.168.3.91 h=192.168.3.92 --user=root --password=zhang@123 --query="select * from user_data.collect_data" --compare query_times
轉(zhuǎn)載請注明本頁網(wǎng)址:
http://www.fzlkiss.com/jiaocheng/1235.html