Linux MySQL 5.7二進制 小版本升級
MySQL5.7二進制安裝在Unix/Linux上升級時,分為就地和邏輯升級方法。
1 就地升級
就地升級包括關閉舊的MySQL服務器,用新的MySQL服務器替換舊的MySQL二進制文件或軟件包,在現有數據目錄上重新啟動MySQL,以及運行mysql_upgrade。
1.1 XA事務InnoDB
如果您使用XA事務InnoDB,請XA RECOVER在升級之前運行以檢查未提交的XA事務。如果返回結果,則通過發出XA COMMIT或 XA ROLLBACK聲明來提交或回滾XA事務。
1.2 配置MySQL以通過設置innodb_fast_shutdown為 執行慢速關閉 0。
mysql -u root -p --execute="SET GLOBAL innodb_fast_shutdown=0"
在關閉過程中,InnoDB執行完全清除並在關閉之前更改緩沖區合並,這可確保在發布版本之間存在文件格式差異時完全準備好數據文件。
1.3 關閉舊的MySQL服務器
mysqladmin -u root -p shutdown
1.4 安裝新的MySQL二進制包
下載,解壓新的MySQL二進制分發包;
授權:
chown -R mysql.mysql /usr/loacl/mysql_new
把MySQL的軟連接指向新的mysql服務
unlink /usr/loacl/mysql ln -s /usr/loacl/mysql_new /usr/loacl/mysql
1.5 使用現有數據目錄啟動新MySQL 5.7服務器
mysqld_safe --user=mysql --datadir=/path/to/existing-datadir
1.6 運行mysql_upgrade
mysql_upgrade -u root -p
mysql_upgrade檢查所有數據庫中的所有表是否與當前版本的MySQL不兼容。mysql_upgrade還會升級mysql系統數據庫,以便您可以利用新的權限或功能。
- 註意
mysql_upgrade不會升級幫助表的內容。
1.7 關閉並重新啟動MySQL服務器以確保對系統表所做的任何更改都生效
mysqladmin -u root -p shutdown mysqld_safe --user=mysql --datadir=/path/to/existing-datadir
2 邏輯升級
邏輯升級涉及使用備份或導出實用程序(如mysqldump)從舊MySQL實例導出SQL ,安裝新的MySQL服務器以及將SQL應用於新的MySQL實例。
簡單說明邏輯升級就是導出數據,然後升級,最後再導入數據;安全性高,主要針對數據量不大的數據庫;常用的工具:mysqldump和Xtrabackup。
2.1 從以前的MySQL安裝中導出現有數據:
mysqldump -u root -p
--add-drop-table --routines --events
--all-databases --force > data-for-upgrade.sql
-
註意
如果數據庫包含存儲的程序, 請使用--routines和 mysqldump的--events選項 (如上所示)。該 選項包括轉儲中的所有數據庫,包括保存系統表的 數據庫。 --all-databasesmysql - 重要
如果您有包含生成列的表,請使用MySQL 5.7.9或更高版本提供的mysqldump實用程序來創建轉儲文件。早期版本中提供的 mysqldump實用程序對生成的列定義使用了錯誤的語法(Bug#20769542)。您可以使用該 INFORMATION_SCHEMA.COLUMNS 表來標識具有生成列的表。
2.2 關閉舊的MySQL服務器
mysqladmin -u root -p shutdown
2.3 安裝MySQL 5.7
參考:
mysql 5.7.21 二進制安裝
2.4 初始化新數據目錄
mysqld --initialize --datadir=/path/to/5.7-datadir
復制‘root‘@‘localhost‘ 顯示在屏幕上的臨時密碼或寫入錯誤日誌以供日後使用。
2.5 使用新數據目錄啟動MySQL 5.7服務器:
mysqld_safe --user=mysql --datadir=/path/to/5.7-datadir
2.6 重置root密碼:
shell> mysql -u root -p
Enter password: **** <- enter temporary root password
mysql> ALTER USER USER() IDENTIFIED BY ‘your new password‘;
2.7 將先前創建的轉儲文件加載到新的MySQL服務器中
mysql -u root -p --force < data-for-upgrade.sql
- 註意
gtid_mode=ON如果轉儲文件包含系統表, 則不建議在服務器()上啟用GTID時加載轉儲文件。 mysqldump為使用非事務性MyISAM存儲引擎的系統表發出DML指令,並且在啟用GTID時不允許這種組合。另請註意,將啟用了GTID的服務器中的轉儲文件加載到啟用了GTID的另一臺服務器中會導致生成不同的事務標識符。
2.8 運行mysql_upgrade
mysql_upgrade -u root -p
mysql_upgrade檢查所有數據庫中的所有表是否與當前版本的MySQL不兼容。mysql_upgrade還會升級mysql系統數據庫,以便您可以利用新的權限或功能。
- 註意
mysql_upgrade不會升級幫助表的內容。
2.9 關閉並重新啟動MySQL服務器以確保對系統表所做的任何更改都生效。
mysqladmin -u root -p shutdown
mysqld_safe --user=mysql --datadir=/path/to/5.7-datadir
官網:
https://dev.mysql.com/doc/refman/5.7/en/upgrading.html
Linux MySQL 5.7二進制 小版本升級