這篇文章給大家分享的是有關(guān)pt-archiver如何實(shí)現(xiàn)MySQL定期分表的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過來看看吧。
在老邊等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供網(wǎng)站制作、成都做網(wǎng)站 網(wǎng)站設(shè)計(jì)制作按需搭建網(wǎng)站,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站制作,網(wǎng)絡(luò)營銷推廣,成都外貿(mào)網(wǎng)站建設(shè),老邊網(wǎng)站建設(shè)費(fèi)用合理。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ò),可以把它分享出去讓更多的人看到吧!
名稱欄目:pt-archiver如何實(shí)現(xiàn)MySQL定期分表-創(chuàng)新互聯(lián)
文章URL:http://www.rwnh.cn/article34/jdhpe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供營銷型網(wǎng)站建設(shè)、App設(shè)計(jì)、標(biāo)簽優(yōu)化、App開發(fā)、關(guān)鍵詞優(yōu)化、電子商務(wù)
聲明:本網(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)
猜你還喜歡下面的內(nèi)容