如何修復由於mysql連接器c(mysql測試連接失敗)

本文目錄一覽:

系統崩潰後,關於MYSQL恢復資料庫的問題!求救啊!

MySQL 在崩潰恢復時,會遍歷打開所有 ibd 文件的 header page 驗證數據字典的準確性,如果 MySQL 中包含了大量表,這個校驗過程就會比較耗時。 MySQL 下崩潰恢復確實和表數量有關,表總數越大,崩潰恢復時間越長。另外磁碟 IOPS 也會影響崩潰恢復時間,像這裡開發庫的 HDD IOPS 較低,因此面對大量的表空間,校驗速度就非常緩慢。另外一個發現,MySQL 8 下正常啟用時居然也會進行表空間校驗,而故障恢復時則會額外再進行一次表空間校驗,等於校驗了 2 遍。不過 MySQL 8.0 里多了一個特性,即表數量超過 5W 時,會啟用多線程掃描,加快表空間校驗過程。

如何跳過校驗MySQL 5.7 下有方法可以跳過崩潰恢復時的表空間校驗過程嘛?查閱了資料,方法主要有兩種:

1. 配置 innodb_force_recovery可以使 srv_force_recovery != 0 ,那麼 validate = false,即可以跳過表空間校驗。實際測試的時候設置 innodb_force_recovery =1,也就是強制恢復跳過壞頁,就可以跳過校驗,然後重啟就是正常啟動了。通過這種臨時方式可以避免崩潰恢復後非常耗時的表空間校驗過程,快速啟動 MySQL,個人目前暫時未發現有什麼隱患。2. 使用共享表空間替代獨立表空間這樣就不需要打開 N 個 ibd 文件了,只需要打開一個 ibdata 文件即可,大大節省了校驗時間。自從聽了姜老師講過使用共享表空間替代獨立表空間解決 drop 大表時性能抖動的原理後,感覺共享表空間在很多業務環境下,反而更有優勢。

臨時冒出另外一種解決想法,即用 GDB 調試崩潰恢復,通過臨時修改 validate 變數值讓 MySQL 跳過表空間驗證過程,然後讓 MySQL 正常關閉,重新啟動就可以正常啟動了。但是實際測試發現,如果以 debug 模式運行,確實可以臨時修改 validate 變數,跳過表空間驗證過程,但是 debug 模式下代碼運行效率大打折扣,反而耗時更長。而以非 debug 模式運行,則無法修改 validate 變數,想法破滅。

如何修復MySQL資料庫

來快速修復所有的資料庫或者特定的資料庫;

方法:進入Mysql的Bin目錄:C:\Program

Files\MySQL\MySQL Server 4.1\bin 運行:mysqlcheck -A -o

-r -uroot -p123 注意,將123改成你自己的root用戶密碼 希望能解決您的問題。

怎樣修復mysql表

也許很多人遇到過類似Can』t open file: 『[Table]mytable.MYI』 這樣的錯誤信息,卻不知道怎麼解決他,下面我們做個介紹,

多數情況下,資料庫被破壞只是指索引文件受到了破壞,真正的數據被破壞掉的情況非常少。大多數形式的資料庫破壞的的修復相當簡單。

和前面的校驗一樣,修復的方式也有三種。

下面講的方法只對MyISAM格式的表有效。其他類型的損壞需要從備份中恢復。

1,REPAIR TABLE SQL statement(mysql服務必須處於運行狀態)。

2,命令mysqlcheck(mysql服務可以處於運行狀態)。

3,命令myisamchk(必須停掉mysql服務,或者所操作的表處於不活動狀態)。

在修復表的時候,最好先作一下備份。所以你需要兩倍於原始表大小的硬碟空間。請確保在進行修復前你的硬碟空間還沒有用完。

1用」repair table」方式修復

語法:repair table 表名 [選項]

選項如下:

QUICK 用在數據表還沒被修改的情況下,速度最快

EXTENDED 試圖去恢復每個數據行,會產生一些垃圾數據行,萬般無奈的情況下用

USE_FRM 用在.MYI文件丟失或者頭部受到破壞的情況下。利用.frm的定義來重建索引

多數情況下,簡單得用」repair table tablename」不加選項就可以搞定問題。但是當.MYI文件丟失或者頭部受到破壞時,這樣的方式不管用,例如:

mysql REPAIR TABLE mytable;

+————————-+——–+———-+———————————————+

| Table | Op | Msg_type | Msg_text |

