日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
mysql閃現(xiàn)怎么辦 mysql一閃而過

mysqld.exe-應(yīng)用程序錯(cuò)誤怎么辦?

在DOS下試用命令排除:①CMD②for %1 in (%WinDir%\system32\*.dll) do regsvr32.exe /s %1③for %1 in (%WinDir%\system32\*.ocx) do regsvr32.exe /s %1\x0d\x0a具體做法:開始-運(yùn)行-輸入cmd--回車,在命令提示符下輸入下面命令:\x0d\x0afor %1 in (%windir%\system32\*.dll) do regsvr32.exe /s %1回車。 \x0d\x0a完成后,再輸入下面的:\x0d\x0afor %i in (%windir%\system32\*.ocx) do regsvr32.exe /s %i 回車。如果怕輸入錯(cuò)誤,可以復(fù)制這兩條指令,然后在命令提示符后擊鼠標(biāo)右鍵,打“粘貼”,回車,耐心等待,直到屏幕滾動(dòng)停止為止。

成都創(chuàng)新互聯(lián)公司主要從事成都網(wǎng)站建設(shè)、成都做網(wǎng)站、網(wǎng)頁設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)永仁,10多年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):028-86922220

安裝2021年下半年說計(jì)算機(jī)水平測(cè)試模擬盤的時(shí)候mysql被占用怎么辦

題一:端口被占用:

一方案:進(jìn)入命令提示符

netstat -ano|findstr 3306 查看哪個(gè)程序占用了3306端口

在任務(wù)管理器中結(jié)束該任務(wù)

問題二:“MySQL”服務(wù)已經(jīng)存在:

二方案:可能是以前安裝過MySQL,

1、在注冊(cè)表中刪除

在這里插入圖片描述

2、命令 sc delete 服務(wù)名 從服務(wù)列表中刪除

在這里插入圖片描述

3、重啟電腦再安裝MySQL

文章知識(shí)點(diǎn)與官方知識(shí)檔案匹配

MySQL入門技能樹安裝和登錄安裝

28989 人正在系統(tǒng)學(xué)習(xí)中

打開CSDN,閱讀體驗(yàn)更佳

MySQL卸載后,服務(wù)仍然存在的解決方案_yijie199311的博客_mysq...

步驟一 : 刪除 MySQL 隱藏文件夾 在C 盤的 ProgramData 下會(huì)有一個(gè) MySQL 文件夾,這個(gè)文件夾要?jiǎng)h除, * ProgramData 是一個(gè)隱藏文件夾,需要設(shè)置顯示隱藏文件夾才能看到 步驟二 : 刪除注冊(cè)表項(xiàng) (一) Windows 運(yùn)行框(可通過同時(shí)按下...

[已解決] 卸載MySQL系統(tǒng)服務(wù),但還是存在于服務(wù)列表里_拾年一劍的博客-C...

C:\WINDOWS\system32sc delete mysql [SC] DeleteService 成功 C:\WINDOWS\system32sc delete mysql [SC] DeleteService 失敗 1072: 指定的服務(wù)已標(biāo)記為刪除。 解決 快捷鍵 Ctrl + Alt + Delete,打開系統(tǒng)任務(wù)管理器,查找 mysql...

最新發(fā)布 解決端口被占用問題,安裝MySQL出現(xiàn)端口被占用

1. 快捷鍵 Win +R 打開命令提示符,輸出命令: netstat -ano。上圖可以看出 占用3306 窗口的 PID值為 13620。選中該程序,鼠標(biāo)右鍵,點(diǎn)擊“結(jié)束任務(wù)”

繼續(xù)訪問

解決mysql重裝時(shí),3306端口被占用(完整版)

解決方法: 1、打開終端,輸入cmd,命令框內(nèi)輸入:netstat -ano 會(huì)顯示如下圖的內(nèi)容,殺死3306對(duì)應(yīng)端口的進(jìn)程即可 2、殺死進(jìn)程操作: taskkill /pid xxx -t -f xxx代表該端口的進(jìn)程ID,也就是上圖中pid一欄 例如:上面3306端口對(duì)應(yīng)的是5392 命令:taskkill /pid 5392 -t -f taskkill /pid 5392 -t -f 結(jié)果就顯示這樣: 如果說不能殺死,可能是權(quán)限的問題,用管理員權(quán)限打開終端,再執(zhí)行上述.

繼續(xù)訪問

安裝MySQL時(shí),輸入mysqld --install后,顯式該文件已存在

出現(xiàn)此現(xiàn)象的原因是因?yàn)樵谥耙呀?jīng)安裝過mysql并且在卸載時(shí)沒有刪除干凈。處理方法:1、以管理員身份運(yùn)行,輸入sc query mysql命令,查看名為mysql的服務(wù)2、輸入命令:sc delete mysql,刪除該mysql 3、再次執(zhí)行命令:mysqld --install即可...

