很多朋友都想知道linux怎么查看mysql的狀態(tài)?下面就一起來說說吧!
創(chuàng)新互聯(lián)專注于深州企業(yè)網(wǎng)站建設(shè),成都響應(yīng)式網(wǎng)站建設(shè)公司,成都商城網(wǎng)站開發(fā)。深州網(wǎng)站建設(shè)公司,為深州等地區(qū)提供建站服務(wù)。全流程按需網(wǎng)站設(shè)計,專業(yè)設(shè)計,全程項目跟蹤,創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務(wù)
linux查看mysql的狀態(tài)
1、打開linux系統(tǒng),在linux的桌面的空白處右擊。
2、在彈出的下拉選項里,點擊打開終端。
3、然后在終端窗口使用命令#servicemysqldstatus可以查看到mysql相應(yīng)的狀態(tài)。
4、顯示mysqldisstopped為停止?fàn)顟B(tài),顯示mysqldisrunning為啟動狀態(tài)。
以上就是小編的分享,希望能幫助到大家。
業(yè)務(wù)有兩個 MySQL 集群是通過 MQ 進行同步的,昨晚 MQ 出現(xiàn)異常,報了很多主鍵沖突,想請 dba 幫忙校驗一下兩個集群的數(shù)據(jù)是否一致。
當(dāng)接到這個需求的時候并沒當(dāng)回事,隱約有點印象 pt-table-checksum 能通過 dsn 實現(xiàn) MySQL 的數(shù)據(jù)校驗,所以當(dāng)時就應(yīng)承下來了。不曾想,啪啪打臉,回想起來真是草率了。
本文參考的是 pt-table-checksum 的校驗邏輯,基于數(shù)據(jù)塊去遍歷每個表,然后比對 checksum 的值判斷該塊是否一致,本文主要是想聊聊我在實現(xiàn)數(shù)據(jù)校驗?zāi)_本過程中遇到的問題以及解決思路,希望對大家有幫助。
利用線上的配置文件搭建一套主從環(huán)境。
這個用例將通過 dsn 方式連接從庫。
這個用例將通過 dsn 方式連接從庫,但是會將從庫的復(fù)制鏈路 stop 掉,并清空復(fù)制信息。
熟悉 pt-table-checksum 的朋友應(yīng)該都知道,該工具是基于主鍵(非空唯一鍵)進行掃描數(shù)據(jù)行,其實這個邏輯針對整型單列主鍵實現(xiàn)起來很簡單,但是如果是聯(lián)合主鍵且是字符型,好像就沒那么簡單了,有興趣的可以思考一下。下面我先說一下大致的邏輯:
第一步:判斷 _min_rowid 是否為空,為空就取該表的第一行,并記作 _min_rowid 。
第二步:根據(jù) _min_rowid 作為條件進行掃描該表,取下一個數(shù)據(jù)塊的數(shù)據(jù),記錄數(shù)據(jù)塊的最后一行數(shù)據(jù)的主鍵值,記錄 checksum 的值,并記下 _min_rowid 。
第三步:判斷_min_rowid是否為空,非空重復(fù)第二步,為空退出檢查。
通過上述三個步驟可以看到,如果是單列整型的主鍵,實現(xiàn)起來很簡單,但是問題來了,業(yè)務(wù)的表的主鍵五花八門,有的是聯(lián)合主鍵,有的是字符型的聯(lián)合主鍵,還有整型+字符型的聯(lián)合主鍵,那么上述的實現(xiàn)方式顯然是有問題的。所以實現(xiàn)起來需要多考慮幾個問題:
鑒于存在上述兩個問題,可以參考如下實現(xiàn)邏輯:
假如有這么一個聯(lián)合主鍵字段 primary key(a,b,c) 都是整型,該如何編寫遍歷 sql 呢?起初我的想法很簡單,具體如下:
至此在編寫校驗?zāi)_本過程遇到的兩個問題就算告一段落了,剩下的就是各種邏輯處理了,不過多贅述,有興趣的可以自行閱讀腳本文件。
本著最低程度影響業(yè)務(wù),所以取消加鎖邏輯。但是又要保證該數(shù)據(jù)塊的數(shù)據(jù)一致性,如果這個數(shù)據(jù)塊是個熱數(shù)據(jù),當(dāng)前正在變更,那么校驗的時候難免會不一致。所以只能通過多次校驗實現(xiàn),默認是校驗20次,其中有一次校驗結(jié)果是一致,就認為是一致的,如果前5次校驗過程中,這個數(shù)據(jù)塊的數(shù)據(jù)沒有變化,也視為不一致(可能是因為延遲,也可能是真的不一致)。
pt-table-checksum 不校驗表結(jié)構(gòu),改寫時添加表結(jié)構(gòu)的校驗。
可以基于表的并行校驗,可由用戶指定并行數(shù),但是腳本有個安全機制,如果用戶指定的并行數(shù)大于當(dāng)前 cpu 空閑核心數(shù),就會按當(dāng)前(空閑核心數(shù)-1)作為并行數(shù)。
添加網(wǎng)絡(luò)監(jiān)控,由用戶指定網(wǎng)絡(luò)上限百分比,當(dāng)網(wǎng)卡流量超過這個百分比就暫停任務(wù),等待網(wǎng)卡流量低于閾值才會繼續(xù)任務(wù)。這個主要是出于對于中間件(mycat)的場景或者分布式數(shù)據(jù)庫(tidb)的場景。
支持定時任務(wù)功能,用戶可以使用這個功能規(guī)避業(yè)務(wù)高峰,僅在業(yè)務(wù)低峰進行數(shù)據(jù)校驗。
不僅限于主從節(jié)點的校驗,只要目標(biāo)對象支持 MySQL 的標(biāo)準(zhǔn) SQL 語法就能做數(shù)據(jù)校驗。
校驗邏輯是通過 SQL 采集目標(biāo)節(jié)點的數(shù)據(jù)庫,如果目標(biāo)數(shù)據(jù)庫系統(tǒng)當(dāng)前存在異常,無疑是雪上加霜,將會觸發(fā)未知問題,所以添加超時機制,單次取數(shù)據(jù)塊的閾值是5s,超過5秒就放棄等待重試。測試發(fā)現(xiàn),有時候即便觸發(fā)超時了,但是 SQL 任務(wù)還是會在目標(biāo)數(shù)據(jù)庫的 processlist 中能看到,所以又添加了一個 kill 機制,超時后會觸發(fā)一個 kill processlist id 的動作。另外為了避免 kill 錯,在每個 SQL 對象添加了一個32位的 md5 值,每次 kill 的時候會校驗這個 md5 值。
本工具借鑒 pt-table-checksum 工具思路改寫,可以檢查隨意兩個 mysql(支持 mysql sql 語法的數(shù)據(jù)庫)節(jié)點的數(shù)據(jù)一致性。
基于主鍵以一個塊遍歷數(shù)據(jù)表,比對checksum的值,塊的大小可通過參數(shù)指定。 (1)獲取該表的第一個數(shù)據(jù)塊的查詢SQL。 (2)將兩個目標(biāo)節(jié)點的數(shù)據(jù)塊的checksum的值,記錄到臨時文件,file1 file2。 (3)比對file1 file2是否一致。
第一步:先開啟一個 screen 監(jiān)控網(wǎng)絡(luò)
第二步:新開啟一個screen執(zhí)行校驗任務(wù)
(1)info.log 文件
(2)list目錄
(3)md5 目錄
(4)pri 目錄
(5)res 目錄
這是 table 目錄下記錄某個數(shù)據(jù)塊不一致的一個例子
這是 diff 目錄下記錄某個數(shù)據(jù)行不一致的一個例子
(6)skip.log 文件
本工具是參考了 pt-table-checksum 工具的一些思路并結(jié)合自身經(jīng)驗進行改寫,尚有很多不足之處,僅做學(xué)習(xí)交流之用, 如有線上環(huán)境使用需求,請在測試環(huán)境充分測試。
安裝完MySQL數(shù)據(jù)庫以后,我們要做的就是驗證MySQL是否安裝成功。那么如何進行驗證呢?下面我就給大家分享一下。
工具/材料
CMD命令行
01
按下Ctrl+R組合鍵,打開運行界面,輸入CMD命令,如下圖所示
02
在打開的CMD命令行中我們輸入mysql命令,注意-u代表的是登錄用戶,-p代表的是登錄密碼,如下圖所示
03
按回車以后就進入到了mysql的命令模式,如下圖所示,這里還不能完全驗證mysql是否安裝成功,接下來我們還需要進一步的驗證
04
我們在mysql命令模式下面輸入show databases命令,如果顯示了如下圖所示的數(shù)據(jù)庫信息則證明了mysql安裝成功了
方法如下:
、進入mysql,創(chuàng)建一個新用戶kay:
2、 格式:grant 權(quán)限 on 數(shù)據(jù)庫名.表名 用戶@登錄主機 identified by "用戶密碼";
grant select,update,insert,delete on *.* to kay@192.168.1.8 identified by "kaypass";
3、 查看結(jié)果,執(zhí)行:
use mysql;
select host,user,password from user;
可以看到在user表中已有剛才創(chuàng)建的kay用戶。host字段表示登錄的主機,其值可以用IP,也可用主機名,
將host字段的值改為%就表示在任何客戶端機器上能以kay用戶登錄到mysql服務(wù)器,建議在開發(fā)時設(shè)為%。
update user set host = '%' where user = 'kay';
還有一個方法::
A、 ./mysqladmin -uroot -p21century reload
./mysqladmin -uroot -p21century shutdown
B、./mysqld_safe --user-root
記住:對授權(quán)表的任何修改都需要重新reload,即執(zhí)行第3步。
首先進入命令行下:
以root用戶登錄,命令:mysql -uroot -p 回車 輸入密碼;
mysqluse mysql;
mysqlUPDATE user SET password=PASSWORD('輸入新密碼') WHERE user='root';
mysqlFLUSH PRIVILEGES;
已經(jīng)完成。
現(xiàn)象
一線的工程師反映了一個奇怪的現(xiàn)象,剛剛從 MySQL 官網(wǎng)上下載了一個 MySQL 5.7.31。安裝完成后,發(fā)現(xiàn)使用任何密碼都能登陸 MySQL,修改密碼也不管用,重新啟動 MySQL 也不能解決。
分析
懷疑使用了 --skip-grant-tables 使用 mysqld --print-defaults 檢查,沒有發(fā)現(xiàn)。
檢查登陸用戶,都是 root@localhost,說明和 proxy user 沒有關(guān)系。
使用 mysql --print-defaults 檢查客戶端是否設(shè)置默認的用戶和密碼,沒有發(fā)現(xiàn)。
發(fā)現(xiàn)一切都正常,再檢查 plugin 字段,發(fā)現(xiàn)只有 root 用戶是 auth_socket ,其它的用戶都是 mysql_native_password,問題可能就出在這兒。
問題解決
對 auth_socket 驗證插件不了解,感覺是這個插件不安全,使用下面的命令修改后,問題解決:
update user set plugin="mysql_native_password" where user='root';
auth_socket 驗證插件的使用場景
問題解決后,又仔細研究了一下 auth_socket 這個插件,發(fā)現(xiàn)這種驗證方式有以下特點:
首先,這種驗證方式不要求輸入密碼,即使輸入了密碼也不驗證。這個特點讓很多人覺得很不安全,實際仔細研究一下這種方式,發(fā)現(xiàn)還是相當(dāng)安全的,因為它有另外兩個限制;
只能用 UNIX 的 socket 方式登陸,這就保證了只能本地登陸,用戶在使用這種登陸方式時已經(jīng)通過了操作系統(tǒng)的安全驗證;
操作系統(tǒng)的用戶和 MySQL 數(shù)據(jù)庫的用戶名必須一致,例如你要登陸 MySQL 的 root 用戶,必須用操作系統(tǒng)的 root 用戶登陸。
auth_socket 這個插件因為有這些特點,它很適合我們在系統(tǒng)投產(chǎn)前進行安裝調(diào)試的時候使用,而且也有相當(dāng)?shù)陌踩裕驗橄到y(tǒng)投產(chǎn)前通常經(jīng)常同時使用操作系統(tǒng)的 root 用戶和 MySQL 的 root 用戶。當(dāng)我們在系統(tǒng)投產(chǎn)后,操作系統(tǒng)的 root 用戶和 MySQL 的 root 用戶就不能隨便使用了,這時可以換成其它的驗證方式,可以使用下面的命令進行切換:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'test';
網(wǎng)站欄目:mysql怎么驗證 mysql怎么看
轉(zhuǎn)載源于:http://chinadenli.net/article22/dooosjc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供虛擬主機、網(wǎng)頁設(shè)計公司、微信公眾號、商城網(wǎng)站、全網(wǎng)營銷推廣、網(wǎng)站設(shè)計
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)