【小白福利—初級DBA入門必看】MySQL常用工具介紹(四)——客戶端工具MySQL_upgrade

上一篇爲大家更新了MySQL客戶端常用工具,這次爲大家繼續更新upgrade的相關操作內容。

1 簡介
每次升級mysql都應執行mysql_upgrade,它會查找當前版本與升級版本的不兼容性:
①升級mysql架構的系統表,以便你能使用可能已添加的新權限或功能。
②升級性能庫和sys庫
③檢查user schemas
若mysql_update發現某個表可能存在不兼容性,則會執行表檢查,如果發現問題,則嘗試進行修復。若無法修復,請參考官網第2.11.12節“重建或修復表或索引”以手動修復表。
其工作原理是:mysql_upgrade直接與服務器通信,向其發送執行升級所需的sql語句。要像這樣使用mysql_upgrade:
①保證服務器運行;
②調用upgrade升級mysql庫中的系統表,並檢查和修復其他庫。
shell> mysql_upgrade [options] #選項從[mysql_upgrade]和[client]組讀取
④停止並重啓服務器以使系統表的任何改變生效。
注意:
若你使用disabled_storage_engines系統變量禁用了某些引擎如myisam,upgrade可能報錯失敗,如mysql_upgrade: [ERROR] 3161: Storage engine MyISAM is disabled (Table creation is disallowed).
除非以–upgrade-system-tables 選項調用mysql_upgrade ,否則它會處理所有表。當某個表被處理時被鎖定,故不能被其他會話獲得。表檢查使用 CHECK TABLE … for upgrade語句。
mysql_upgrade用當前mysql版本標記所有檢查和修復過的表。以保證下次運行upgrade時能決定是否需要再次檢查修復。

upgrade將版本號保存到數據目錄的mysql_upgrade_info文件中。用來快速檢查是否所有的表已經檢查到該版本以使表檢查可以跳過。使用–force可以忽略該文件並執行檢查。

從5.7.2始,upgrade檢查mysql.user表,設置每個爲空的plugin列爲 ‘mysql_native_password’ 或’mysql_old_password’(取決於password列值的列散格式)。5.7.5時,不支持pre-4.1密碼列散,故若憑證使用和native插件兼容的列散格式,則設置爲’mysql_native_password’。pre-4.1格式必須手動升級。see Section 6.4.1.3, “Migrating Away from Pre-4.1 Password Hashing and the mysql_old_password Plugin”.

upgrade不升級時區表集、幫助表集。

從5.7.7始,除非啓用–skip-sys-schema ,否則upgrade在sys沒有安裝時安裝sys,並將其升級到當前版本。若sys存在但沒有一個sys.version視圖(假定該丟失意味着用戶自創庫)則會報錯。要修復該問題,將sys重命名或刪除等。