MySQL卸載后服務(wù)依舊存在_daixiangcn的博客_mysql卸載后...

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Application\MySQL 解決方案 以管理員身份進(jìn)入cmd,輸入如下命令,刪除mysql scdeletemysql 1 運(yùn)行結(jié)果: 圖1.cmd窗口 可能出現(xiàn)的問題: ...

MySQL 3306端口被占用

開始-運(yùn)行-cmd, 輸入 netstat -ano, 看第一列,后面的就是端口,找到3306 ,記住對(duì)應(yīng)的PID然后打開任務(wù)管理器查看 - 選擇列 - 勾上 PID(進(jìn)程標(biāo)識(shí)符) - 確定 在任務(wù)管理器找到剛才的PID的進(jìn)程,查看是什么程序占用了端口,把它關(guān)閉在重新啟動(dòng)mysql就不會(huì)包端口被占用的錯(cuò)誤了...

繼續(xù)訪問

win10 mysql 卸載不干凈,安裝提示,已經(jīng)存在

1.Zip解壓后管理員身份運(yùn)行cmd(系統(tǒng)win10) 2.輸入命令cd /d F:\mysql-5.7.19-win32\bin(此為解壓目錄) 3.輸入安裝命令mysqld --install 出現(xiàn)問題The service already exists 這是由于之前已經(jīng)安裝過mysql并且沒有刪除干凈 4.重新以管理員身份運(yùn)行,輸入sc query mysql,查...

繼續(xù)訪問

MySql8安裝錯(cuò)誤信息:The service already exists!

一、錯(cuò)誤信息 The service already exists! The current server installed: E:\MySql_8_Package\mysql-8.0.15-winx64\bin\mysqld MySQL 錯(cuò)誤分析:我在進(jìn)行mysqld --install命令的時(shí)候出現(xiàn)以上錯(cuò)誤信息,該錯(cuò)誤提示表示(服務(wù)已經(jīng)存在!)。說明之前已經(jīng)安裝或存在過服務(wù)。 繼而觀察,提示下面的路徑是我之前安裝的路徑。并不是當(dāng)前安裝的路徑,最終得知我之前的卸載mysql的時(shí)候并沒有卸載干凈以至有所

繼續(xù)訪問

安裝mysql遇到服務(wù)已經(jīng)存在的錯(cuò)誤

前言 mysql是一個(gè)小巧,方便,快捷的數(shù)據(jù)庫軟件,雖然5.7版本已經(jīng)很大,主要是擴(kuò)展了多別的功能,但是5.5版本還是很小的,只有55mb,學(xué)習(xí)使用很方便, 但是mysql經(jīng)常因?yàn)樾遁d不干凈,會(huì)導(dǎo)致無法重新安裝數(shù)據(jù)庫,所以下面介紹一種處理方式

繼續(xù)訪問

刪除計(jì)算機(jī)中的某項(xiàng)服務(wù)(解決重裝MySQL等軟件時(shí)服務(wù)名已存在的問題)

