国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

如何修復MySQL 數(shù)據(jù)庫

2022-09-14 10:03 作者:曉林電腦服務(wù)  | 我要投稿

MySQL 提供了幾種不同的方法來分析和修復數(shù)據(jù)庫。出現(xiàn)錯誤和異常的原因有很多,其中一些包括:

  • MySQL 更新或降級。

  • 索引或數(shù)據(jù)的快速變化。

  • 表不一致。

在檢查損壞的數(shù)據(jù)和修復表時,修復錯誤所采取的步驟取決于您連接到數(shù)據(jù)庫的方式、數(shù)據(jù)庫服務(wù)器狀態(tài)、錯誤類型和使用的數(shù)據(jù)庫引擎。

曉林電腦服務(wù)公司向您展示了對 MySQL 數(shù)據(jù)庫進行故障排除和修復的多種方法。

數(shù)據(jù)備份|數(shù)據(jù)存儲|雙機熱備|異地備份|容災備份|服務(wù)器雙機熱備 www.xiaolin.cc


先決條件

  • 具有 root 權(quán)限的終端或命令行。

  • 已安裝并配置MySQL 8.0 版。

  • 損壞的數(shù)據(jù)庫或數(shù)據(jù)庫表。

如何檢查 MySQL 表是否有錯誤

運行診斷程序是對問題進行故障排除的第一步。有兩種方法可以檢查MySQL表的錯誤:

  • 通過 MySQLCHECK TABLE查詢。

  • 使用終端程序mysqlcheck。

使用 CHECK TABLE 檢查表

該CHECK TABLE查詢在服務(wù)運行時在 MySQL 中工作。一般用途是:

CHECK TABLE <table name> [, table name, table name] [option] [option];

最簡單的用法是一張沒有任何選項的表格:

CHECK TABLE <table name>;

查詢的輸出CHECK TABLE顯示了有關(guān)檢查結(jié)果的信息表:

數(shù)據(jù)備份|數(shù)據(jù)存儲|雙機熱備|異地備份|容災備份|服務(wù)器雙機熱備 www.xiaolin.cc


檢查表格時可用的選項是:

  • FOR UPGRADE- 發(fā)現(xiàn)版本不一致。例如,MySQL 8.0不支持兩位數(shù)的年份,因此包含此類值的表被標記為升級。

  • QUICK- 不檢查不正確鏈接的行。這有助于避免超時。

  • FAST- 對未正確關(guān)閉的表執(zhí)行檢查。

  • CHANGED- 僅檢查自上次檢查以來發(fā)生更改或未正確關(guān)閉的表。

  • MEDIUM- 檢查表行以驗證已刪除鏈接的有效性并對行執(zhí)行校驗和。

  • EXTENDED- 檢查完全一致性。

沒有任何選項,對MyISAM表和視圖CHECK TABLE執(zhí)行MEDIUM檢查。和對 InnoDB 引擎表和視圖執(zhí)行檢查,而忽略其他選項。FOR UPGRADEQUICK

您還可以組合選項進行更詳細的檢查。例如,要快速檢查表是否已充分關(guān)閉,請運行:

CHECK TABLE <table name> FAST QUICK;

任何不適用于表格的選項都將被忽略。

使用 mysqlcheck 檢查表

該mysqlcheck命令是CHECK TABLE. 該程序在 MySQL 服務(wù)運行時在終端中運行。要執(zhí)行檢查:

1. 以root用戶身份導航到存儲數(shù)據(jù)庫的目錄:

sudo su

cd /var/lib/mysql

2. 檢查整個數(shù)據(jù)庫:

mysqlcheck <database name>

數(shù)據(jù)備份|數(shù)據(jù)存儲|雙機熱備|異地備份|容災備份|服務(wù)器雙機熱備 www.xiaolin.cc


或者,通過提供表名來檢查數(shù)據(jù)庫中的特定表:

mysqlcheck <database name> <table name>

數(shù)據(jù)備份|數(shù)據(jù)存儲|雙機熱備|異地備份|容災備份|服務(wù)器雙機熱備 www.xiaolin.cc


如何修復 MySQL 數(shù)據(jù)庫

