安徽思成儀器技術有限公司
暫無信息 |
閱讀:73發(fā)布時間:2024-11-23
為什么升級到MySQL 8.0
基于安全考慮基于性能和 穩(wěn)定性考慮:
mgr復制 ,并行復制writeset 等功能,性能提升新的功能:
Hash join ,窗口函數(shù),DDL即時,json 支持原始環(huán)境中版本太多,統(tǒng)一版本8.0版本基本已到穩(wěn)定期,可以大量投入生產(chǎn)環(huán)境中
升級之前需要了解
數(shù)據(jù)庫字典升級
schema,mysql,information_schema,performance_schema,sys
比如:密碼測試 mysql_native_password → caching_sha2_password
關鍵詞是不是兼容
關鍵詞 added in查詢
SQL是不是兼容
Group by處理上的不兼容,觸發(fā)器mysql升級,存儲過程
5.6 可以跑select id,count(*)from group by name;
5.7,8.0是不是允許的 sql_mode控制

數(shù)據(jù)文件存儲格式是不是可以直接升級
Perconal 和 mysql 存儲引擎一直,可以兼容
現(xiàn)有應用的兼容性是否滿足
自定義函數(shù),一些不規(guī)范的SQL語句等等
密碼策略
What Is New in MySQL 8.0
作為DBA需要基本了解8.0的一些功能,參考:



升級準備事項
已經(jīng)了解8.0的特性,應對升級需要事行驗證和準備工作測試庫升級,應用驗證

數(shù)據(jù)庫升級,末知問題發(fā)生
f配置信息調整
不兼容的操作方法,影響復制
一個平穩(wěn)的過濾,列如先升級一個從庫,到所有從庫
最少停機時間,同樣生產(chǎn)數(shù)據(jù)恢復到環(huán)境,進行模擬升級,評估時間
怎樣進行數(shù)據(jù)驗證:行數(shù),表的數(shù)量 等等
考慮回滾方案
數(shù)據(jù)庫備份
升級前檢查
Mysql8.0還是提供了很多方便,不像之前一樣5.6升級5.7那樣?,F(xiàn)在可以通過mysql shell進行確認。
下面2種方式

#mysqlsh root:123456@192.168.244.130:3410 -e 'util.checkForServerUpgrade({"targetVersion":"8.0.19","configPath":"/etc/f"})';
MySQL JS > util.checkForServerUpgrade('root@192.168.244.130:3410', {"password":"123456", "targetVersion":"8.0.11", "configPath":"/etc/f"})按照提示的要求進行更改

雖然shell做的很好,但還是存在一些缺陷。
比如以下內(nèi)容都不會存在提示:
1. basedir,
2. sql_mode ,
3. 半同步配置,
4. 密碼策略:default_authentication_plugin = mysql_native_password
開始升級
下載對應的tar包

下面是單機升級,高可用架構下 需要先升級從庫,在逐步升級主庫。
執(zhí)行mysql_upgrade命令,會提示如下:
#/mysql8.0.19/bin/mysql_upgrade -uroot -p123456
在MySQL 8中mysql_upgrade客戶端現(xiàn)已棄用。升級客戶端執(zhí)行的操作現(xiàn)在由服務器完成。
要升級,請使用較舊的數(shù)據(jù)目錄啟動新的 MySQL 二進制文件。自動修復用戶表。升級后不需要重新啟動。
所以必須在測試環(huán)境模擬準備對應SQL語句
正確操作如下:
1)登錄服務器進行正常關閉:innodb_fast_shutdown是默認是1mysql升級,常常認為是安全關閉
關閉innodb參數(shù)確認mysql> show variables like 'innodb_fast_shutdown';
+----------------------+-------+
| Variable_name | Value |
+----------------------+-------+
| innodb_fast_shutdown | 1 |
+----------------------+-------+
1 row in set (0.00 sec)確保數(shù)據(jù)都刷到硬盤上,更改成0
mysql> set global innodb_fast_shutdown=0;
Query OK, 0 rows affected (0.01 sec)
mysql> shutdown;
Query OK, 0 rows affected (0.00 sec)
*進行備份。2)用mysql8.0.19客戶端直接啟動
啟動mysql服務
[root@ss30 bin]# /opt/mysql8.0.19/bin/mysqld_safe --defaults-file=/etc/f --user=mysql &
[1] 15400
[root@ss30 bin]# 2020-04-25T13:07:16.591560Z mysqld_safe Logging to '/opt/data3400/logs/error.log'.
2020-04-25T13:07:16.636879Z mysqld_safe Starting mysqld daemon with databases from /opt/data3400/mysql
##打開另一個窗口查看error日志
[root@ss30 ~]# tail -f /opt/data3400/logs/mysql_error.log登錄服務器確認
[root@ss30 ~]# mysql -uroot -p -S /opt/data3400/mysql/mysql.sockEnter
password:
Welcome to the MySQL monitor. Commands end with ; or /g.Your MySQL connection id is 10Server version: 8.0.19 MySQL Community Server - GPLCopyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.Oracle is a registered trademark of Oracle Corporation and/or itsaffiliates. Other names may be trademarks of their respectiveowners.Type 'help;' or '/h' for help. Type '/c' to clear the current input statement.
mysql> select version();
+-----------+
| version() |
+-----------+
| 8.0.19 |
+-----------+
1 row in set (0.01 sec)無myisam引擎
mysql> SELECT table_schema,table_name,engine
FROM information_schema.tables
where engine!='InnoDB';剩下的就是驗證 和 業(yè)務確認否應用正常。
總結
整個從升級準備開始 到結束,中間包含很多細致的工作。比如版本確認,功能確認,測試,準備,備份,驗證,高可用切換等等。前期需要投入很多精力進行準備,這樣才能做到一步到位。
升級完,下一步踏上8.0的使用旅程。
最后給大家分享我寫的SQL兩件套:《SQL基礎知識第二版》和《SQL高級知識第二版》的PDF電子版。里面有各個語法的解釋、大量的實例講解和批注等等,非常通俗易懂,方便大家跟著一起來實操。 有需要的讀者可以下載學習,在下面的公眾號「數(shù)據(jù)前線」(非本號)后臺回復關鍵字:SQL,就行 數(shù)據(jù)前線 后臺回復關鍵字:1024,獲取一份精心整理的技術干貨后臺回復關鍵字:進群,帶你進入高手如云的。
商 鋪:安徽思成儀器技術有限公司 http://m.liuyangwu.com/st40548/
主營產(chǎn)品:環(huán)境檢測儀表、設備、安防產(chǎn)品
移動端:安徽思成儀器技術有限公司手機站
儀表網(wǎng) 設計制作,未經(jīng)允許翻錄必究 .? ? ?
請輸入賬號
請輸入密碼
請輸驗證碼
請輸入你感興趣的產(chǎn)品
請簡單描述您的需求
號碼可能有誤,請核對!
請選擇省份