MySQL5.5 部署的一個問題
MySQL部署
目前公司部署MySQL是通過平臺化操作的,周五的時候,平臺暫時出了點兒問題,手上有個需求比較著急,就直接手動的部署了一下,由于好長時間沒有部署環(huán)境了,竟然有些手生,這里把部署的步驟以及遇到的問題記錄下來,希望對大家有所幫助。
1、一般情況下,部署有三種常用的方式,第一種是yum的方式,也就是rpm包,第二種是源碼的方式,也就是source code,第三種是二進(jìn)制包,也就是tar.gz格式的包,解壓之后即可,我采用的是第三種方法,部署的MySQL版本是5.5.19版本。
2、首先來看下錯誤吧:
啟動服務(wù)的語句:/usr/local/mysql-5.5.19-linux2.6-x86_64/bin/mysqld_safe --defaults=/data/mysql_4310/my.cnf & [Note] InnoDB: Waiting for purge to start [Note] InnoDB: Percona XtraDB (http://www.percona.com) 5.7.16-10 started; log sequence number 0 [Note] Plugin ’FEDERATED’ is disabled.20190621_11:25:41mysqld: Table ’mysql.plugin’ doesn’t exist [ERROR] Can’t open the mysql.plugin table. Please run mysql_upgrade to create it. [ERROR] unknown variable ’thread_concurrency=8’ [ERROR] Aborting
可以看到,一共報了兩個錯誤,第一個是不能打開mysql.plugin這個表,第二個錯誤是參數(shù)錯誤,這個參數(shù)thread_concurrency無法識別。
對于第二個問題,可以確認(rèn)是配置文件里面的參數(shù)問題,因為我使用的是常規(guī)的5.7的配置文件,改了幾個參數(shù),所以這個參數(shù)很有可能是漏改了,改掉即可。主要是第一個問題,這個時候,我進(jìn)行了下面的嘗試。
3、解決方式
嘗試1:嘗試重新啟動
使用service mysql start的方法:
[root]# service mysql_4310 startStarting MySQL.....The server quit without updating PID fil[FAILED]/mysql_4310/tmp/mysql.pid).
發(fā)現(xiàn)服務(wù)還是無法啟動,錯誤日志的輸出不變。
嘗試2:看到了錯誤后面的提示,運(yùn)行mysql_upgrade方法
[root bin]# ./mysql_upgrade --protocol=tcp -P4310 -pEnter password: Looking for ’mysql’ as: ./mysqlLooking for ’mysqlcheck’ as: ./mysqlcheckRunning ’mysqlcheck’ with connection arguments: ’--protocol=tcp’ ’--port=4310’ ./mysqlcheck: Got error: 2003: Can’t connect to MySQL server on ’localhost’ (111) when trying to connect
看來還是不行,這個時候我嚴(yán)重懷疑是配置文件的問題:。
嘗試3:從線上環(huán)境中搞來了一個mysql5.5的配置文件,然后重新替換新的配置文件,重新啟動:
[root@ mysql_4310]# /usr/local/mysql-5.5.19-linux2.6-x86_64/bin/mysqld_safe --defaults-file=/data/mysql_4310/my.cnf & [1] 63529[root@ mysql_4310]# 190621 11:51:37 mysqld_safe Logging to ’/data/mysql_4310/log/hb30_web_wechat_answers-121_246.err’.190621 11:51:37 mysqld_safe Starting mysqld daemon with databases from /data/mysql_4310/data190621 11:51:40 mysqld_safe mysqld from pid file /data/mysql_4310/tmp/mysql.pid ended
查看錯誤日志:
查看錯誤日志:[Note] Plugin ’FEDERATED’ is disabled.-5.5.19-linux2.6-x86_64/bin/mysqld: Unknown error 1146[ERROR] Can’t open the mysql.plugin table. Please run mysql_upgrade to create it.InnoDB: The InnoDB memory heap is disabledInnoDB: Mutexes and rw_locks use GCC atomic builtinsInnoDB: Compressed tables use zlib 1.2.3InnoDB: Using Linux native AIOInnoDB: Initializing buffer pool, size = 4.0GInnoDB: Completed initialization of buffer poolt specified data file /data/mysql_4310/ibdata1 did not exist:tabase to be created! InnoDB: Setting file /data/mysql_4310/ibdata1 size to 1000 MB physically writes the file full: wait... in MB: 100 200 300 400 500 600 700 800 900 1000 InnoDB: Data file /data/mysql_4310/ibdata2 did not exist: new to be created InnoDB: Setting file /data/mysql_4310/ibdata2 size to 100 MB physically writes the file full: wait... in MB: 100og file /data/mysql_4310/innodblog/ib_logfile0 is of different size 0 1073741824 bytescified in the .cnf file 0 134217728 bytes![ERROR] Plugin ’InnoDB’ init function returned error.[ERROR] Plugin ’InnoDB’ registration as a STORAGE ENGINE failed.[ERROR] Aborting
發(fā)現(xiàn)最先面出現(xiàn)了新的錯誤,提示Innodb 初始化函數(shù)返回了錯誤,無法使用innodb存儲引擎。到這里,我開始懷疑是不是初始化的時候,就有錯誤,導(dǎo)致服務(wù)不可用,于是想著重新初始化一遍數(shù)據(jù)字典,重新起服務(wù),看看行不行。
嘗試4:重新初始化數(shù)據(jù)字典
嘗試使用initialize-insecure方法重新初始化,發(fā)現(xiàn)失敗了。
[root mysql_4310]# /usr/local/mysql-5.5.19-linux2.6-x86_64/bin/mysqld --initialize-insecure --defaults-file=/data/mysql_4310/my.cnf --datadir=/data/mysql_4310/data --basedir=/usr/local/mysql-5.5.19-linux2.6-x86_64 &[1] 7045[1]+ Exit 2 /usr/local/mysql-5.5.19-linux2.6-x86_64/bin/mysqld --initialize-insecure --defaults-file=/data/mysql_4310/my.cnf --datadir=/data/mysql_4310/data --basedir=/usr/local/mysql-5.5.19-linux2.6-x86_64
錯誤日志還是之前的日志,提示mysql.plugin表不存在,除此之外,還多了一行,如下:
[ERROR] /usr/local/mysql-5.5.19-linux2.6-x86_64/bin/mysqld: unknown option ’--initialize-insecure’
于是上官方文檔上面查看了--initialize-insecure參數(shù),發(fā)現(xiàn)這個參數(shù)在mysql5.5版本沒有,然后5.5版本的是initialize參數(shù),于是換成這個initialize參數(shù),重新初始化,然后報錯如下:
[root@ ]/usr/local/mysql-5.5.19-linux2.6-x86_64/bin/mysqld --defaults-file=/data/mysql_4310/my.cnf --datadir=/data/mysql_4310/data --basedir=/usr/local/mysql-5.5.19-linux2.6-x86_64 --initialize &[1]+ Exit 2 /usr/local/mysql-5.5.19-linux2.6-x86_64/bin/mysqld --defaults-file=/data/mysql_4310/my.cnf --datadir=/data/mysql_4310/data --basedir=/usr/local/mysql-5.5.19-linux2.6-x86_64 --initialize
此時,查看官方文檔,發(fā)現(xiàn)MySQL5.5版本的初始化使用的是mysql_install_db命令而不是mysqld命令,而mysql_install_db這個工具不在/usr/local/mysql-5.5.19-linux2.6-x86_64/bin目錄中,而在/usr/local/mysql-5.5.19-linux2.6-x86_64/scripts目錄下面,于是通過cp命令將其拷貝到指定目錄,然后進(jìn)行初始化,如下:
[root@ mysql_4310]# /usr/local/mysql-5.5.19-linux2.6-x86_64/bin/mysql_install_db --defaults-file=/data/mysql_4310/my.cnf [root@ mysql_4310]# ll | grep install[root@ mysql_4310]# /usr/local/mysql-5.5.19-linux2.6-x86_64/bin/mysql_install_db --defaults-file=/data/mysql_4310/my.cnf --datadir=/data/mysql_4310/data --basedir=/usr/local/mysql-5.5.19-linu[1] 16365[root@ mysql_4310]# Installing MySQL system tables...OKFilling help tables...OKTo start mysqld at boot time you have to copysupport-files/mysql.server to the right place for your systemPLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !To do so, start the server, then issue the following commands:/usr/local/mysql-5.5.19-linux2.6-x86_64/bin/mysqladmin -u root password ’new-password’/usr/local/mysql-5.5.19-linux2.6-x86_64/bin/mysqladmin -u root -h tk01-devt-mysql-7-200 password ’new-password’Alternatively you can run:/usr/local/mysql-5.5.19-linux2.6-x86_64/bin/mysql_secure_installationwhich will also give you the option of removing the testdatabases and anonymous user created by default. This isstrongly recommended for production servers.See the manual for more instructions.You can start the MySQL daemon with:cd /usr/local/mysql-5.5.19-linux2.6-x86_64 ; /usr/local/mysql-5.5.19-linux2.6-x86_64/bin/mysqld_safe &You can test the MySQL daemon with mysql-test-run.plcd /usr/local/mysql-5.5.19-linux2.6-x86_64/mysql-test ; perl mysql-test-run.plPlease report any problems with the /usr/local/mysql-5.5.19-linux2.6-x86_64/scripts/mysqlbug script![1]+ Done /usr/local/mysql-5.5.19-linux2.6-x86_64/bin/mysql_install_db --defaults-file=/data/mysql_4310/my.cnf --datadir=/data/mysql_4310/data --basedir=/usr/local/mysql-5.5.19-linux2.6-x86_64
結(jié)果成功。
總結(jié)如下:
1、MySQL5.5版本的初始化使用mysql_install_db工具,而不是mysqld工具
2、MySQL5.5版本的初始化使用--initialize參數(shù)
以上就是MySQL5.5 部署的一個問題的詳細(xì)內(nèi)容,更多關(guān)于MySQL 部署的資料請關(guān)注好吧啦網(wǎng)其它相關(guān)文章!
相關(guān)文章:
1. SQLite數(shù)據(jù)庫安裝及基本操作指南2. debian10 mariadb安裝過程詳解3. 目前學(xué)習(xí)到的常用命令之Mariadb4. DB2 自動遞增字段實現(xiàn)方法5. python之sqlalchemy創(chuàng)建表的實例詳解6. SQL Server數(shù)據(jù)庫的三種創(chuàng)建方法匯總7. SQLite教程(四):內(nèi)置函數(shù)8. 國內(nèi)學(xué)院派專家對DB2 9新產(chǎn)品贊不絕口9. ubuntu下使用SQLite3的基本命令10. 關(guān)于mongoose連接mongodb重復(fù)訪問報錯的解決辦法
