編寫背景:
最近這兩周收到測試新人發來的郵件頗多;在眾多郵件中,還頻繁的有提醒更新簡歷的郵件,上周末抽空更新了一下,竟然有獵頭找上門來,被嚇了一跳。
測試環境遷移的工作已經過了60%,在遷移完畢后,在數據庫上遇到了一些問題和現象;花費了不少時間,最終問題給解決了,非常有必要記錄下來,因為
通過GOOGLE搜索來的信息,沒有發現一個是有效指導如何解決問題的辦法。自己必須要記錄下來,萬一那天要用,就不用搜索了。錯誤日志比Google寶貝是此次解
決mysql數據庫中的問題得到的最大感想。
錯誤日志比GOOGLE寶貝!!!!
問題及現象1:
在home目錄下安裝了一個mysql,此mysql保存了一部分測試數據,現在需要把線上的測試數據導入到mysql數據庫中,發現數據文件非常的大,
導入會占滿空間,現在,需要把home目錄下的mysql移動到一個大的目錄文件home1,確保home空間可足夠運行。
解決辦法:
1、停止mysql服務,具體是:yinst stop mysql_server
2、把/home/y/share/mysql 目錄文件拷貝到新的目錄文件 /home1/y/share/mysql
3、把/home/y/logs/mysql 目錄文件拷貝到新的目錄文件/home1/y/logs/mysql
修改/home1/y/logs/ 中的mysql目錄權限的擁有者是mysql,用戶組是users,文件權限是775
修改命令是:sudo chown -R mysql mysql/ ;sudo chgrp -R users mysql/ ;sudo chmod 775 mysql/
4、把/home/y/var/mysql 目錄文件拷貝到新的目錄文件 /home1/y/var/mysql ,
修改/home1/y/var/ 中的mysql目錄權限的擁有者是mysql,用戶組是users,文件權限是775
修改命令是:sudo chown -R mysql mysql/ ;sudo chgrp -R users mysql/ ;sudo chmod 775 mysql/
5、把/home/y/conf/mysql 目錄文件拷貝到新的目錄文件 /home1/y/conf/mysql ,
修改/home1/y/conf/ 中的mysql目錄權限的擁有者是mysql,用戶組是mysql,文件權限是775
修改命令是:sudo chown -R mysql mysql/ ;sudo chgrp -R mysql mysql/ ;sudo chmod 775 mysql/
6、在home1目錄下創建目錄tmp,tmp目錄文件操作權限是:777;sudo chmod 777 /home1/tmp
7、修改mysql的my.cnf配置文件,把文件中的home名改成home1
8、啟動mysql服務,具體是:yinst start mysql_server
9、進入數據庫,把大量的測試數據導入數據庫中
問題及現象2:
在測試機器上,有一個mysql裝在了home目錄,另一個mysql被移動到home1,home的磁盤空間比較小,測試數據少,mysql數據主要用于功能測試;home1上的
磁盤空間比較大,測試數據大,mysql數據主要用于性能測試;問題:當作功能測試時,如何設置目前使用的數據庫是home目錄下的;當作性能測試時,如何設
置目前使用的數據庫是home1目錄下的。
解決辦法:
1、復制home目錄mysql的my.cnf文件,具體路徑是:/etc/my.cnf,新命名為my_new.cnf文件
2、修改my_new.cnf文件中的信息,把文件中的home名改成home1,保存到目錄文件:/home/y/etc/
3、當要用功能測試數據庫時,停止mysql服務,執行命令:sudo ln -s /home/y/etc/my.cnf my.cnf;執行完畢,啟動mysql服務
4、當要用性能測試數據庫時,停止mysql服務,執行命令:sudo ln -s /home/y/etc/my_new.cnf my.cnf;執行完畢,啟動mysql服務
備注和說明:
在處理上面的兩個問題中,遇到了很多問題,其中就有一個:發現數據庫服務啟動不起來;mysql.sock文件找不到,這時可查看mysql的錯誤日志進行分析,比在
GOOGLE中輸入“mysql.sock文件”的搜索結果看解決辦法快,并且定位準確。通過錯誤日志分析,最后確定是把/home/y/var/mysql 目錄文件拷貝到新的目錄
文/home1/y/var/mysql 后,沒有給目錄文件授權為mysql,導致mysql服務啟動時,無法初始化創建mysql.sock文件。
具體mysql的log日志文件地址,可以在my.cnf文件中查看到,常用的日志文件有:mysql.log、mysqld.err。
問題及現象3:
需要把mysql數據庫中的某一張表導入到另一個數據庫中
解決辦法:
1、導出數據庫表文件,具體操作命令:mysqldump -u root ncp2 alimama_member >/tmp/alimama_member.sql
2、導入數據庫表文件,具體操作命令:mysql -uroot aliads<~/alimama_member.sql
最后總結:在日常所測試的軟件,一定要打印錯誤日志,通過錯誤日志,可以分析程序是那個地方出了問題。在查找問題原因時,如果日志不管用,可以加調試信息
打印出來用于調試程序。這個也非常管用,我在大學編程時經常用這一辦法。