有幾種方法可以修復 MySQL 中的數(shù)據(jù)庫。但是,請記住,這些方法不是快速修復方法,可能會導致數(shù)據(jù)丟失。如果數(shù)據(jù)庫表經(jīng)常損壞,請確定發(fā)生的原因。

在進行任何更改和開始修復之前,請創(chuàng)建目錄目錄的副本:

cp -rfv /var/lib/mysql /var/lib/mysql_copy

或者,在嘗試任何修復解決方案之前制作數(shù)據(jù)庫的備份版本。按照我們的指南:IT外包 服務(wù)器虛擬化 數(shù)據(jù)存儲 數(shù)據(jù)備份 數(shù)據(jù)恢復IT外包 服務(wù)器虛擬化 數(shù)據(jù)存儲 數(shù)據(jù)備份 數(shù)據(jù)恢復

您將在下面找到如何修復 MySQL 數(shù)據(jù)庫的三個選項。

使用 REPAIR TABLE 查詢修復 MySQL 數(shù)據(jù)庫

掃描并定位有問題的數(shù)據(jù)庫和表后,解決問題的最快方法是使用REPAIR TABLE查詢:

數(shù)據(jù)備份|數(shù)據(jù)存儲|雙機熱備|異地備份|容災備份|服務(wù)器雙機熱備 www.xiaolin.cc


如果在修復過程中服務(wù)器關(guān)閉,請在REPAIR TABLE服務(wù)器重新啟動時重新運行該操作。確保在對同一個表執(zhí)行任何其他操作之前執(zhí)行此操作。在正常情況下,MyISAM 表使用此方法不會導致數(shù)據(jù)丟失。

使用 mysqlcheck 修復 MySQL 數(shù)據(jù)庫

mysqlcheck命令是在終端中修復數(shù)據(jù)庫表的替代方法。

1. 首先,以 root 用戶身份導航到 MySQL 數(shù)據(jù)庫文件夾:

cd /var/lib/mysql

2?-r、在mysqlcheck命令中添加修復數(shù)據(jù)庫表的選項:

mysqlcheck -r <database> <table name>

數(shù)據(jù)備份|數(shù)據(jù)存儲|雙機熱備|異地備份|容災備份|服務(wù)器雙機熱備 www.xiaolin.cc


該mysqlcheck -r命令是REPAIR TABLE查詢的終端版本。

使用 ALTER TABLE 修復 MySQL 數(shù)據(jù)庫

使用該ALTER TABLE查詢使用相同的存儲引擎重建表。例如,如果您有一個 InnoDB 表,請運行:

ALTER TABLE <table name> ENGINE = InnoDB;

要重建 MyISAM 表,請使用:

ALTER TABLE <table name> ENGINE = MyISAM;

如果您不確定表使用哪個存儲引擎,請運行以下查詢以找出:

SHOW CREATE TABLE <table name>;

數(shù)據(jù)備份|數(shù)據(jù)存儲|雙機熱備|異地備份|容災備份|服務(wù)器雙機熱備 www.xiaolin.cc


對 MySQL 數(shù)據(jù)庫運行特定于引擎的診斷和修復

根據(jù)使用的數(shù)據(jù)庫引擎,MySQL 提供特定于引擎的方法來分析和修復數(shù)據(jù)庫表。

MyISAM 表容易損壞。但是,大多數(shù)時候錯誤很容易修復。

使用 InnoDB 數(shù)據(jù)庫時,校驗和值不匹配時會出現(xiàn)損壞。錯誤通常是由于斷電或其他一些硬件問題而發(fā)生的。

使用 myisamchk 檢查和修復 MyISAM 表

MySQL 為 MyISAM 表提供了一個特定的檢查器。

1. 關(guān)閉 MySQL 服務(wù)器。打開終端并運行:

systemctl mysql stop

2. 作為 root 用戶,導航到數(shù)據(jù)庫的位置:

cd /var/lib/mysql/<database name>

3. 要檢查特定表,請運行:

myisamchk <table name>


4. 通過運行修復表:

myisamchk --recover <table name>

5.重啟MySQL服務(wù)器:

systemctl restart mysql

6.最后,在恢復后檢查MySQL中的表:

sudo mysql -u <user> -p <password>

USE <database name>;

SELECT * FROM <table name> LIMIT 4;