昨天給電腦重裝MySQL進(jìn)行到配置服務(wù)時(shí),如下所示,顯示服務(wù)名MySQL57已被占用 怎么解決這種情況呢 第一種就是將電腦中名字為MySQL57的這個(gè)服務(wù)刪去 第二種是配置MySQL服務(wù)時(shí)命名一個(gè)新的服務(wù)名 第二種很簡(jiǎn)單,我可以將重裝的MySQL服務(wù)命名為MySQL58或者M(jìn)ySQL59,反正只要不是電腦中已存在的MySQL57就可以了 第一種就相對(duì)有點(diǎn)麻煩,具體步驟如下: 1.打開任務(wù)管理器,找到“服務(wù)”菜單下的MySQL57這個(gè)服務(wù)進(jìn)程,右鍵選擇“打開服務(wù)” 2.將該服務(wù)的服務(wù)名復(fù)制后點(diǎn)擊“取消

繼續(xù)訪問

Windows 安裝MySQL時(shí)出現(xiàn)(The service already exists)

以管理員的身份運(yùn)行cmd,然后再進(jìn)入MySQL的安裝目錄,下面是我的安裝路徑。出現(xiàn) The service already exists!這是由于之前已經(jīng)安裝過MySQL并且沒有刪除干凈。后面的操作,您自己來吧,或者看我的另一個(gè)。

繼續(xù)訪問

MySQL卸載后,服務(wù)仍然存在的解決方案

步驟一 : 刪除 MySQL 隱藏文件夾 在 C 盤的 ProgramData 下會(huì)有一個(gè) MySQL 文件夾,這個(gè)文件夾要?jiǎng)h除, * ProgramData 是一個(gè)隱藏文件夾,需要設(shè)置顯示隱藏文件夾才能看到! 步驟二 : 刪除注冊(cè)表項(xiàng) (一) Windows 運(yùn)行框(可通過同時(shí)按下 Windows徽標(biāo)鍵 + R鍵來調(diào)出這個(gè)運(yùn)行框)中輸入 regedit , 打開注冊(cè)表編輯窗口,逐級(jí)打開找到如下項(xiàng) : HKEY_LOCAL_MACHINE \ SYSTEM \ ControlSet001 \ Servic

繼續(xù)訪問

安裝寶塔面板時(shí),一直出現(xiàn)已檢測(cè)到mysql

解決方法:一定是mysql沒有完全卸載。卸載方法:1.程序刪除2.文件刪除:C盤的Program File,Program File(x86),ProgramData文件夾下的mysql文件(需要顯示隱藏的文件)3.注冊(cè)表刪除win+r輸入regedit刪除:HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Services\Eventlog\Application\MySQL文件夾。HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Ser

繼續(xù)訪問

安裝MySQL---已刪除服務(wù),卻顯示服務(wù)已存在

安裝MySQL過程及問題記錄 安裝MySQL 安裝MySQL zip全過程 安裝過程中服務(wù)未成功啟動(dòng) 重新安裝(命令:mysql --version),報(bào): 于是刪除指定服務(wù)(命令sc delete MySQL),重新安裝(命令:mysql --version),出現(xiàn)同樣問題,再次刪除顯示如下: 解決辦法 打開服務(wù)管理窗口(計(jì)算機(jī)–右鍵–管理),找到服務(wù)–MySQL–右鍵–重新啟動(dòng)(刷新),再...

繼續(xù)訪問

卸載mysql之后,mysql服務(wù)仍在,顯示讀取描述失敗,錯(cuò)誤代碼2

卸載mysql之后,mysql服務(wù)仍在,顯示讀取描述失敗,錯(cuò)誤代碼2 1.刪除C盤下的隱藏文件夾ProgramData里面的MySql文件夾。 2.cmd - regedit 回車,進(jìn)注冊(cè)表里面,刪除了里面的HKEY_LOCAL_MACHINE/SYSTEM/ControlSet001/Control/MySQL, HKEY_LOCAL_MACHINE/SYSTEM/ControlSet002/Control/MySQL, HKEY_LOCAL_MACHINE/SYSTEM/CurrentCont

