MariaDB啟動指令碼/etc/init.d/mysql的坑
最近想把公司的mysql5.5.43遷到mariadb10.0.21上,就在測試環境上搞了一把,具體步驟就不談了,還是蠻簡單的~但是到最後啟動mariadb的時候踩到坑了~
具體情況如下:
從啟動介面來看MariaDB啟動不起?!!檢視程序看下:
發現mysql程序已經起來了,但是不知道什麼原因給hang住了,不停的迴圈,再檢視我的日誌和埠
150924 16:57:51 mysqld_safe mysqld from pid file /data/mysql/data/mariadb.pid ended 150924 16:57:54 mysqld_safe Starting mysqld daemon with databases from /data/mysql/data 150924 16:57:54 [Note] /usr/sbin/mysqld (mysqld 10.0.21-MariaDB-log) starting as process 11356 ... 150924 16:57:54 [Note] InnoDB: Using mutexes to ref count buffer pool pages 150924 16:57:54 [Note] InnoDB: The InnoDB memory heap is disabled 150924 16:57:54 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins 150924 16:57:54 [Note] InnoDB: Memory barrier is not used 150924 16:57:54 [Note] InnoDB: Compressed tables use zlib 1.2.3 150924 16:57:54 [Note] InnoDB: Using Linux native AIO 150924 16:57:54 [Note] InnoDB: Using CPU crc32 instructions 150924 16:57:54 [Note] InnoDB: Initializing buffer pool, size = 128.0M 150924 16:57:54 [Note] InnoDB: Completed initialization of buffer pool 150924 16:57:54 [Note] InnoDB: Highest supported file format is Barracuda. 150924 16:57:54 [Note] InnoDB: 128 rollback segment(s) are active. 150924 16:57:54 [Note] InnoDB: Waiting for purge to start 150924 16:57:54 [Note] InnoDB: Percona XtraDB (http://www.percona.com) 5.6.25-73.1 started; log sequence number 1616817 150924 16:57:54 [Note] Plugin 'FEEDBACK' is disabled. 150924 16:57:54 [Note] Server socket created on IP: '::'. 150924 16:57:54 [Warning] 'user' entry '
[email protected]' ignored in --skip-name-resolve mode. 150924 16:57:54 [Warning] 'proxies_priv' entry '@% [email protected]' ignored in --skip-name-resolve mode. 150924 16:57:54 [Note] Event Scheduler: Loaded 0 events 150924 16:57:54 [Note] /usr/sbin/mysqld: ready for connections. Version: '10.0.21-MariaDB-log' socket: '/data/mysql/mysql.sock' port: 3306 MariaDB Server 150924 16:57:54 [Note] Event Scheduler: scheduler thread started with id 2
連線資料庫什麼的都是正常的~這樣的話就把疑點轉移到了/etc/init.d/mysql啟動指令碼上了,到底是什麼原因將啟動程序迴圈的呢?
檢視MariaDB10.0.21的mysql指令碼發現在啟動的時候會呼叫函式wait_for_ready
然後再檢視wait_for_ready函式咋寫的呢?case "$mode" in 'start') # Start daemon # Start daemon # Safeguard (relative paths, core dumps..) cd $basedir echo $echo_n "Starting MySQL" if test -x $bindir/mysqld_safe then # Give extra arguments to mysqld with the my.cnf file. This script # may be overwritten at next upgrade. $bindir/mysqld_safe --datadir="$datadir" --pid-file="$mysqld_pid_file_path" $other_args >/dev/null 2>&1 & wait_for_ready; return_value=$? # Make lock for RedHat / SuSE if test -w "$lockdir" then touch "$lock_file_path" fi exit $return_value else log_failure_msg "Couldn't find MySQL server ($bindir/mysqld_safe)" fi ;;
wait_for_ready () {
i=0
while test $i -ne $service_startup_timeout ; do
i=0
while test $i -ne $service_startup_timeout ; do
if $bindir/mysqladmin ping >/dev/null 2>&1; then
log_success_msg
return 0
elif kill -0 $! 2>/dev/null ; then
: # mysqld_safe is still running
else
# mysqld_safe is no longer running, abort the wait loop
break
fi
echo $echo_n ".$echo_c"
i=`expr $i + 1`
sleep 1
done
log_failure_msg
return 1
}
看到只有當mysqladmin ping命令通過的時候才會返回success,其他情況只會不停的迴圈.然後900秒後報錯退出,但是mysql實際上是已經起來了的。
知道了原因,這裡面有兩種解決方法
1)在/etc/my.cnf中設定mysqladmin的使用者名稱,密碼和socket路徑
2)修改mysql啟動指令碼
這裡我採用的是修改mysql啟動指令碼,怕密碼洩露啊!參照mysql5.5中的check方式,check一下pid檔案就ok了
wait_for_ready () {
i=0
while test $i -ne $service_startup_timeout ; do
#if $bindir/mysqladmin ping >/dev/null 2>&1; then
if test -e $mysqld_pid_file_path;then
log_success_msg
return 0
elif kill -0 $! 2>/dev/null ; then
: # mysqld_safe is still running
else
# mysqld_safe is no longer running, abort the wait loop
break
fi
echo $echo_n ".$echo_c"
i=`expr $i + 1`
sleep 1
done
log_failure_msg
return 1
}
然後啟動搞定!
相關推薦
MariaDB啟動指令碼/etc/init.d/mysql的坑
最近想把公司的mysql5.5.43遷到mariadb10.0.21上,就在測試環境上搞了一把,具體步驟就不談了,還是蠻簡單的~但是到最後啟動mariadb的時候踩到坑了~ 具體情況如下: 從啟動介面來看MariaDB啟動不起?!!檢視程序看
在開機啟動指令碼/etc/init.d/rcS中新增自己的應用程式
開機啟動我們可以把內容新增到/etc/init.d/rcS中, vi把指令新增到最後或者exec /etc/init.d/rc S前邊,記得儲存 此時不要急著重啟驗證,要先sync同步下,因為linux的檔案系統都會有寫入快取,否則更改無法儲存。 重啟後就可以開機執行了
[Mysql啟動報錯]/etc/init.d/mysqld: line 256: my_print_defaults: command not found
啟動Mysql時報錯: [[email protected]]# service mysqld status /etc/init.d/mysqld: line 256: my_print_defaults: command not found MySQL is n
深入探究Linux下ARM啟動指令碼(/etc/init.d/rcS)在什麼位置被呼叫
每次啟動板子都要重新設定IP地址,很麻煩,就從網上搜搜怎麼設定成開機自動修改IP地址。搜的過程中,想著Linux裡面的啟動指令碼是在哪個地方被呼叫?想想還是自己理一遍。(自己理解的啟動指令碼就是在開機過程中固定呼叫某幾個指令碼,但這樣感覺會不會有點寫死了,Linux可能有更好
sh: /etc/init.d/sshd: not found Docker中的Alpine映象安裝sshd無法啟動
問題描述 在Alpine映象中安裝了openssh-server和openssh之後,無法執行ssh localhost。發現未啟動服務,開啟服務時報以下錯誤 / # ls /etc/init.d/sshd /etc/init.d/sshd / # /etc/init.d/sshd status sh:
理解Linux系統/etc/init.d目錄和/etc/rc.local指令碼
以下內容是作者自己的翻譯版本,如需轉載到CSDN外其他網站,請註明本文連結。 一、關於/etc/init.d 如果你使用過linux系統,那麼你一定聽說過init.d目錄。這個目錄到底是幹嘛的呢?它歸根結底只做了一件事情,但這件事情非同小可,是為整個
啟動service impala-server start報錯/etc/init.d/impala-server: line 34: /lib/lsb/init-functions: No such
#安裝impala啟動報錯 [[email protected] run]# service impala-server start /etc/init.d/impala-server: line 34: /lib/lsb/init-functions: No su
理解Linux系統/etc/init.d目錄和/etc/rc.local指令碼(轉)
原連結;http://blog.csdn.net/acs713/article/details/7322082 一、關於/etc/init.d 如果你使用過linux系統,那麼你一定聽說過init.d目錄。這個目錄到底是幹嘛的呢?它歸根結底只做了一件事情,但這
/etc/init.d/iptables stop
init.d con nta alt init containe stop lin num /etc/init.d/iptables stop /etc/init.d/iptables stop
Linux根文件皇冠體育平臺開發系統:/etc/init.d/rcS文件分析
mnt 單純 應用程序 類型 hostname con rc.d 節點 fst rcS文件的作用皇冠體育平臺開發論壇:haozbbs.com Q1446595067 rcS是一個腳本文件,在inittab文件中本解析調用,用於配置Linux系統。2.rcS文件分析 #!
CentOS中service命令與/etc/init.d的關系以及centos7的變化
emc web 服務控制 pos mfs 繼承 例如 特性 entos 緣由由於個人經常在ubuntu和centos 系統中切換,習慣了以前的 ubuntu中 通過 /etc/init.d/xxx 進行軟件服務控制。後來發現centos7中換了服務的控制方式:service
/etc/init.d/functions
/etc/init.d/functions: [[email protected] ~]# vim /etc/init.d/functions #僅展示前幾行 # -*-Shell-script-*- # # functi
安裝mongodb碰到error: unpacking of archive failed on file /etc/init.d/mongod;5bcec214: cpio: open如何解決
今用yum安裝mongodb4.0.3發現一個錯誤,當用yum install 安裝mongo-org 時除了mongodb-org-server 沒有安裝以外其他的都安裝正確,重新安裝mongodb-org-server 時報如下錯誤資訊 在一篇老外 cpio的文章中受到
/etc/rc.local 與 /etc/init.d Linux 開機自動執行程式
轉載地址:https://www.cnblogs.com/fatt/p/4790561.html 1. /etc/rc.local 這是使用者自訂開機啟動程式,把需要開機自動執行的程式寫在這個腳本里 --------引用---------------------- 在完成 run
/etc/inittab,/etc/init.d/rcS和/etc/profile分析
參考部落格https://blog.csdn.net/qiuoooooo/article/details/79300739 在kernel掛載根檔案系統後,執行的第一個程式是根目錄下的linuxrc,實際是一個指向/bin/busybox的連結, 也就是說系統起來後執行的第一個程式是busybo
Shell公共函式:/etc/init.d/functions詳解
在學習Shell的時候看到很多指令碼都會有. /etc/init.d/functions 這一句,在網上查詢了此函式的作用,故收藏在部落格中 functions這個指令碼是給/etc/init.d裡邊的檔案使用的。提供了一些基礎的功能,看看裡邊究竟有些什麼。首先會設定umask,path,還有語言環境,然後
RedHat Enterprise Linux 7關閉防火牆方法 在之前的版本中關閉防火牆等服務的命令是 service iptables stop /etc/init.d/iptables st
RedHat Enterprise Linux 7關閉防火牆方法 在之前的版本中關閉防火牆等服務的命令是 service iptables stop /etc/init.d/iptables stop 在RHEL7中,其實沒有這個服務 [[email
Virtualbox報錯------> '/etc/init.d/vboxdrv setup'解決
Virtualbox報錯------> '/etc/init.d/vboxdrv setup'解決 Ubuntu下VirtualBox本來可以很好地用的,今天早上一來就報錯了,……提示如下內容: ----------------------------------
Linux系列:Linux下/etc/rc.local與/etc/init.d的區別與聯絡
1. /etc/rc.local 這是使用者自定義開機啟動程式,把需要開機自動執行的程式寫在這個腳本里再完成 run level 3 的服務啟動後, 如果我還有其他的動作想要完成時,舉例來說, 我還想要寄一封 mail 給某個系統管理帳號,通知他,系統剛剛重新開機完畢,那
-bash: /etc/init.d/nginx: /bin/bash^M: bad interpreter: No such file or directory
-bash: /etc/init.d/nginx: /bin/bash^M:bad interpreter: No such file or directory這個使為了弄nginx自啟的,然後在官網找