日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql 5.7 启动脚本_MySQL数据库 5.7 启动脚本

發布時間:2023/12/2 数据库 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql 5.7 启动脚本_MySQL数据库 5.7 启动脚本 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文主要向大家介紹了MySQL數據庫 5.7 啟動腳本,通過具體的內容向大家展現,希望對大家學習MySQL數據庫有所幫助。

最近這段時間,在看mysql,安裝了,也應用過,對于生產環境中,一般都選擇使用source?code安裝,在安裝的時候可以自定義相關路徑和內容,對于生產環境來說更有效。相對于mysql?5.5的安裝,mysql?5.7的安裝大同小異,唯一的區別是5.7在安裝的時候,需要一個組件,boost,而且必須是1.59,版本高了也不行,所以下載的時候要注意。

在mysql官網下載的時候,提供兩種source?code,一種是帶boost的,直接編譯安裝即可,一種是不帶boost的,需要自己下載boost來安裝。我們選擇使用不帶boost的版本,下載boost之后,將boost拷貝到/usr/local/boost目錄下,然后對mysql源碼進行解壓編譯。編譯的代碼為:

cmake?..?-DCMAKE_INSTALL_PREFIX=/app/mysql_5.7.22?-DMYSQL_DATADIR=/app/mysql_5.7.22/data?-DDEFAULT_CHARSET=utf8?-DDEFAULT_COLLATION=utf8_general_ci?-DMYSQL_USER=mysql?-DWITH_MYISAM_STORAGE_ENGINE=1?-DWITH_INNOBASE_STORAGE_ENGINE=1?-DWITH_ARCHIVE_STORAGE_ENGINE=1?-DWITH_BLACKHOLE_STORAGE_ENGINE=1?-DWITH_MEMORY_STORAGE_ENGINE=1?-DDOWNLOAD_BOOST=1?-DWITH_BOOST=/usr/local/boost

整個編譯的過程是很長的,默認情況下,編譯的時候有指定basedir和datadir,這兩個路徑是默認的,在后續數據庫初始化的過程中,可以對不同的情況再定義。編譯完成后,就可以make?&&?make?install了。

如果是帶boost的源碼,也要指定DWITH_BOOST=../boost,這個是相對路徑

安裝完成后,需要對數據庫進行初始化,這個時候,可以設定初始化的datadir,后期的數據庫就應用在這個目錄中。在初始化過程中,相比于5.5有點區別,5.5初始化完成后,默認登錄數據庫是不需要密碼的。而在5.7,--initialize-insecure?和--initialize有兩個option,這兩個屬性有一個區別,就是在initialize時候,會為root@localhost生成一個隨機密碼,該密碼會寫到數據庫日志中,通過grep?log就可以得到該密碼,然后在登錄的時候使用該密碼,登錄進去之后,通過update進行修改,而--initialize-insecure在初始化的時候,跟5.5一樣,不會用root用戶生成密碼,直接空密碼就可以登錄。

./mysqld?--initialize-insecure?--user=mysql?--basedir=/app/mysql?--datadir=/data/mysql57/3307/data/?--pid-file=/data/mysql57/3307/tmp/3307_pid?--socket=/data/mysql57/3307/tmp/3307_socket

初始化的時候,指定了pid、socket等文件位置,默認直接會在data目錄下,生成一個以主機名命名的log文件,在初始化的時候,直接在屏幕上輸出了一段話,表示沒有密碼。

2018-07-05T00:14:59.891294Z?1?[Warning]?root@localhost?is?created?with?an?empty?password?!?Please?consider?switching?off?the?--initialize-insecure?option.

還是要注意,在整個mysql的basedir和datadir下,文件的屬主和數組都要是mysql啟動用戶,也就是mysql.mysql。

由于是自定義源碼安裝,mysql的啟動腳本就沒法直接用了,想著自己寫一個腳本,來控制這個mysql5.7的啟動和停止。下面是代碼內容。

BASEDIR=/app/mysql

BINDIR=$BASEDIR/bin

MYSQL_BIN=$BINDIR/mysqld_safe

MYSQLADMIN=/usr/local/mysql/bin/mysqladmin

DATADIR=/data/mysql57/3307/data

MYCNF=/data/mysql57/3307/my.cnf

PORT=3307

SOCKET=`grep?socket?$MYCNF|grep?$PORT|awk?‘{print?$3}‘`