繼續(xù)訪問

解決 卸載Mysql后,服務(wù)還在的問題

早就聽說要是之前裝的mysql沒卸載干凈再次安裝會(huì)出問題。所以按照網(wǎng)上完全卸載的教程老老實(shí)實(shí)地卸載掉之前的版本??稍俅伟惭b后還是出了個(gè)小問題,在命令行net start mysql啟動(dòng)服務(wù)的時(shí)候還是顯示服務(wù)已經(jīng)存在,真是讓我有點(diǎn)摸不著頭腦了。文件、注冊(cè)表是已經(jīng)卸載完全了,現(xiàn)在報(bào)的這個(gè)問題是服務(wù)仍然存在,經(jīng)過搜尋發(fā)現(xiàn)問題在于服務(wù)沒有移除掉,這時(shí)候只需以管理員的身份打開命令行,敲入sc del...

繼續(xù)訪問

重裝mysql時(shí)3306端口被占用解決方法

如果在安裝mysql中出現(xiàn)3306端口不能使用,已經(jīng)被占用的過程 則需要將該端口號(hào)的進(jìn)程釋放即可 根據(jù)該思路我們只需要找到該3306的進(jìn)程號(hào)并且消滅進(jìn)程即可 根據(jù)解決思路 方法前言 運(yùn)行cmd命令消滅進(jìn)程需要在管理員方式下運(yùn)行 否則會(huì)出現(xiàn)不給消滅不給權(quán)限的問題 類似這種不可訪問不給權(quán)限的設(shè)置 為了解決這種設(shè)置 正確思路: 在window中搜索命令提示符文,并且以管理員身份運(yùn)行即可 1.查找進(jìn)程號(hào) 可以使用一條命令netstat -aon|findstr "3306" 2.找到該進(jìn)程號(hào)后消滅其進(jìn)程號(hào)即可

繼續(xù)訪問

熱門推薦 cmd啟動(dòng)MySQL服務(wù)顯示服務(wù)名無效,MySQL服務(wù)無法啟動(dòng)

問題描述: 使用cmd啟動(dòng)mysql服務(wù)時(shí),顯示服務(wù)名無效。 原因分析: 1、MySQL服務(wù)端口被占用。 2、系統(tǒng)中沒有注冊(cè)MySQL到服務(wù)中,即當(dāng)前路徑下沒有mysql服務(wù)。 解決方案: 1.解決服務(wù)名無效 (1)在cmd中切換目錄到MySQL安裝路徑下的bin文件中。 如:E:\phpstudy_pro\Extensions\MySQL5.7.26\bin (2)移除MySQL(出現(xiàn)Service successfully install表示操作成功。) m

繼續(xù)訪問

安裝MySQL時(shí),輸入mysqld --install后,顯式該文件已存在

出現(xiàn)此現(xiàn)象的原因是因?yàn)樵谥耙呀?jīng)安裝過mysql并且在卸載時(shí)沒有刪除干凈。 處理方法:1、以管理員身份運(yùn)行,輸入sc query mysql命令,查看名為mysql的服務(wù) 2、輸入命令:sc delete mysql,刪除該mysql 3、再次執(zhí)行命令:mysqld --install即可成功 ...

繼續(xù)訪問

mysql 服務(wù)已經(jīng)存在_windows下mysql主從同步時(shí)從服務(wù)器出現(xiàn)表已經(jīng)存在解決辦法

問題如下:mysqlshowslavestatus\G***************************1.row***************************Slave_IO_State:Master_Host:172.168.3.190Master_User:slaveMaster_Port:12148Connect_Retry:60Master_Lo...

繼續(xù)訪問

MySQL安裝時(shí)輸入命令mysqld --initialize --console顯示the service is already installed

卸載guomysql后再次安裝時(shí),輸入命令mysqld --initialize --console顯示the service is already installed。1、以管理員身份運(yùn)行cmd,輸入命令查看名為mysql的服務(wù)。出現(xiàn)這種問題說明卸載之前的MySQL是并沒有卸載干凈。3、刪除完成后,再次輸入安裝命令進(jìn)行安裝。2、輸入命令刪除該mysql服務(wù)。

繼續(xù)訪問

mysql端口被占用了如何解決_如何解決Win10安裝MYSQL端口被占用?

Windows10系統(tǒng)安裝MYSQL端口被占用怎么辦?現(xiàn)在越來越多的人從Windows7系統(tǒng)升級(jí)到了Windows10系統(tǒng),相信很多朋友在使用Windows10系統(tǒng)的時(shí)候都遇到了端口被占用的情況,MYSQL的端口號(hào)默認(rèn)是3306,最近就有朋友遇到了MYSQL端口被占用的情況,該如何解決?下面小編就為大家介紹一下Win10系統(tǒng)安裝MYSQL被占用的解決方法,希望大家會(huì)喜歡。Win10系統(tǒng)安裝MYSQ...

繼續(xù)訪問

mysql服務(wù)已存在

windows重啟mysql顯示Too many connections怎么辦

您好,很高興為您解答。

一、mysql服務(wù)

我的電腦——(右鍵)管理——服務(wù)與應(yīng)用程序——服務(wù)——MYSQL——開啟(停止、重啟動(dòng))

二、命令行方式

Windows

1.點(diǎn)擊“開始”-“運(yùn)行”(快捷鍵Win+R)。

2.啟動(dòng):輸入 net stop mysql

3.停止:輸入 net start mysql

提示* Redhat Linux 也支持service command,啟動(dòng):# service mysqld start 停止:# service mysqld stop 重啟:# service mysqld restart

* Windows下不能直接重啟(restart),只能先停止,再啟動(dòng)。

可以通過批處理完成,保存為:mysqlreset.bat

net?stop?mysql

net?start?mysql

三、Too many connections

2008-04-30┆379,578 Views┆56,071

錯(cuò)誤編號(hào):1040

問題分析:

連接數(shù)超過了 MySQL 設(shè)置的值,與 max_connections 和 wait_timeout? 都有關(guān)系。

wait_timeout 的值越大,連接的空閑等待就越長(zhǎng),這樣就會(huì)造成當(dāng)前連接數(shù)越大。

解決方法:

1、虛擬主機(jī)用戶請(qǐng)聯(lián)系空間商優(yōu)化 MySQL 服務(wù)器的配置;

2、獨(dú)立主機(jī)用戶請(qǐng)聯(lián)系服務(wù)器管理員優(yōu)化 MySQL 服務(wù)器的配置,可參考:

修改 MySQL 配置文件(Windows下為 my.ini, Linux下為 my.cnf )中的參數(shù):

max_connections=?1000?

wait_timeout?=?5

如果沒有可以自行添加,修改后重啟 MySQL ,如果經(jīng)常性的報(bào)此錯(cuò)誤,請(qǐng)按照服務(wù)器環(huán)境搭建教程檢查服務(wù)器。

如若滿意,請(qǐng)點(diǎn)擊右側(cè)【采納答案】,如若還有問題,請(qǐng)點(diǎn)擊【追問】

希望我的回答對(duì)您有所幫助,望采納!

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ~ O(∩_∩)O~

安裝mysql的最后一步出現(xiàn)這樣,怎么辦?。?!

錯(cuò)誤代碼 1045

Access denied for user 'root'@'localhost' (using password:YES)

解決辦法是重新設(shè)置root用戶密碼,在Windows平臺(tái)下操作步驟如下:

1、以系統(tǒng)管理員身份登錄到系統(tǒng);

2、如果MySQL服務(wù)器正在運(yùn)行,停止它。

如果是作為Windows服務(wù)運(yùn)行的服務(wù)器,進(jìn)入服務(wù)管理器:開始菜單-控制面板-管理工具-服務(wù)

