MySQL:備份資料庫指令碼報錯mysqldump: Couldn‘t execute ‘SELECT COLUMN_NAME****
阿新 • • 發佈:2021-01-19
技術標籤:MySQL
指令碼如下
@echo off echo 如果備份過程遇到任何問題請聯絡 感謝您的使用 title MYSQL資料庫備份進行中,請不要關閉該視窗 color 0c echo. echo MySQL資料庫備份 echo ***************************** echo. echo 今天是 %date% echo 時間是 %time% echo. echo ***************************** rem 下面設定需要備份的資料庫伺服器IP地址,可修改,如修改,修改後面的IP地址即可,如為本機就改成127.0.0.1即可; set "Server=127.0.0.1" echo 需要備份的資料庫伺服器IP是: %Server% rem 下面設定需要備份的資料庫名稱,可修改,如修改,修改等於號後面的資料庫名稱即可; rem 設定資料庫的埠號,預設3306,可修改,如修改,修改等於號後面的埠號即可 set "PORT=3306" echo 埠號是:%PORT% rem 下面設定該資料庫的使用者名稱和密碼,可修改,如修改,修改等於號後面的資料庫使用者名稱和密碼即可,請確保使用者名稱和密碼的正確; set "USERNAME=zabbix" set "PASSWORD=zabbix" echo 資料庫使用者名稱是: %USERNAME% rem 下面設定資料庫備份的目的路徑,如路徑不存在則建立,可修改,如修改,修改等於號後面的路徑即可; set "BACKUPDIR=E:\YSHJ_MySQL\back_up\%date:~,4%%date:~5,2%%date:~8,2%\" echo 資料庫備份到的路徑是: %BACKUPDIR% set "sysName=drworkstation" rem 下面是設定備份的日誌檔案,預設日誌檔案再上面設定的備份路徑下面,可修改,如修改,修改等於號後面的路徑或者檔名稱即可; set "LOGFILE=%BACKUPDIR%\%sysName%_bakup.log" echo 日誌檔案的路徑是 %LOGFILE%,備份結束後可以檢視日誌檔案%LOGFILE%,檢視是否備份成功 if not exist "%BACKUPDIR%" ( echo 備份路徑不存在將建立目錄和日誌檔案 mkdir %BACKUPDIR% if %ERRORLEVEL% == 0 ( echo 目錄已經建立成功 ) ) echo 當前時間是 %time%>>%LOGFILE% set "DBNAME=zabbix" echo 開始備份資料庫: %DBNAME% echo 開始備份資料庫: %DBNAME%>>%LOGFILE% "mysqldump" --opt -Q -R -F --single-transaction -h %Server% -u%USERNAME% -p%PASSWORD% -P%PORT% --default-character-set=utf8 --hex-blob=TRUE %DBNAME% >"%BACKUPDIR%\%DBNAME%_bak.sql" echo 資料庫: %DBNAME%備份完成 echo 資料庫: %DBNAME%備份完成>>%LOGFILE% goto END :ErrorEnd echo 資料庫備份有錯誤,請聯絡資料庫管理員,將退出程式 echo 資料庫備份有錯誤,請聯絡資料庫管理員,將退出程式 >>%LOGFILE% goto END :END echo 任意字元結束 pause rem exit
這個指令碼在多個場景都是正常的,今天連線zabbix資料庫提示一個錯誤:
開始備份資料庫: zabbix mysqldump: [Warning] Using a password on the command line interface can be insecure. mysqldump: Couldn't execute 'SELECT COLUMN_NAME, JSON_EXTRACT(HISTOGRAM, '$."number-of-buckets-specified"') FROM information_schema.COLUMN_STATISTICS WHERE SCHEMA_NAME = 'zabbix' AND TABLE_NAME = 'acknowledges';': Unknown table 'COLUMN_STATISTICS' in information_schema (1109)
原因:
因為新版的mysqldump預設啟用了一個新標誌,通過--column-statistics=0
來禁用他
解決方法:
命令列增加--column-statistics=0
"mysqldump" --opt -Q -R -F --single-transaction -h %Server% -u%USERNAME% -p%PASSWORD% -P%PORT% --default-character-set=utf8 --column-statistics=0 --hex-blob=TRUE %DBNAME% >"%BACKUPDIR%\%DBNAME%_bak.sql"