usage(){

echo?"$0?usage:?{start|stop|reload}"

}

mysqld_start(){

if?[?`ps?-ef|grep?"port=$PORT"|grep?-v?grep|wc?-l`?-ge?1?]

then

echo?"The?MYSQL?SERVER?is?running"

else

if?[?-x?$MYSQL_BIN?]?&&?[?-f?$MYCNF?]

then

$MYSQL_BIN?--defaults-file=$MYCNF?&?1>>/tmp/mysql.log?2>&1

echo?$??>>?/tmp/mysql.log

sleep?2

[?`ps?-ef|grep?"port=$PORT"|grep?-v?grep|wc?-l`?-ge?1?]?&&?action??"THE?MYSQL?SERVER?STARTING"?/bin/true?||?action??"THE?MYSQL?SERVER?STARTING"?/bin/false

else

echo?"?MISSING?STARTUP_CONFIG,PLEASE?CHECK?THE?CONFIG?IN?$MYCNF"

fi

fi

}

mysqld_stop(){

if?[?`ps?-ef|grep?"port=$PORT"|grep?-v?grep|wc?-l`?-lt?1?]

then

echo?"The?MYSQL?SERVER?is?not?running"

else

$MYSQLADMIN?-S?$SOCKET?shutdown

ps?-ef|grep?"port=$PORT"|grep?-v?grep|wc?-l

[?$??-eq?0?]?&&?action?"THE?MYSQL?SERVER?STOPPING"?/bin/true?||?action??"THE?MYSQL?SERVER?STOPPING"?/bin/false

fi

}

main(){

if?[?$#?-ne?1?]

then

usage

else

case?"$1"?in

‘start‘)

mysqld_start

;;

‘stop‘)

mysqld_stop

;;

‘reload‘)

mysqld_stop

mysqld_start

;;

*)

usage

esac

fi

}

main?$*

在這段代碼中,基本上都是很普通的啟動和停止功能,判斷是否啟動,是根據進程來區分的,基于配置文件中的內容進行判斷,另外,由于mysql在啟動的時候有延時,不能啟動了立即判斷是否有進程,所以需要在啟動腳本的時候進行sleep,一般2秒就足夠。下面測試一下腳本的可用性。

[root@Server129?bin]#?sh?mysql_server.sh?stop

2018-07-09T01:33:11.096443Z?mysqld_safe?mysqld?from?pid?file?/data/mysql57/3307/tmp/3307_pid?ended

0

THE?MYSQL?SERVER?STOPPING??????????????????????????????????[??OK??]

[root@Server129?bin]#?sh?mysql_server.sh?stop

The?MYSQL?SERVER?is?not?running

[root@Server129?bin]#?sh?mysql_server.sh?reload

The?MYSQL?SERVER?is?not?running

2018-07-09T01:33:22.379632Z?mysqld_safe?Logging?to?‘/data/mysql57/3307/data/Server129.err‘.

2018-07-09T01:33:22.411184Z?mysqld_safe?Starting?mysqld?daemon?with?databases?from?/data/mysql57/3307/data

THE?MYSQL?SERVER?STARTING??????????????????????????????????[??OK??]

[root@Server129?bin]#?sh?mysql_server.sh?stop

2018-07-09T01:33:30.241711Z?mysqld_safe?mysqld?from?pid?file?/data/mysql57/3307/tmp/3307_pid?ended

0

THE?MYSQL?SERVER?STOPPING??????????????????????????????????[??OK??]

[root@Server129?bin]#?sh?mysql_server.sh?start

2018-07-09T01:33:33.846842Z?mysqld_safe?Logging?to?‘/data/mysql57/3307/data/Server129.err‘.

2018-07-09T01:33:33.878461Z?mysqld_safe?Starting?mysqld?daemon?with?databases?from?/data/mysql57/3307/data

THE?MYSQL?SERVER?STARTING??????????????????????????????????[??OK??]

[root@Server129?bin]#

基本功能貌似都很合理,但是有一些確定,比如在啟動的時候,這些腳本輸出,如何不讓顯示。

本文由職坐標整理并發布,希望對同學們學習MySQL有所幫助,更多內容請關注職坐標數據庫MySQL數據庫頻道!

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的mysql 5.7 启动脚本_MySQL数据库 5.7 启动脚本的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。