如果服務(wù)器不是作為服務(wù)而運(yùn)行的,可能需要使用任務(wù)管理器來強(qiáng)制停止它。

3、創(chuàng)建1個(gè)文本文件,并將下述命令置于單一行中:

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPassword');

用任意名稱保存該文件。在本例中,該文件為C:\mysql-init.txt。

4、進(jìn)入DOS命令提示:開始菜單-運(yùn)行- cmd

假定你已將MySQL安裝到C:\mysql。如果你將MySQL安裝到了另一位置,請(qǐng)對(duì)下述命令進(jìn)行相應(yīng)的調(diào)整。

在DOS命令提示符下,執(zhí)行命令:

C:\ C:\mysql\bin\mysqld-nt --init-file=C:\mysql-init.txt

在服務(wù)器啟動(dòng)時(shí),執(zhí)行由“--init-file”選項(xiàng)(作用:在啟動(dòng)時(shí)從指定的文件中讀取SQL命令)命名的文件的內(nèi)容,更改根用戶密碼。當(dāng)服務(wù)器成功啟動(dòng)后,應(yīng)刪除C:\mysql-init.txt。

5、停止MySQL服務(wù)器,然后在正常模式下重啟它。如果以服務(wù)方式運(yùn)行服務(wù)器,應(yīng)從Windows服務(wù)窗口啟動(dòng)它。如果以手動(dòng)方式啟動(dòng)了服務(wù)器,能夠像正常情形下一樣使用命令。

應(yīng)能使用新密碼進(jìn)行連接

mysql讀寫分離都是yes不更新數(shù)據(jù)

起因:發(fā)現(xiàn) MySQL Slave 數(shù)據(jù)庫 各項(xiàng)狀態(tài)正常即SQL 線程 IO線程正常,但就是數(shù)據(jù)不更新,解決辦法每次重啟服務(wù) 恢復(fù)正常。 1.首先要確定主服務(wù)器與從服務(wù)器的數(shù)據(jù)庫是否一樣,比如主數(shù)據(jù)庫有,demo,test,lomo,manage。從數(shù)據(jù)庫也必須有這些數(shù)據(jù)庫。如果主從服務(wù)器數(shù)據(jù)庫一致則忽律此步。 2. Slave數(shù)據(jù)庫my.cnf 配置文件添加如下配置 slave_net_timeout=30 配置好之后將從服務(wù)器的數(shù)據(jù)重新從主服務(wù)器拉取一下。保持?jǐn)?shù)據(jù)跟主服務(wù)器一致 重啟MySQL服務(wù):service mysqld restart

面試官:MySQL權(quán)限表損壞導(dǎo)致無法啟動(dòng)怎么辦?

一、背景

近期,公司RDS云產(chǎn)品的MySQL Server版本進(jìn)行升級(jí),由目前使用的5.7.26版本升級(jí)到最新版本5.7.31;升級(jí)后測(cè)試同學(xué)發(fā)現(xiàn):在MySQL創(chuàng)建用戶后,5.7.31版本重新啟動(dòng)集群會(huì)出現(xiàn)啟動(dòng)失敗的現(xiàn)象;而5.7.26版本在相同測(cè)試場(chǎng)景下是正常啟動(dòng)的。這到底是為什么呢?

二、問題復(fù)現(xiàn)

2.1 實(shí)驗(yàn)環(huán)境

2.2 操作步驟

按照測(cè)試同學(xué)的測(cè)試步驟,首先創(chuàng)建一個(gè)用戶:

然后關(guān)閉mysqld;這里需要介紹一下,我們集群的關(guān)閉方式是如下方式:

這種方式的內(nèi)部實(shí)現(xiàn)類似于kill -9模式。所以我在線下環(huán)境使用kill -9的方式來復(fù)現(xiàn),操作如下:

然后重啟mysqld,操作如下:

此時(shí)問題復(fù)現(xiàn)了,mysqld啟動(dòng)失敗,我們查看了下error日志,信息如下:

