伺服器管理常用知識和命令

世有因果知因求果發表於2016-05-15

mysql伺服器:

service httpd start

service httpd stop

修改/etc/my.conf中的mysql資料檔案所在目錄:

datadir=/assets/mysql

重啟mysql伺服器後生效

注意在上面修改datadir重啟服務過程中可能出現許可權問題:因為mysqld是以mysql這個使用者來執行的,而datadir可能並不屬於mysql使用者,解決方案:

InnoDB: The error means mysqld does not have the access rights to
InnoDB: the directory.
InnoDB: File name ./ibdata1
InnoDB: File operation call: 'open'.
InnoDB: Cannot continue operation.
071027 07:43:13 mysqld ended

chown -R mysql.mysql /assets/mysql

 

資料盤掛載和擴容:

https://help.aliyun.com/document_detail/25452.html?spm=5176.doc25445.6.173.XKkyJu

檢查linux下佔用cpu高的程式詳細資訊:

1. top -c 查出對應的命令以及pid,

2. cd /prox/pid

3. ls -l,顯示的cwd以及exe就可以看出具體是哪條命令啟動了這個佔用CPU巨大的任務!

redis安全相關

參考於:https://help.aliyun.com/knowledge_detail/5988808.html?spm=5176.2020520130.105.2.h59EGf&&msctype=pmsg&mscmsgid=119316051500075948&

1、指定redis服務使用的網路卡 (需要重啟redis才能生效)
在 redis.conf 檔案中找到 “# bind 127.0.0.1” ,把前面的#號去掉,然後儲存。注:修改後只有本機才能訪問Redis。
 
2、設定訪問密碼 (需要重啟redis才能生效)
在 redis.conf 中找到“requirepass”欄位,在後面填上你需要的密碼,Redis客戶端也需要使用此密碼來訪問Redis服務。
 
3、修改Redis服務執行賬號 (需要重啟redis才能生效)
請以較低許可權賬號執行Redis服務,且禁用該賬號的登入許可權。另外可以限制攻擊者往敏感寫入檔案,但是Redis資料還是能被黑客訪問到,或者被黑客惡意刪除。

4、設定防火牆策略

如果正常業務中Redis服務需要被其他伺服器來訪問,可以設定iptables策略僅允許指定的IP來訪問Redis服務。

讓laravel可以執行sudo命令git pull && php artisan cache:clear自動部署

chmod u+w /etc/sudoers ;
echo "apache ALL=NOPASSWD:/usr/local/git/bin/git pull" >> /etc/sudoers
echo "apache ALL=NOPASSWD:/usr/local/zend/bin/php artisan cache:clear" >> /etc/sudoers
再註釋掉Defaults requiretty這行,否則會要求有tty才能執行!(TODO: 寫shell實現自動化)
chmod u-w /etc/sudoers

rpm -qa |grep mysql  // 查詢mysql是否已經安裝

centos將檔案清空:

true > logfile

七牛cdn上傳及重新整理

qshell qupload xx.json  :上傳檔案到儲存空間

七牛後臺重新整理操作: 更i新CDN Cache

上述兩個操作同步進行方能完成cache更新

或者qupload+ ?v = xx來強制更新無需後臺重新整理,因為v=xx+1後七牛會自動去源更新內容

mysql約束問題除錯方法:

http://www.mihaimatei.com/mysql-foreign-key-constraint-fails/

You are here because of:

Cannot resolve table name close to (id)

Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails

What to check when you have MySQL foreign key related errors

  • Table should be of same engine (InnoDB)
  • Table fields should be of same type
    • Pay attention to INT size and UNSIGNED
  • Values inserted/updated in the main table are also present in the foreign table
  • You are inserting/updating all required fields

How to debug

Execute the following SQL query:

1
SHOW ENGINE INNODB STATUS

and look for:

1
2
3
------------------------
LATEST FOREIGN KEY ERROR
------------------------

If you see:

“Cannot resolve table name close to: (id)”,

or

“Trying to add to index `fieldname` tuple: … But the parent table `dbname`.`tablename` or its .ibd file does not currently exist!”

then one of your tables is MyISAM. Convert it to InnoDB.

具體解決辦法:

mysqldump dbname > all.sql 
showed that the table referenced by my foreign key was a MyISAM table, not a InnoDB table. 

To fix it, in all.sql I: 
- globally substituted "InnoDB" for "MyISAM"; 
- added "SET FOREIGN_KEY_CHECKS=0;" at the top 
- added "SET FOREIGN_KEY_CHECKS=1;" at the bottom 
Then I recreated the database with: 
mysql dbname < all.sql 

I still don't have any .idb file (mentioned in the "SHOW INNODB STATUS" error message), but its fixed.

 mysql中的字符集:

1.關於字符集

所為字符集,就是用來定義字元在資料庫中的編碼的集合。常見的字符集有:utf8(支援中文)和AccIS(不支援中文)

2.關於排序規則

資料庫中的排序規則用來定義字元在進行排序和比較的時候的一種規則。常見的如下: 
(1) utf8_general_ci 不區分大小寫,utf8_general_cs 區分大小寫 
(2) utf8_bin 規定每個字串用二進位制編碼儲存,區分大小寫,可以直接儲存二進位制的內容

說明:所為排序規則,就是指字元比較時是否區分大小寫,以及是按照字元編碼進行比較還是直接用二進位制資料比較。

這裡只是簡單記錄下自己整理的東西,如果對你有用,麻煩點個贊咯。

相關文章