數(shù)據(jù)備份|數(shù)據(jù)存儲|雙機熱備|異地備份|容災備份|服務(wù)器雙機熱備 www.xiaolin.cc


運行 InnoDB 恢復過程

MySQL 文檔建議為 InnoDB 數(shù)據(jù)庫運行 InnoDB 恢復過程。

IT外包 服務(wù)器虛擬化 數(shù)據(jù)存儲 數(shù)據(jù)備份 數(shù)據(jù)恢復IT外包 服務(wù)器虛擬化 數(shù)據(jù)存儲 數(shù)據(jù)備份 數(shù)據(jù)恢復

1. 使用您喜歡的文本編輯器找到并打開全局配置文件。對于 Ubuntu 和 Debian 系統(tǒng),位置是:

cd /etc/mysql/my.cnf

注意:對于 CentOS 和 Fedora,位置是:

cd /etc/my.cnf

2. 將以下選項添加到my.cnf文件:

[mysqld]

innodb_force_recovery=4

默認情況下,強制恢復選項設(shè)置為 0(關(guān)閉)并上升到 6。每個新級別都包含較低數(shù)字的恢復功能。

3. 保存并關(guān)閉文件。

4. 重啟 MySQL 服務(wù)器以確保應(yīng)用新的配置文件:

systemctl restart mysql

5. 在主文件夾中,使用以下命令將所有數(shù)據(jù)庫導出到備份文件mysqldump:

sudo mysqldump --all-databases --add-drop-database --add-drop-table --routines > <file name>.sql

6. 啟動 MySQL 客戶端并刪除所有受影響的數(shù)據(jù)庫表。要刪除數(shù)據(jù)庫表,請嘗試:

DROP TABLE IF EXISTS <table name>;

如果表沒有刪除,請嘗試手動刪除數(shù)據(jù)庫表。以 root 用戶身份登錄并導航到數(shù)據(jù)庫所在的目錄:

sudo su

cd /var/lib/mysql/<database name>

刪除數(shù)據(jù)庫表:

rm -r <table name>

7. 停止 MySQL 服務(wù)器:

systemctl stop mysql

8.在my.cnfinnodb_force_recovery文件中,將步驟2中添加的禁用恢復模式的選項注釋掉。然后,保存文件并關(guān)閉。

9. 再次啟動 MySQL 服務(wù)器:

systemctl start mysql

10. 從MySQL shell 中的備份.sql文件恢復數(shù)據(jù)庫。登錄 MySQL 客戶端:

sudo mysql -u <username> -p <password>

數(shù)據(jù)備份|數(shù)據(jù)存儲|雙機熱備|異地備份|容災備份|服務(wù)器雙機熱備 www.xiaolin.cc


USE <database name>;

# Turning off auto commit is optional and speeds things up for larger databases

SET autocommit=0;

SOURCE <file name>.sql;

12. 最后,測試數(shù)據(jù)庫以確認一切正常。如果不是,請從備份中恢復數(shù)據(jù)庫并嘗試另一種方法。

結(jié)論

本教程概述了修復 MySQL 數(shù)據(jù)庫的幾種不同方法。由于必然會發(fā)生數(shù)據(jù)庫損壞,因此 MySQL 提供了多種方法來發(fā)現(xiàn)和修復數(shù)據(jù)庫中的錯誤,本文概述了其中的一些方法。

但是,由于恢復有時會導致數(shù)據(jù)丟失,保護信息的最佳方式是創(chuàng)建定期備份并遵循最佳數(shù)據(jù)庫安全實踐。


如何修復MySQL 數(shù)據(jù)庫的評論 (共 條)

分享到微博請遵守國家法律
洛阳市| 云梦县| 交口县| 星座| 西吉县| 克拉玛依市| 肇东市| 自贡市| 娱乐| 大安市| 军事| 灌云县| 十堰市| 德清县| 乃东县| 五台县| 芒康县| 青神县| 赣州市| 托克逊县| 铅山县| 晋中市| 谢通门县| 临桂县| 扬中市| 视频| 阿克| 京山县| 乌鲁木齐县| 五指山市| 高碑店市| 廉江市| 呼和浩特市| 新丰县| 阜新| 成武县| 舟曲县| 长兴县| 西丰县| 嘉鱼县| 麟游县|