根據(jù)報(bào)錯(cuò)信息可以看出:MySQL的權(quán)限系統(tǒng)表發(fā)生了損壞,導(dǎo)致了mysqld啟動(dòng)失敗;由于在MySQL 5.7及其之前版本該表是MyISAM引擎,且該引擎不支持事務(wù),所以在mysqld異常崩潰會(huì)導(dǎo)致該類型引擎表的損壞;但在mysqld啟動(dòng)時(shí)是有參數(shù)控制MyISAM引擎的恢復(fù)模式,且該參數(shù)在我們產(chǎn)品中也配置到了my.cnf中,如下所示:

2.3 參數(shù)解析

對(duì)于該參數(shù)的官方文檔的解釋如下:

設(shè)置MyISAM存儲(chǔ)引擎恢復(fù)模式。選項(xiàng)值是OFF、DEFAULT、BACKUP、FORCE或QUICK的值的任意組合。如果指定多個(gè)值,請(qǐng)用逗號(hào)分隔。指定不帶參數(shù)的選項(xiàng)與指定DEFAULT相同,指定顯式值" "將禁用恢復(fù)(與OFF值相同)。如果啟用了恢復(fù),則mysqld每次打開MyISAM表時(shí),都會(huì)檢查該表是否標(biāo)記為已崩潰或未正確關(guān)閉。(只有在禁用外部鎖定的情況下運(yùn)行,最后一個(gè)選項(xiàng)才起作用。)在這種情況下,mysqld在表上運(yùn)行檢查。如果表已損壞,mysqld將嘗試對(duì)其進(jìn)行修復(fù)。

服務(wù)器自動(dòng)修復(fù)表之前,它將有關(guān)修復(fù)的注釋寫到錯(cuò)誤日志中。如果您希望能夠在無需用戶干預(yù)的情況下從大多數(shù)問題中恢復(fù),則應(yīng)使用選項(xiàng)BACKUP,F(xiàn)ORCE。即使某些行將被刪除,這也會(huì)強(qiáng)制修復(fù)表,但是它將舊的數(shù)據(jù)文件保留為備份,以便您以后可以檢查發(fā)生了什么。

全局變量,只讀變量,默認(rèn)為OFF。

三、問題修復(fù)

這類MySQL用戶表損耗的問題解決方式也是有多種,我這里列舉其中一種:

(1)my.cnf中的[mysqld]標(biāo)簽下添加skip_grant_tables,啟動(dòng)時(shí)跳過加載系統(tǒng)字典。

(2)重啟mysqld,然后修復(fù)mysql schema下的所有表。

(3)在[mysqld]標(biāo)簽下注釋或刪除掉skip_grant_tables,然后重啟mysqld。

此時(shí)mysqld是可以正常啟動(dòng)的,無異常。

四、深入排查

在產(chǎn)品化中,以上修復(fù)方式很不優(yōu)雅,只是作為臨時(shí)的解決方案;并且也存在一些令人疑惑的點(diǎn):

帶著這些疑問,我們繼續(xù)排查出現(xiàn)該現(xiàn)象的原因;此時(shí)Google也沒有找到一些有效的信息,那么只能通過MySQL源代碼來尋找一些答案。

首先需要下載mysql 5.7.31版本的源代碼,并搭建mysql debug環(huán)境;具體步驟可以自動(dòng)Google搜索一下,本文就不再贅述了。

在源代碼中搜索一下關(guān)鍵詞,用于打斷點(diǎn)的位置,然后進(jìn)行調(diào)試:

定位到相關(guān)代碼,大概是sql/mysqld.cc的4958行,且存在if條件判斷,此時(shí)我們開始調(diào)試:

通過以上調(diào)試信息,可以判斷出acl_init函數(shù)返回的值為真;此時(shí)我們查看該函數(shù)的代碼 (sql/auth/sql_auth_cache.cc:1365):

