程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> shell腳本:<批量檢查並更改MySQL數據庫表的存儲引擎>

shell腳本:<批量檢查並更改MySQL數據庫表的存儲引擎>

編輯:MySQL綜合教程

shell腳本:<批量檢查並更改MySQL數據庫表的存儲引擎>


Work Description: 在搭建完Percona XtraDB Cluster(一種MySQL架構,簡稱PXC),需要把old mysql中的數據導入到new mysql中,但PXC只支持InnoDB表,非InnoDB表無法同步到PXC的其它節點上,因此我需要批量統一表的引擎。   Event Description:   1.需要寫個shell腳本,完成兩個目的:<1>查詢(ck)ENGINE的狀態 <2>更改(al)引擎狀態   2.需要在管理機上,訪問遠程MySQL   <方式:mysql -uadmin -h10.10.10.12 -P3001 -ppassword -e"sql_cmd">   3.mysql存儲引擎的查看方式選擇:   <1>:select ENGINE from information_schema.TABLES where TABLE_SCHEMA='DB_NAME' and TABLE_NAME=TB_NAME};   <2>:SHOW CREATE TABLE tb_name;   4.達到目的:   <1>:希望執行命令之後,屏幕上能顯示<庫名、表名、以及引擎狀態> 方便直接浏覽   <2>:表數量很大,希望統計下各引擎表數量並輸出,以便分析al時產生的影響   <3>:不希望每次al前都執行ck,也不希望ck工程中就al了,我想ck 和al 可以在一起用也可以單獨用,這樣就靈活了   <4>:考慮過寫個ip列表的文件,批量對多台機器ck(不太適用我的環境,還要每次vim文件),我希望對單台server 進行ck,這樣會比較靈活   <5>:我只ck非系統庫表(系統庫:mysql,test,information_schema,performance_schema)       <6>:執行sh ck_engine_status.sh 後面所跟參數不夠,會打印幫助信息 5.腳本check_engine.sh見附件或者鏈接地址:http://yunpan.cn/cLeVbLN9AnItQ (提取碼:08d7)   Script Execution And Description: Execution: $sh ck_engine_status.sh 10.10.10.12 3001 ck'#查看ENGINE STATUS $sh ck_engine_status.sh 10.10.10.12 3001 al'#更改ENGINE STATUS   Description:   1.腳本中需要靈活改動的變量:<用戶:USER 密碼:PASS> 具有1.遠程訪問權限    2.select權限 <自己定義:check_log文件路徑>   2.執行ck,屏幕只會列出engine狀態,不會做al   3.ck完成之後,自動將MyISAM表以:db_name.tb_name格式寫入:check_log中<只涉及MyISAM和InnoDB> <ck前會自動刪check_log>   4.al會讀取check_log中的MyISAM表,並做更改。<al後會自動刪check_log,避免多次al><al時會先判斷log文件是否存在,不存在會報錯提示>   5.可以手動將特定的表寫入check_log中,並執行al   相關截圖:   幫助信息 ck結果 al結果

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved