事情的起因是年前放了乙個使用者同步的指令碼在伺服器上面驗證穩定性,全部使用者跑完之後資料庫裡面多了300多萬條資料。
後來該去檢視php-fpm的slowlog,悲劇的是php也沒開。
開啟php-fpm的慢日誌之後,觀察發現是由於使用者表沒有索引造成的(測試伺服器上面的資料庫用的都是myisam而且沒有加索引)。
於是在伺服器上面登陸mysql客戶端,新增索引。
又悲劇地發現由於主磁碟的空間已經滿了,這是時候有兩個思路,乙個是清理一下磁碟空間,另乙個是把mysql的資料移庫到另外乙個掛載盤上。由於考慮到移庫比較麻煩,而且也怕中間出現其他的問題,所以一開始是想著先清理一下磁碟空間。
在mysql的資料檔案裡面有乙個ibdata的檔案,乙個檔案就佔到的12g,於是選擇優化ibdata檔案。
首先用mysqldump 匯出了所有的表資料
mysqldump -uroot -p -r -q --all-databases > 20170217.sql
然後drop 掉了所有的業務表,停止mysqld。
刪除ibdata1中,ib_logfile0和ib_logfile1.
修改配置檔案 my.cnf
在[mysqld]下新增配置選項
innodb_file_per_table(新增了這個選項之後,innodb表的資料會分開到各個表去記錄,而不是寫入到ibdata中)
重啟mysql
(優化參考鏈結
mysql成功重啟後發現並沒有什麼卵用……表資料加起來還是那麼多……其中乙個user表就佔到了接近8g,如果再跑個建立索引的命令,還會再生成乙個8g的臨時表檔案,磁碟gg沒有任何商量。
這樣就只好選擇移庫了。
移庫先刪除了datadir中的臨時表檔案以及ib_logfile_0,ib_logfile1,複製資料檔案到新的資料夾(注意資料夾操作許可權問題)。
然後修改my.cnf中[mysqld]的datadir以及socket位址,另外還需要修改[client]內的socket位址,否則在呼叫mysql客戶端的時候會由於socket路徑問題無法鏈結。
重啟mysq,建立索引,成功
合服測試(一)
合服測試 一 1 提前在內網進行一些業務的預演,比如等級or積分排行榜資訊,pvp資料,pve關卡排名等。根據遊戲業務來 2 在內網裡建立起碼2個庫,執行指令碼合併。3 預演一場斷開,指令碼失敗後,再次執行是否資料出現異常。4 提前準備好外網所需要用到的區服賬號,記錄roleid,區服資訊,渠道賬號...
git正式服與測試服鉤子自動更新
伺服器 centos7.4 阿里雲 使用寶塔控制面板,使用gitlab實現git專案 git伺服器要大於4g。否則會卡 也可以使用碼雲,git等。實現內容 分支,新建乙個test分支。test提交,測試服更新。master更新,正式服更新。目錄許可權 正式服與測試服都給www許可權,否則會提示無更新...
軟體測試日記04
通過網上調查,在軟體測試崗位的面試中,對linux系統的提問主要包括 基本的shell命令 檔案i o sed awk文字流處理工具 程序監控 效能測試工具,最簡單的如top 定時任務 crontab 遠端協議ss 件傳輸協議ftp tftp samba共享 ls 列出目前工作目錄所含的檔案及子目錄...