根據(jù)該函數(shù)的注釋發(fā)現(xiàn):該函數(shù)是初始化負(fù)責(zé)用戶/數(shù)據(jù)庫級(jí)特權(quán)檢查的結(jié)構(gòu),并從mysql schema中的表中為其加載特權(quán)信息;且return值為1代表的是初始化權(quán)限失敗。

此后開始逐步調(diào)試,觀察return相關(guān)信息,當(dāng)調(diào)試到lock_table_names函數(shù)時(shí),我們發(fā)現(xiàn)在Phase 3時(shí)return值為true,且根據(jù)代碼注釋發(fā)現(xiàn)true代表是Failure;具體代碼如下(sql/sql_base.cc:5549):

調(diào)試信息如下:

可以看到flags的值為0,而MYSQL_OPEN_SKIP_SCOPED_MDL_LOCK為宏定義值0x1000,與flags的值 做按位與操作,結(jié)果自然也是0,當(dāng)然MYSQL_LOCK_IGNORE_GLOBAL_READ_ONLY也是如此;need_global_read_lock_protection是bool類型值,代表是否需要全局讀鎖的保護(hù),這個(gè)值是在table- mdl_request.type不為MDL_SHARED_READ_ONLY發(fā)生改變;check_readonly函數(shù)相關(guān)信息 下面概述。

此時(shí)也查看了下MySQL 5.7.26版本代碼作為對(duì)比,發(fā)現(xiàn)lock_table_names函數(shù)下的Phase 3后的部分代 碼是在5.7.29版本后新增的。如果是git clone的MySQL代碼可以用git blame命令查詢文件變化的信息:

上述展示的信息中,最左側(cè)的列值為commit id為05824063和0405ebee,有興趣的同學(xué)可以詳細(xì)看下。

此功能解決的問題是 BUG#28438114: SET READ_ONLY=1 SOMETIMES DOESN'T BLOCK CONCURRENT DDL.;當(dāng)然這個(gè)代碼的變更功能也在5.7 Release Notes中有所體現(xiàn),如下所示( m/doc/relnotes/mysql/5.7/en/news-5-7-29.html ):

最后我們?cè)俨榭聪耤heck_readonly函數(shù),該函數(shù)是基于read_only和super_read_only狀態(tài)執(zhí)行標(biāo)準(zhǔn)化檢查,是禁止(TRUE)還是允許(FALSE)操作。代碼如下(sql/auth/sql_authorization.cc:489):

此時(shí)第一反應(yīng)就是去檢查my.cnf中是否包含read_only相關(guān)參數(shù),檢查之后發(fā)現(xiàn)確實(shí)是使用了該參數(shù), 如下:

此時(shí)注釋掉該參數(shù),然后再次啟動(dòng)mysqld,發(fā)現(xiàn)MyISAM表可以自動(dòng)修復(fù),且正常啟動(dòng);error log信息如下:

由于docker一些限制,我們?cè)趍ysqld啟動(dòng)會(huì)涉及兩次;所以解決該問題的方式為:第一次mysqld的啟動(dòng)時(shí)先關(guān)閉read_only參數(shù),第二次啟動(dòng)時(shí)開啟read_only參數(shù)。之所以選擇默認(rèn)開啟read_only參數(shù), 是為了避免在mysqld啟動(dòng)后,選主邏輯未完成時(shí)的保護(hù)措施;當(dāng)然選主完成后,會(huì)自動(dòng)對(duì)master執(zhí)行 set global read_only=0 操作。

五、總結(jié)

六、附錄

調(diào)試的棧幀信息如下,有興趣的小伙伴可以研究下:

熟悉MySQL體系結(jié)構(gòu)和innodb存儲(chǔ)引擎工作原理;以及MySQL備份恢復(fù)、復(fù)制、數(shù)據(jù)遷移等技術(shù);專注于MySQL、MariaDB開源數(shù)據(jù)庫,喜好開源技術(shù)。

原文鏈接:


本文題目:mysql閃現(xiàn)怎么辦 mysql一閃而過
網(wǎng)站地址:http://www.dlmjj.cn/article/doceigo.html