這篇文章給大家分享的是有關(guān)pt-archiver如何實(shí)現(xiàn)MySQL定期分表的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過來看看吧。
成都創(chuàng)新互聯(lián)公司致力于互聯(lián)網(wǎng)網(wǎng)站建設(shè)與網(wǎng)站營銷,提供做網(wǎng)站、成都網(wǎng)站制作、網(wǎng)站開發(fā)、seo優(yōu)化、網(wǎng)站排名、互聯(lián)網(wǎng)營銷、微信平臺(tái)小程序開發(fā)、公眾號(hào)商城、等建站開發(fā),成都創(chuàng)新互聯(lián)公司網(wǎng)站建設(shè)策劃專家,為不同類型的客戶提供良好的互聯(lián)網(wǎng)應(yīng)用定制解決方案,幫助客戶在新的全球化互聯(lián)網(wǎng)環(huán)境中保持優(yōu)勢(shì)。
pt-archiver使用的場景
1、清理線上過期數(shù)據(jù)
2、清理過期數(shù)據(jù),并把數(shù)據(jù)歸檔到本地歸檔表中,或者遠(yuǎn)端歸檔服務(wù)器
3、兩張表之間的數(shù)據(jù)不完全相同,希望合并。此時(shí)加上–ignore或–replace選項(xiàng),可以輕松實(shí)現(xiàn)
4、導(dǎo)出線上數(shù)據(jù),到線下數(shù)據(jù)作處理
導(dǎo)出數(shù)據(jù)的基本原理:
通過“過濾條件”,得在此范圍內(nèi)的PK的最大值和最小值 , 然后通過PK索引, 過濾條件 + pk <此范圍的最大值 + pk >(此范圍內(nèi)pk的最小值+每次增長limit指定的數(shù)) + limit. 這樣直到處理完成。
關(guān)于分表,定期建表有一個(gè)pt-archiver可以很好的實(shí)現(xiàn). db_source.py_out_export和db_source.py_out_export_result做定期清理,每周三0:00歸檔到歷史庫db_hist.py_out_export_his${TABLE_DATE}和db_hist.py_out_export_result_his${TABLE_DATE}表. 具體實(shí)現(xiàn)可參考 如下 /pydata/software/percona-toolkit-3.0.2/pt-archiver.sh /pydata/software/percona-toolkit-3.0.2/pt-archiver.def [root@py-test percona-toolkit-3.0.2]# more pt-archiver.sh #-------------------------------------------------------------------------------- #腳本名稱: pt-archiver.sh #腳本參數(shù): pt-archiver.def文件 #腳本功能: 歸檔大表到歷史表 #編 寫 人: zj #編寫日期: 2017年6月19日14:20 #更 新 人: #更新日期: #-------------------------------------------------------------------------------- EXEC_DATE=`date +%Y-%m-%d` TABLE_DATE=`date +%Y%m%d` #EXEC_DATE="2017-05-13" #TABLE_DATE="20170513" FILE_DIR=`dirname $0` FILE_NAME=`basename $0 .sh` USER="root" PASSWORD="dbpasswd" sed '/^#.*\|^$/d' ${FILE_DIR}/${FILE_NAME}.def >${FILE_DIR}/${FILE_NAME}.tmp for i in `cat ${FILE_DIR}/${FILE_NAME}.tmp` do DEF_DATA_TMP="`echo ${i} |sed s/\ //g`" #去空格,得到一行數(shù)據(jù) #得到數(shù)據(jù)文件和源表名值 SOURCE_DB=`echo ${i} | cut -d "," -f1 | tr "[A-Z]" "[a-z]"` TABLE_NAME=`echo ${i} | cut -d "," -f2 | tr "[A-Z]" "[a-z]"` FLITER_FIELD=`echo ${i} | cut -d "," -f3 | tr "[A-Z]" "[a-z]"` DEST_DB=`echo ${i} | cut -d "," -f4 | tr "[A-Z]" "[a-z]"` HISTABLE_NAME="${TABLE_NAME}_his${TABLE_DATE}" WHERE_SQL=`echo "'exec_time<\""${EXEC_DATE}" 00:00:00\"'"` mysql -u${USER} -p${PASSWORD} -e "create table if not exists ${DEST_DB}.${HISTABLE_NAME} like ${SOURCE_DB}.${TABLE_NAME};" if [ $? -ne 0 ] ;then echo "ERROR:create table ${HISTABLE_NAME} error!" >${FILE_DIR}/${FILE_NAME}.log exit 1 fi echo " pt-archiver --source h=127.0.0.1,P=3306,u=${USER},p=${PASSWORD},D=${SOURCE_DB},t=${TABLE_NAME} --dest h=127.0.0.1,P=3306,u=${USER},p=${PASSWORD},D=${DEST_DB},t=${HISTABLE_NAME} --no-check-charset --where '${FLITER_FIELD}<\""${EXEC_DATE}" 00:00:00\"' --progress 5000 --limit=1000 --txn-size=1000 --statistics">pt-archiver-${TABLE_NAME}.sh sh pt-archiver-${TABLE_NAME}.sh >pt-archiver-${TABLE_NAME}.log done exit 0 [root@py-test percona-toolkit-3.0.2]# more pt-archiver.def ##源數(shù)據(jù)庫名,源表名,篩選字段,目標(biāo)庫名 db_source,py_out_export,export_time,db_hist db_source,py_out_export_result,exec_time,db_hist ##創(chuàng)建每周三定時(shí)執(zhí)行 [root@py-test percona-toolkit-3.0.2]# crontab -e 20 2 * * 3 /pydata/software/percona-toolkit-3.0.2/pt-archiver.sh >/pydata/software/percona-toolkit-3.0.2/pt-archiver.log
感謝各位的閱讀!關(guān)于“pt-archiver如何實(shí)現(xiàn)MySQL定期分表”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!
標(biāo)題名稱:pt-archiver如何實(shí)現(xiàn)MySQL定期分表
瀏覽路徑:http://jinyejixie.com/article30/ggsopo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App開發(fā)、服務(wù)器托管、移動(dòng)網(wǎng)站建設(shè)、軟件開發(fā)、ChatGPT、營銷型網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)