久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

pt

195次閱讀
沒有評論

共計 2746 個字符,預計需要花費 7 分鐘才能閱讀完成。

這篇文章給大家分享的是有關 pt-archiver 如何實現 MySQL 定期分表的內容。丸趣 TV 小編覺得挺實用的,因此分享給大家做個參考,一起跟隨丸趣 TV 小編過來看看吧。

pt-archiver 使用的場景

1、清理線上過期數據  

2、清理過期數據,并把數據歸檔到本地歸檔表中,或者遠端歸檔服務器  

3、兩張表之間的數據不完全相同,希望合并。此時加上–ignore 或–replace 選項,可以輕松實現  

4、導出線上數據,到線下數據作處理  

導出數據的基本原理: 

  通過“過濾條件”,得在此范圍內的 PK 的最大值和最小值  ,  然后通過 PK 索引,  過濾條件  + pk 此范圍的最大值  + pk(此范圍內 pk 的最小值 + 每次增長 limit 指定的數) + limit. 這樣直到處理完成。 

 關于分表, 定期建表有一個 pt-archiver 可以很好的實現. 
 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} 表. 
  具體實現可參考   如下
/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 
#腳本參數: 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`  # 去空格, 得到一行數據  
#得到數據文件和源表名值  
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 
## 源數據庫名, 源表名, 篩選字段, 目標庫名  
db_source,py_out_export,export_time,db_hist 
db_source,py_out_export_result,exec_time,db_hist 
## 創建每周三定時執行
[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

感謝各位的閱讀!關于“pt-archiver 如何實現 MySQL 定期分表”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-07-27發表,共計2746字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 关岭| 安远县| 昌都县| 进贤县| 麦盖提县| 青川县| 高台县| 青海省| 观塘区| 丽江市| 汨罗市| 蒙城县| 深州市| 当雄县| 京山县| 读书| 清丰县| 东乌珠穆沁旗| 博罗县| 林西县| 紫阳县| 昌图县| 松溪县| 桐梓县| 南投县| 康平县| 赣州市| 卢氏县| 安宁市| 鹤庆县| 巍山| 旬阳县| 峨眉山市| 金沙县| 紫金县| 合肥市| 静海县| 安塞县| 凤翔县| 临沂市| 台中市|