從5.7.9始,upgrade檢查使用一般分區處理器創建的innodb表分區,並嘗試將他們升級到本地分區(在5.7.6始使用)。(bug #76734,bug #20727344)此外,你也可以ALTER TABLE … UPGRADE PARTITIONING單獨升級這些表。
重要:5.7.12開始, mysqld的–early-plugin-load 默認爲空。要加載keyring_file插件,必須顯示指定–early-plugin-load 爲非空值。而在5.7.11,默認–early-plugin-load是keyring_file插件庫文件的名字,故插件默認加載。innodb表空間加密要求keyring_file在innodb初始化前載入,故默認值的改變給5.7.11到5.7.12及更高版本引入了不兼容。加密了innodb表空間的管理員必須顯示指定–early-plugin-load選項以保證插件能正確加載。更多信息見 官網Section 6.4.4, “The MySQL Keyring”.

重要:若從5.7.2之前的版本升級到5.7.2及更高,mysql.user表的改變導致要使用mysql_upgrade必須執行一些特殊的步驟。見Section 2.11.3, “Changes in MySQL 5.7”.
注意:在windows上必須使用管理員權限運行mysql_upgrade。
警告:應當總是在升級mysql前先備份當前數據庫。一些升級不兼容性可能需要在更新mysql前特殊處理。 See Section 2.11, “Upgrading MySQL”。

2 選項介紹與部分選項舉例說明
#注意:這裏的默認值,不是使用“程序名 --no-defaults --help”打印的輸出,而是指未指定時內部初始值,該值可被自身選項顯示指定,也可能會受其他互斥選項、相關選項更改。這裏只寫出默認啓用的布爾型選項,以及有內部值的其他選項。有內部值的選項可以不顯示給出。
2.1 所有客戶端共有選項
2.1.1 影響選項文件讀取的選項
在這裏插入圖片描述
2.1.2 幫助與版本
在這裏插入圖片描述
2.1.3 連接的建立
在這裏插入圖片描述
在這裏插入圖片描述
連接方式參數說明:優先級–protocol>–pipe>-h;
linux兩種連接方式:若未指定–host和-h,或指定爲localhost,或指定爲空(–host=或–host=’’),則使用unix套接字;否則使用tcp/ip。
windows三種連接方式:若未指定–host和-h,或指定爲localhost,且服務端開啓了共享內存,則使用共享內存;若指定爲.,或tcp禁用且socket未指定或主機指定爲空(–host=),則使用命名管道;否則tcp。
連接方式舉例
全平臺使用tcp/ip:
mysql --protocol=tcp [-h127.0.0.1] [–port=3306]
mysql -h127.0.0.1 [–port=3306]

unix使用socket:
mysql [–host=localhost] [–socket=/tmp/mysql.sock]

windows使用命名管道:需在服務端開啓命名管道支持

mysql --protocol=pipe
mysql --pipe
mysql --host=.

windows使用共享內存:未知,存在問題。理論上應當在服務上開啓共享內存後使用
mysql [–host=localhost] --shared-memory-base-name=MYSQL,但是實際上使用的tcp,或者
mysql --protocol=memory --shared-memory-base-name=MYSQL,但是會報錯ERROR 2046 (HY000): Can’t open shared memory; cannot send request event to server (5);

2.1.4 字符集
在這裏插入圖片描述
2.1.5 調試日誌
在這裏插入圖片描述
2.2 mysql_upgrade特定選項
在這裏插入圖片描述
3 常見用法舉例:省略連接選項
3.1 默認升級全實例,首次升級時,打印檢查信息

C:\Users\Administrator>mysql_upgrade
Checking if update is needed.
Checking server version.
Running queries to upgrade MySQL server.
Checking system database.
mysql.columns_priv                                 OK
mysql.db                                           OK
mysql.engine_cost                                  OK
mysql.event                                        OK
mysql.func                                         OK
mysql.general_log                                  OK
mysql.gtid_executed                                OK
mysql.help_category                                OK
mysql.help_keyword                                 OK
mysql.help_relation                                OK
mysql.help_topic                                   OK
mysql.innodb_index_stats                           OK
mysql.innodb_table_stats                           OK
mysql.ndb_binlog_index                             OK
mysql.plugin                                       OK
mysql.proc                                         OK
mysql.procs_priv                                   OK
mysql.proxies_priv                                 OK
mysql.server_cost                                  OK
mysql.servers                                      OK
mysql.slave_master_info                            OK
mysql.slave_relay_log_info                         OK
mysql.slave_worker_info                            OK
mysql.slow_log                                     OK
mysql.tables_priv                                  OK
mysql.time_zone                                    OK
mysql.time_zone_leap_second                        OK
mysql.time_zone_name                               OK
mysql.time_zone_transition                         OK
mysql.time_zone_transition_type                    OK
mysql.user                                         OK
The sys schema is already up to date (version 1.5.1).
Checking databases.
clientoptions.mysql                                OK
clientoptions.mysqladmin                           OK
clientoptions.mysqlcheck                           OK
clientoptions.mysqldump                            OK
clientoptions.mysqlimport                          OK
clientoptions.mysqlpump                            OK
clientoptions.mysqlshow                            OK
clientoptions.mysqlslap                            OK
sakila.actor                                       OK
sakila.address                                     OK
sakila.category                                    OK
sakila.city                                        OK
sakila.country                                     OK
sakila.customer                                    OK
sakila.film                                        OK
sakila.film_actor                                  OK
sakila.film_category                               OK
sakila.film_text                                   OK
sakila.inventory                                   OK
sakila.language                                    OK
sakila.payment                                     OK
sakila.rental                                      OK
sakila.staff                                       OK
sakila.store                                       OK
sys.sys_config                                     OK
ztd.ztd                                            OK
ztd.ztd2                                           OK
ztd.ztd4                                           OK
Upgrade process completed successfully.
Checking if update is needed.

3.2 再次運行時,因爲在數據目錄已經存在mysql_upgrade_info存有當前版本號,故此不會再次升級。若想再次升級,則修改該文件或使用–force忽略該文件
C:\Users\Administrator>mysql_upgrade
Checking if update is needed.
This installation of MySQL is already upgraded to 5.7.24, use --force if you still need to run mysql_upgrade

如果這篇文章有幫助到你話別忘了瀏覽一下之前的之前的文章哦~我們明天見!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章