2018年4月23日 星期一

mysql 記錄 執行過久的SQL

如mysql要查詢執行過久的SQL,可在參數檔my.ini or my.cnf 中的[mysqld]下方加上以下參數

slow_query_log = 1
slow_query_log_file = /var/logs/mysql_log/mysql_slow.log
long_query_time = 5   單位是s
log_queries_not_using_indexes = 1 這可以列出無使用index的SQL

如果要同時列出無使用index 的SQL,這樣LOG檔會有非常多SQL,所以建議這行不加或設定0,真的有需要再開啟

如果log檔放置的路徑非在mysql同層,那就要再設定目錄的權限,LOG才能正常被記錄在檔案之中,請依以下指令設定權限:


# mkdir   /var/logs/mysql_log
# chown mysql.mysql -R /var/logs/mysql_log

上述設定是mysql 5.6版之後的設定方式,之前的版本設定有些許不同,所以要先確認你的mysql版本喔

此外,long_query_time 在mysql 5.6版本之後,可以設定0.x秒 之前版本可都是要1秒以上

2018年4月18日 星期三

排除 error command line calculator 'bc' not found centos

在centos 執行 sh 時 出現了 error command line calculator 'bc' not found centos 錯誤訊息

查了一下才知才了 BC shell

執行安裝指令如下:

# yum -y install bc

安裝完成再重新執行該sh 就可正常運行了

CentOS Ntp Server 校對伺服器的建立


在 CentOS 7 陸續有許多新的工具出現,不單只是kernel的改變,包含一些我們慣用的工具都也汰換成新的,像校對時間的Server  也改成 chronyd ,但因為chronyd 預設開啟的Port 為323,並非原本的123 Port ,所以此篇要信紹一下原本及比較常用的NTPD service

因為預設校對時間的工具chronyd 會和ntp 搶
一整個怪,查過沒有搶Port,反正就是一山容不下二虎
所以要先關原服務,不然等會設定自動啟動時會失效


# systemctl stop chronyd.service
# systemctl disable chronyd.service


這裡要注意一下,我在測試時發現 加了service 竟然移不掉 最後是把service 字眼移除才能正常
所以執行上述動作後,可以先執行以下查詢自動啟用的service,看看是否chronyd有無移除成功
 systemctl list-unit-files | grep enabled


利用yum先進行安裝
# yum install ntp -y

設定要校時的NTP server
# vi /etc/ntp.conf

把原本的註解掉
#server 0.rhel.pool.ntp.org
#server 1.rhel.pool.ntp.org
#server 2.rhel.pool.ntp.org

並加上以下這幾台,如果是無法連外的區網,就要找區網內的校對伺服器
server tw.pool.ntp.org
server  watch.stdtime.gov.tw
server  time.stdtime.gov.tw

如果要設定 BIOS 的時間也同步調整,請修改 /etc/sysconfig/ntpd,

 # vi /etc/sysconfig/ntpd

並設定SYNC_HWCLOCK=yes 參數即可


啟動我們的NTP Server,並設定自動啟動及開啟防火牆
# systemctl enable ntpd
# systemctl start ntpd
# firewall-cmd --add-port=123/udp --permanent && systemctl restart firewalld

改時區可下指令
# timedatectl set-timezone Asia/Taipei

雖然也可以手動進行校時,指令如下:
# ntpdate pool.ntp.org

校時要先關掉本機的ntp服務,不然執行該指令會有錯誤訊息出現

最後可以使用 ntpstat 或 ntpq -p 指令檢查time server設定是否正確

[root@localhost]# ntpstat
synchronised to NTP server (118.163.81.61) at stratum 3
   time correct to within 68 ms

   polling server every 1024 s



注意: 在一啟動時就想查查看ntpstat 是否ntp有效果,但得到的都是unsynchronised,要等久一點才會同步成功,所以可以過一陣子再來看結果

2018年4月16日 星期一

排除 Can't locate Text/Template.pm in.CentOS

在CentOS 要執行perl ,出現了 Can't locate Text/Template.pm in. 一堆錯誤訊息

查了一下 少裝了  perl-CGI-Session 套件 所以立馬安裝

# yum install perl-CGI-Session -y

裝完後再重新執行,就能正常運行了

2018年4月13日 星期五

Centos 7 vsftpd 如何設定虛擬目錄

在設定vsftpd時,要指定虛擬目錄
原本使用了ln -s(Symbolic Link) 的方式來連結

雖然看起來可以,但透過FTP 連入時竟然是不可以用,會出現 550 Failed to change directory 的錯誤訊息

去Google查了一下, 因為chroot 不能使用 soft link 所以要改用mount bind的方式

可先建立你想要的目錄名稱
# mkdir /ftproot/upload

然後再下mount 指令
# mount --bind /source/upload /ftproot/upload

這樣就可以在FTP 連入 upload 目錄 看到/source/upload 目錄的檔案了
不過,重開機後就失效了,所以如果要讓設定一直生效就要在/etc/fstab 下加入mount指令

# vi /etc/fstab
在最後加上
/source/upload  /ftproot/upload/ none bind,ro 0 0


這樣重啟後,就可以直接mount上去啦

參考連結:

  • http://blog.ilc.edu.tw/blog/index.php?op=printView&articleId=470470&blogId=25793
  • https://unix.stackexchange.com/questions/413823/editing-etc-fstab-to-permanently-bind-mount-directory