雲端基礎結構上的Adobe Commerce上的MySQL磁碟空間不足
本文提供雲端基礎結構上Adobe Commerce上MySQL空間極低或沒有空間使用的解決方案。 症狀包括網站中斷、客戶無法將產品新增到購物車、無法連線到資料庫、從遠端存取資料庫,以及無法透過SSH連線到節點。 症狀還包括Galera、環境同步、PHP、資料庫和部署錯誤,如下所列。 按一下方案直接跳至方案區段。
說明 description
問題
資料庫變得太大。 症狀可能包括遺失資料庫連線、資料庫上載錯誤和各種其他問題。
您可能會遇到的錯誤:
加萊拉:
- SQLSTATE
[08S01]:通訊連結失敗: 1047 WSREP尚未準備節點以使用應用程式匯入錯誤: - SQLSTATE
[HY000]:一般錯誤: 1180 Got error 5 "Input/output error" - SQLSTATE
[08S01]:通訊連結失敗: 1047 WSREP尚未準備應用程式使用的節點
環境同步錯誤:
- SQLSTATE:一般錯誤: 1180在COMMIT 期間發生錯誤5「輸入/輸出錯誤」
php錯誤:
- php: PDO::__construct(): MySQL伺服器已消失。
- php錯誤: PDO::__construct():讀取問候語封包時發生錯誤。 PID=NNNN.
- 錯誤2013 (HY000):在「讀取初始通訊封包」時與MySQL伺服器的連線中斷,系統錯誤: 0「內部錯誤/檢查(非系統錯誤)」。
資料庫錯誤:
- 錯誤碼: 1114
- InnoDB:將Word節點寫入FTS輔助索引資料表時發生錯誤(磁碟空間不足)。
- SQLSTATE
[HY000]:一般錯誤: 2006 MySQL伺服器已消失 [ERROR]Slave SQL:查詢發生錯誤「資料表<table_name>已滿」。- 單元mysql.service進入失敗狀態。
- 錯誤: '無法透過通訊端'/var/run/mysqld/mysqld.sock'連線到本機MySQL伺服器(111 '連線已拒絕')'
- 1205超過鎖定等待逾時;嘗試重新啟動交易,查詢為: INSERT INTO
cron_schedule(job_code,status,created_at,scheduled_at)值(?, ?,YYYY-02-07 HH:MM:SS,YYYY-MM-DD HH:MM:SS)
部署錯誤:
- E:命令'
['sudo'、'-u'、<environment name>、'bash'、'-c'、'/etc/platform/<環境名稱>/post_deploy.sh']'傳回非零的退出狀態255 - E:命令'
['ssh', u<節點IP位址>, 'sudo /usr/bin/sv -w 30重新啟動站台 —<environment name>g-nginx']'傳回非零 - 正在升級結構描述…… SQLSTATE
[HY000]:一般錯誤: 1114資料表<table_name>已滿 - SQLSTATE
[HY000]:一般錯誤: 3寫入檔案時發生錯誤。/<environment name>/# - W:
<filename>(錯誤碼: 28「裝置上沒有剩餘空間」)索引錯誤(以及/tmp中孤立的暫時.ibd檔案): - 目錄規則索引子擲回例外狀況。 事後不會清理暫存資料表,然後在目前的MySQL主節點 上填入磁碟
要再現的步驟:
若要檢查/data/mysql (或設定MySQL資料儲存體的位置)是否已滿,其中一個方法是在CLI中執行下列命令:
df -h
MySQL磁碟上的可用記憶體不足10%是中斷的主要指標。
原因
由於一系列問題(例如沒有足夠的索引節點、可用的儲存空間,以及產生臨時表格的錯誤查詢),/data/mysql掛載可能會變滿。
解決方法 resolution
您可以立即採取步驟讓MySQL回到正軌(或避免卡住):清除大型表格以釋放一些空間。
但長期解決方案會分配更多空間,並遵循資料庫最佳實務,包括啟用訂單/發票/出貨封存功能。
以下是有關快速和長期解決方案的詳細資訊。
檢查並釋出inode
確保有足夠的可用inode。 要執行此操作,請執行以下命令:
df -i
輸出將與以下內容類似:
Filesystem Inodes Used Free Use% Mounted on/dev/nvme2n1 655360 1695 653665 1% /data/mysql
檢查Use %是否為< 70%。 Inode會與檔案相關聯。 如果您從分割區移除檔案,將會釋放inode。
檢查並釋放儲存空間
檢查可用的儲存空間。 針對此專案,請執行:
df -k
輸出將類似於以下內容:
Size Used Avail Use% Mounted on· 50G 49G 95M 100% /data/mysql
如果Use %為> 70%,您需要採取動作以釋放/新增一些空間。
檢查大型ibtmp1檔案
檢查每個節點ibtmp1上的大型/data/mysql檔案:此檔案是暫存表格的表格空間。 如果有產生暫存表格的錯誤查詢,它們會包含在ibtmp1檔案中。 只有在重新啟動資料庫時,才會移除此檔案。 如果它正在佔用所有可用的空間,則必須重新啟動資料庫。 如果存在錯誤的查詢,則會重新建立它。
排清大型表格
警告:我們強烈建議在執行任何操作之前,先建立資料庫備份,並在網站高負載期間避免這些操作。 請參閱我們的開發人員檔案中的傾印您的資料庫。
檢查是否有大型資料表,並考慮是否有任何資料表可以清除。 請在主要(來源)節點上執行此操作。
例如,通常可以排清含有報表的表格。 如需有關如何尋找大型資料表的詳細資訊,請參閱尋找大型MySQL資料表文章。
如果沒有大型報表表格,請考慮排清_index表格,以將Adobe Commerce應用程式返回正軌。 index_price個資料表將是最佳候選者。 例如,catalog_category_product_index_storeX個資料表,其中X的值可以是「1」到最大存放區計數。 請注意,您需要重新索引以還原這些表格中的資料,而且在大目錄的情況下,此重新索引可能需要花很長的時間。
排清它們後,請等待wsrep同步完成。 您現在可以建立備份,並採取更重大的步驟來增加更多空間,例如分配/購買更多空間,以及啟用訂單/發票/出貨封存功能。
檢查二進位記錄設定
檢查您的MySQL伺服器二進位記錄設定: log_bin和log_bin_index。 如果已啟用這些設定,記錄檔可能會變得龐大。 建立支援票證,要求清除大型二進位記錄檔。 此外,請要求檢查二進位記錄是否正確設定,以定期清除記錄檔,以免佔用太多空間。
如果您沒有MySQL伺服器設定的存取權,請要求支援以進行檢查。
回收未使用的已配置磁碟空間
-
SSH至節點1並登入MySQL:
mysql -h127.0.0.1 -pphp -r "echo (include('app/etc/env.php')) ['db'] ['connection'] ['default'] ['password'] ;"-uwhoamiwhoami"如需詳細步驟,請參閱連線並針對Adobe Commerce資料庫執行查詢。
-
檢查未使用的空間:
code language-none SELECT table_name, round((data_length+index_length)/1048576,2) AS size_MB, round((data_free)/1048576,2) AS Allocated_but_unused FROM information_schema.tables WHERE data_free > 1048576*10 ORDER BY data_free DESC; Example output:table 0-row-3 1-row-3 table_name size_MB Allocated_but_unused sales_order_grid 28145.20 14943.00 檢查輸出以檢視是否有已配置但未使用的記憶體。 當資料已從表格內刪除,但記憶體仍配置給該表格時,就會發生這種情況。
-
將您的網站置於維護模式,並停止cron工作,讓資料庫上沒有任何互動。 如需相關步驟,請參閱啟用或停用維護模式以及停用cron工作。
-
使用下列命令重新建立表格以回收該空間(例如使用上面列出的具有最多未使用空間的表格):
ALTER TABLE sales_order_grid Engine = "INNODB"; -
執行以下查詢來檢查在資料行 Allocated_but_unused 中顯示高值的每個資料表的未配置空間。
SELECT table_name, round((data_length+index_length)/1048576,2) as size_MB, round((data_free)/1048576,2) as Allocated_but_unused FROM information_schema.tables WHERE 1 AND data_free > 1048576*10 ORDER BY data_free DESC;
分配/購買更多空間
如果您有未使用的磁碟空間,請為MySQL配置更多磁碟空間。 請參閱檢查磁碟空間限制文章以瞭解如何檢查您是否有可用磁碟空間。
- 對於入門計畫、所有環境和Pro計畫整合環境,如果您有一些未使用的磁碟空間,則可以配置磁碟空間。 如需詳細資訊,請參閱為MySQL分配更多空間。
- 若為Pro計畫測試和生產環境,如果您有未使用的磁碟空間,請連絡支援以配置更多磁碟空間。
- 如果您已達到空間限制,但仍遇到空間不足問題,請考慮購買更多磁碟空間,並聯絡Adobe帳戶團隊以取得詳細資料。