+————————-+——–+———-+———————————————+

| sports_results.mytable | repair | error | Can』t find file: 『mytable.MYI』 (errno: 2) |

+————————-+——–+———-+———————————————+

修復失敗的原因時索引文件丟失或者其頭部遭到了破壞,為了利用相關定義文件來修復,需要用USE_FRM選項。例如:

mysql REPAIR TABLE mytable USE_FRM;

+————————-+——–+———-+————————————+

| Table | Op | Msg_type | Msg_text |

+————————-+——–+———-+————————————+

| sports_results.mytable | repair | warning | Number of rows changed from 0 to 2 |

| sports_results.mytable | repair | status | OK |

+————————-+——–+———-+————————————+

我們可以看到Msg_test表項的輸出信息」ok」,表名已經成功修復受損表。

2用mysql內建命令mysqlcheck來修復

當mysql服務在運行時,也可以用mysql內建命令mysqlcheck來修復。

語法:mysqlcheck -r 資料庫名 表名 -uuser -ppass

%mysqlcheck -r sports_results mytable -uuser -ppass

sports_results.mytable OK

利用mysqlcheck可以一次性修復多個表。只要在資料庫名後列出相應表名即可(用空格隔開)。或者資料庫名後不加表名,將會修復資料庫中的所有表,例如:

%mysqlcheck -r sports_results mytable events -uuser -ppass

sports_results.mytable OK

sports_results.events OK

%mysqlcheck -r sports_results -uuser -ppass

sports_results.mytable OK

sports_results.events OK

3用myisamchk修復

用這種方式時,mysql服務必須停掉,或者所操作的表處於不活動狀態(選項skip-external-locking沒被使用)。記著一定要在相關.MYI文件的路徑下或者自己定義其路徑。

語法:myisamchk [選項] [表名]

下面是其選項和描述

–backup, -B 在進行修復前作相關表得備份

–correct-checksum 糾正校驗和

–data-file-length=#, -D # 重建表時,指定數據文件得最大長度

–extend-check, -e 試圖去恢復每個數據行,會產生一些垃圾數據行,萬般無奈的情況下用

–force, -f 當遇到文件名相同的.TMD文件時,將其覆蓋掉。

keys-used=#, -k # 指定所用的keys可加快處理速度,每個二進位位代表一個key.第一個key為0

–recover, -r 最常用的選項,大多數破壞都可以通過它來修復。如果你的內存足夠大,可以增大參數sort_buffer_size的值來加快恢復的速度。但是遇到唯一鍵由於破壞而不唯一 的表時,這種方式不管用。

–safe-recover -o 最徹底的修復方式,但是比-r方式慢,一般在-r修復失敗後才使用。這種方式讀出 所有的行,並以行為基礎來重建索引。它的硬碟空間需求比-r方式稍微小一點,因 為它沒創建分類緩存。你可以增加key_buffer_size的值來加快修復的速度。

–sort-recover, -n mysql用它類分類索引,儘管結果是臨時文件會非常大

–character-sets-dir=… 包含字符集設置的目錄

–set-character-set=name 為索引定義一個新的字符集

–tmpdir=path, -t 如果你不想用環境變數TMPDIR的值的話,可以自定義臨時文件的存放位置

–quick, -q 最快的修復方式,當數據文件沒有被修改時用,當存在多鍵時,第二個-q將會修改 數據文件

–unpack, -u 解開被myisampack打包的文件

myisamchk應用的一個例子

% myisamchk -r mytable

– recovering (with keycache) MyISAM-table 『mytable.MYI』

怎麼恢復mysql資料庫怎麼恢複數據

簡單情況下:進入原來mysql安裝路徑下的data文件夾下,找到相應的庫和ibdata1,進行copy,就可回復原來的數據。

複雜情況下:

從另一台機上把MySQL資料庫的mysql文件夾拷貝到本地機上,目的是恢複本地機對數據的訪問和操作。經過如下幾種情況的操作。

1. 在本地重裝MySQL(安裝目錄D:\Program Files\MySQL\MySQL Server 5.0),直接把mysql文件夾拷貝至D:\Program Files\MySQL\MySQL Server 5.0\。結果,失敗:資料庫連接錯誤。

2. 卸載後重裝MySQL,將D:\Program Files\MySQL\MySQL Server 5.0\下的數據備份,只把mysql\data文件夾全部內容拷貝到D:\Program Files\MySQL\MySQL Server 5.0\data下。結果,失敗:資料庫連接錯誤。將備份的數據還完覆蓋。結果,失敗,還是連接不上資料庫。

