国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

MySQL數據歸檔

IT那活兒 / 2923人閱讀
MySQL數據歸檔

點擊上方“IT那活兒”公眾號,關注后了解更多內容,不管IT什么活兒,干就完了!??!


  

隨著MySQL數據表越來越大,需要對歷史數據按時間點做一次歸檔,重建歸檔表,再清除舊表中已經歸檔的數據,提高數據庫的性能。

下面介紹一款比較好的工具:pt-archiver





方案描述



適用范圍:

  • MySQL
  • 平臺:Linux

常用參數:

  • limit 1000       每次取1000行數據用pt-archive處理;
    SELECT /*!40001 SQL_NO_CACHE */ FORCE INDEX(`PRIMARY`) FROM WHERE ORDER BY `id` LIMIT 1000
  • txn-size  2000   2000行是一個事務;
  • where ‘id<1000‘   設置操作條件;
  • progress 5000    每處理5000行輸出一次處理信息;
  • statistics        輸出執行過程及最后的操作統計。(只要不加上--quiet,默認情況下pt-archive都會輸出執行過程的)
  • charset=UTF8    指定字符集為UTF8;
  • bulk-delete      批量刪除source上的舊數據;
    DELETE FROM  WHERE  LIMIT 1000
  • bulk-insert      批量插入數據到dest主機;
    LOAD DATA LOCAL INFILE  INTO TABLE
  • replace           將insert into 語句改成replace寫入到dest庫;
  • sleep 1           每次歸檔了limit個行記錄后的休眠1秒;
  • purge            刪除source數據庫的相關匹配記錄;
  • header           輸入列名稱到首行(和--file一起使用);
  • no-check-charset   不指定字符集;
  • check-columns    檢驗dest和source的表結構是否一致,不一致自動拒絕執行(不加這個參數也行。默認就是執行檢查的);
  • no-check-columns    不檢驗dest和source的表結構是否一致,不一致也執行(會導致dest上的無法與source匹配的列值被置為null或者0);
  • chekc-interval      默認1s檢查一次;
  • local            不把optimize或analyze操作寫入到binlog里面(防止造成主從延遲巨大);
  • retries         超時或者出現死鎖的話,pt-archiver進行重試的間隔(默認1s);
  • no-version-check   目前為止,發現部分pt工具對阿里云RDS操作必須加這個參數;
  • analyze=ds      操作結束后,優化表空間(d表示dest,s表示source)。

前提:

  • 所使用用戶擁有足夠的權限(以下使用root),并且用戶允許連接到數據庫;
  • pt-archiver操作的表必須有主鍵。
清理數據:
直接清理原表中的歷史數據。
pt-archiver 
--source h=192.168.56.51,D=test,t=user_basic_info,u=root,
p=xxxxxxxxxx   --where "VALID_PERIOD <2021-01-01"  --purge
--limit=2000  --no-check-charset
--txn-size=2000  
--bulk-delete   --statistics
--primary-key-only  --progress 2000
歸檔不清理數據:
歸檔表結構需和原表結構保持一致(為提升歸檔速度,可暫時不創建索引,待數據歸檔完成后進行索引的創建。)將192.168.56.51上test.user_basic_info歸檔到192.168.56.52上的user_basic_info_bak。
pt-archiver --source 
h=192.168.56.51,D=test,t=user_basic_info,u=root,p=xxxxxxxxx
x
 --dest
h=192.168.56.52,D=test,t=user_basic_info_bak,u=root,p=xxxxx
xxxxxx
  --where 1=1  --limit=1000 --no-check-charset
--txn-size=1000 --bulk-insert --no-delete --statistics -
-primary-key-only --progress 1000 --local
歸檔并清理數據:
歸檔表結構需和原表結構保持一致(為提升歸檔速度,可暫時不創建索引,待數據歸檔完成后進行索引的創建。)將192.168.56.51上test.user_basic_info歸檔到192.168.56.52上的user_basic_info_bak。
pt-archiver --source 
h=192.168.56.51,D=test,t=user_basic_info,u=root,p=xxxxxxxxxx --dest
h=192.168.56.52,D=test,t=user_basic_info_bak,u=root,p=xxxxx
xxxxxx
 --where 1=1  --limit=1000 --no-check-charset --
sleep 1 --txn-size=1000 --bulk-delete --statistics --
primary-key-only --progress 1000 --local

報錯:

DBD::mysql::st execute failed: Loading local data is 
disabled; this must be enabled on both the client and server
sides [for Statement "LOAD DATA LOCAL INFILE ? INTO TABLE 
`test`.`user_basic_info`(`id`)" with ParamValues:
0=/tmp/WJZ3qiQ3ISpt-archiver] at /bin/pt-archiver line 6876.
處理方式:
root@localhost [test]>show variables like %INFILE%;
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
|
 local_infile | OFF |
+---------------+-------+
root@localhost [test]>set global local_infile=1;
root@localhost [test]>show variables like %INFILE%;
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
|
 local_infile | ON |
+---------------+-------+

總結:

  • pt-archiver是一個十分高效的表數據歸檔工具,歸檔數據可以分批進行事務處理,減少性能消耗;
  • 對于跨實例或者跨服務器的表數據歸檔,pt-archiver可以運行在目標端服務器,因為生成的臨時文件是在工具執行所在的服務器;
  • 對于大表的過期數據的批量刪除也可以通過pt-archiver指定選項--purge進行處理。

本文作者:趙棟輝(上海新炬王翦團隊)

本文來源:“IT那活兒”公眾號

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/129351.html

相關文章

  • MySQL - 擴展性 2 擴展策略:氪金氪腦任君選

    摘要:另一個與之相反的方法是將任務分配的多臺機器上,這通常被稱為水平擴展或者向外擴展。向上擴展向上擴展也叫垂直擴展意味著購買更多性能強悍的機器??紤]清楚歸檔系統中的解除歸檔策略??偨Y向上氪金,向外氪腦。 如果將應用的所有數據簡單地放在一臺 MySQL 服務器實例上,就不用談什么擴展性了。但是業務能穩定持續的增長,那么應用肯定會碰到性能瓶頸。 對于很多類型的應用而言,購買更高性能的機器能解決一...

    NikoManiac 評論0 收藏0
  • MySQL - 擴展性 2 擴展策略:氪金氪腦任君選

    摘要:另一個與之相反的方法是將任務分配的多臺機器上,這通常被稱為水平擴展或者向外擴展。向上擴展向上擴展也叫垂直擴展意味著購買更多性能強悍的機器??紤]清楚歸檔系統中的解除歸檔策略。總結向上氪金,向外氪腦。 如果將應用的所有數據簡單地放在一臺 MySQL 服務器實例上,就不用談什么擴展性了。但是業務能穩定持續的增長,那么應用肯定會碰到性能瓶頸。 對于很多類型的應用而言,購買更高性能的機器能解決一...

    Chao 評論0 收藏0

發表評論

0條評論

IT那活兒

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<