3. 卸載後重裝MySQL,將mysql\data文件夾里的cf1,last文件夾(這兩個是原來MySQL里的資料庫)拷貝進D:\Program Files\MySQL\MySQL Server 5.0\data。連接成功,在Navicat for MySQL里看到資料庫cf1和last,但是不能訪問,因為數據全為零。明白了原來data里以資料庫命名的文件存儲的是資料庫的表結構,不是元數據。下一步,把data文件夾里的ibdata1文件(3.4G大,明顯存儲了元數據)拷貝到D:\Program Files\MySQL\MySQL Server 5.0\data里,代替原來的ibdata1文件。重啟電腦,打開Navicat for MySQL,連接成功,數據可以訪問操作。

至此,操作終於成功。其實當初在那台機上把數據導出來,而不是現在直接把文件夾mysql複製過來會更容易恢復。但那台機已經重裝了系統,也就是說MySQL失效了。

如何解決Can t connect to mysql server on localhost 錯誤

解決辦法:

第一步

刪除c:\windows\下面的my.ini

第二步

打開c:\mysql\bin\winmysqladmin.exe 輸入用戶名 和密碼

第三步 在dos下 輸入 mysqld-nt -remove 刪除服務

在接著輸入 mysqld-nt -install

第四步 輸入mysql 啟動成功。

其它可參考的方法:

1.看看hosts文件中localhost是不是指向127.0.0.1

2.如果是沒啟動mysql服務,則可運行net start mysql。

3.一些相關命令:

mysqld-nt –install #啟動Mysql

mysql #運行Mysql

mysql -h ipAddress -u username -p

或者:直接去bin里點mysqld.exe或mysqld-nt.exe,看下它的進程能否正常運行,如不行,再去控制面板,服務里去啟動它,看下是什麼錯誤。如果不行,就在添加刪除里刪去mysql,然後再重裝mysql,一般都能解決問題,可以在安裝前備份一下DATA。

Error: Can’t connect to MySQL server on ‘localhost’ (10061)

Errno.: 2003

錯誤編號:2003

問題分析:

無法連接到 MySQL 伺服器,可能的情況為:

1、MySQL 服務沒有啟動,一般是在異常的情況下 MySQL 無法啟動導致的,比如無可用的磁碟空間,my.ini 里 MySQL 的 basedir 路徑設置錯誤等;

2、MySQL 伺服器資源緊張,導致無法連接。

解決方法:

1、如果是虛擬主機用戶(購買的空間),則聯繫空間商檢查 MySQL 是否正常啟動,並確認 MySQL 的配置信息(是否為 localhost);

2、如果是獨立主機用戶(擁有管理主機許可權),則按下面步驟檢查:

1)檢查磁碟空間是否還有剩餘可用空間,盡量保持有足夠的磁碟空間可用。

2)檢查 my.ini 里的 basedir (MySQL 安裝地址) 和 datadir (數據目錄存放地址)等參數設置是否正確,然後重新啟動下 MySQL 服務。

還有一種方法是將伺服器的windows補丁。

微軟9月9日發布了TCP/IP更新補丁(KB967723),如果伺服器開啟自動更新或者有自動更新軟體下載更新了這個補丁,那麼就會出現這個問題。

有人可能會問,為什麼9號出現的補丁,到現在才發現問題?

大家都知道,伺服器不是每天都重啟的,有的伺服器可能一個月或者一年半載重啟一次,有的可能在9月9日以後重啟過伺服器,所以補丁生效了(個人這麼認為)。

補丁卸載方法:登錄伺服器,進入控制面板 — 添加和刪除程序 — (勾選上方的「顯示更新」)

在裡面可以看到更新的KB967723這個補丁,然後就想卸載普通軟體一樣卸載,卸載中會提示,如果卸載可能導致程序運行出錯,沒關係,選擇「是」,繼續卸載。

卸載完成後程序伺服器,一切正常!

至於該補丁修補什麼漏洞,卸載後是否會出現伺服器安全隱患,這個先不說,要MYSQL正常運行,臨時的解決辦法只有如此。

還有種情況下,可以這樣解決

Discuz! info: Can not connect to MySQL server

Time: 2007-11-13 6:25pm

Script: /bbs/index.php

Error: Can’t connect to MySQL server on ‘localhost’ (10061)

Errno.: 2003

Similar error report has beed dispatched to administrator before.

正常情況下原因如下:

網站論壇訪問量過大,資料庫連接超過最大連接數.MYSQL資料庫服務停止了.

解決方法(針對WIN系統):

1, 首先到系統服務裡面找到MYSQL服務並啟動MYSQL服務.

2, 到MYSQL安裝目錄找到MY.INI文件,打開MY.INI查找max_connections 修改連接數為1000 重啟IIS與MYSQL服務.

window 下

命令行下輸入:

cd E:\mysql\bin

mysqladmin -u root password 密碼

mysql -u root -p

Enter password: 密碼

便可以

找到了根本原因,在此涼一下:

導致此問題的根源在:因為給mysql的root設置了密碼,而不是最初安裝好時的密碼為空,所以使用

mysqladmin version這樣子不行了,必須這樣子:mysqladmin -uroot -p version,回車後按照提示要求輸入

root密碼即可成功運行命令。

第一種方法其實就是在不知道root密碼的情況下的一種解決辦法,那樣子啟動不用密碼即可進mysql 裡面並進行root密碼的修改,解決忘記了root密碼的問題。

輸入命令「mysqladmin -u root password 的密碼」作用是修改root用戶的密碼,這條命令能夠不經提示輸入原密碼而成功執行,也說明了原密碼是空。之後使用修改後的密碼自然能夠成功登錄。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/159804.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-11-20 00:16
下一篇 2024-11-20 00:16

相關推薦

  • 如何修改mysql的埠號

    本文將介紹如何修改mysql的埠號,方便開發者根據實際需求配置對應埠號。 一、為什麼需要修改mysql埠號 默認情況下,mysql使用的埠號是3306。在某些情況下,我們需…

    編程 2025-04-29
  • JDK Flux 背壓測試

    本文將從多個方面對 JDK Flux 的背壓測試進行詳細闡述。 一、Flux 背景 Flux 是 JDK 9 對響應式編程的支持。它為響應式編程提供了一種基於推拉模型的方式,以支持…

    編程 2025-04-29
  • Python操作MySQL

    本文將從以下幾個方面對Python操作MySQL進行詳細闡述: 一、連接MySQL資料庫 在使用Python操作MySQL之前,我們需要先連接MySQL資料庫。在Python中,我…

    編程 2025-04-29
  • MySQL遞歸函數的用法

    本文將從多個方面對MySQL遞歸函數的用法做詳細的闡述,包括函數的定義、使用方法、示例及注意事項。 一、遞歸函數的定義 遞歸函數是指在函數內部調用自身的函數。MySQL提供了CRE…

    編程 2025-04-29
  • MySQL bigint與long的區別

    本文將從數據類型定義、存儲空間、數據範圍、計算效率、應用場景五個方面詳細闡述MySQL bigint與long的區別。 一、數據類型定義 bigint在MySQL中是一種有符號的整…

    編程 2025-04-28
  • MySQL左連接索引不生效問題解決

    在MySQL資料庫中,經常會使用左連接查詢操作,但是左連接查詢中索引不生效的情況也比較常見。本文將從多個方面探討MySQL左連接索引不生效問題,並給出相應的解決方法。 一、索引的作…

    編程 2025-04-28
  • Powersploit:安全評估與滲透測試的利器

    本文將重點介紹Powersploit,並給出相關的完整的代碼示例,幫助安全人員更好地運用Powersploit進行安全評估和滲透測試。 一、Powersploit簡介 Powers…

    編程 2025-04-28
  • Python介面自動化測試

    本文將從如下多個方面對Python編寫介面自動化進行詳細闡述,包括基本介紹、常用工具、測試框架、常見問題及解決方法 一、基本介紹 介面自動化測試是軟體測試中的一種自動化測試方式。通…

    編程 2025-04-27
  • CentOS 7在線安裝MySQL 8

    在本文中,我們將介紹如何在CentOS 7操作系統中在線安裝MySQL 8。我們會從安裝環境的準備開始,到安裝MySQL 8的過程進行詳細的闡述。 一、環境準備 在進行MySQL …

    編程 2025-04-27
  • Sqoop連接器

    Sqoop是關係型資料庫與Hadoop之間的數據橋樑,它提供了一個簡單易用的介面來完成關係型資料庫和Hadoop之間的數據傳輸,而其中的Sqoop連接器是Sqoop的重要組件。本文…

    編程 2025-04-27

發表回復

登錄後才能評論