欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MySQL8.0就地升級(jí)到MySQL8.4.0的方法

 更新時(shí)間:2024年06月04日 11:11:22   作者:董小姐yyds  
本文主要介紹了MySQL8.0就地升級(jí)到MySQL8.4.0的方法,文中通過(guò)代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

MySQL8.0就地升級(jí)到MySQL8.4.0

升級(jí)需求:將8.0.35升級(jí)到8.4.0,以In-Place方式直接升級(jí)到MySQL8.4.0。

數(shù)據(jù)庫(kù)版本

操作系統(tǒng)版本

原版本

8.0.35

Centos7.9 x86_64

新版本

8.4.0

Centos7.9 x86_64

關(guān)閉現(xiàn)有版本MySQL,將二進(jìn)制或包替換成新版本并在現(xiàn)有數(shù)據(jù)目錄上啟動(dòng)MySQL并執(zhí)行升級(jí)任務(wù)的方式,稱為in-place升級(jí)。升級(jí)過(guò)程分為以下幾步:

  • 完成升級(jí)前檢查,并處理不合規(guī)問(wèn)題。
  • 如果使用了XA事務(wù),升級(jí)前通過(guò)命令xa recover未提交XA事務(wù),并使用xa commit或xa rollback命令提交或回滾。
  • 將innodb_fast_shutdown改為0或1。
  • 關(guān)閉現(xiàn)版本MySQL。
  • 升級(jí)MySQL二進(jìn)制文件或軟件包。
  • 在現(xiàn)有數(shù)據(jù)目錄上啟動(dòng)新版本MySQL。

MySQL8.4.0特性說(shuō)明

以下整理了常用的功能變化,詳細(xì)內(nèi)容查閱官方文檔,官方文檔位置:MySQL :: MySQL 8.4 Reference Manual :: 1.4 What Is New in MySQL 8.4 since MySQL 8.0

新增功能

MySQL本地密碼驗(yàn)證更改

從MySQL 8.4.0開始,默認(rèn)情況下不再啟用已棄用的 mysql_native_password 身份驗(yàn)證插件。要啟用它,請(qǐng)使用 --mysql-native-password=ON (在MySQL 8.4.0中添加)啟動(dòng)服務(wù)器,或者在MySQL配置文件的 [mysqld] 部分中包含 mysql_native_password=ON (在MySQL 8.4.0中添加)。

InnoDB系統(tǒng)變量默認(rèn)值更改

InnoDB系統(tǒng)變量默認(rèn)值更改。在MySQL 8.4.0中,與 InnoDB 存儲(chǔ)引擎相關(guān)的多個(gè)服務(wù)器系統(tǒng)變量的默認(rèn)值發(fā)生了更改,如下表所示:

InnoDB System Variable NameInnoDB系統(tǒng)變量名

New Default Value (MySQL 8.4)新默認(rèn)值(MySQL 8.4)

Previous Default Value (MySQL 8.0)默認(rèn)值(MySQL 8.0)

innodb_buffer_pool_in_core_file

OFF if MADV_DONTDUMP is supported, otherwise ON
如果支持 MADV_DONTDUMP ,則為 OFF ,否則為 ON

ON

innodb_buffer_pool_instances

If innodb_buffer_pool_size <= 1 GiB, then innodb_buffer_pool_instances=1如果 innodb_buffer_pool_size <= 1 GiB,則 innodb_buffer_pool_instances=1

If innodb_buffer_pool_size > 1 GiB, then this is the minimum value from the following two calculated hints in the range of 1-64:
如果 innodb_buffer_pool_size > 1 GiB,則這是在1-64范圍內(nèi)的以下兩個(gè)計(jì)算提示的最小值:

  • Buffer pool hint: Calculated as 1/2 of (innodb_buffer_pool_size / innodb_buffer_pool_chunk_size)
    緩沖池提示:按( innodb_buffer_pool_size / innodb_buffer_pool_chunk_size )的1/2計(jì)算
  • CPU hint: Calculated as 1/4 of the number of available logical processors
    CPU提示:計(jì)算為可用邏輯處理器數(shù)量的1/4

8 (or 1 if innodb_buffer_pool_size

< 1 GiB)
8(或1,如果 innodb_buffer_pool_size < 1 GiB)

innodb_change_buffering

none

all

innodb_dedicated_server

If ON[a]

, the value of innodb_flush_method

is no longer changed as in MySQL 8.0, but the calculation of innodb_redo_log_capacity

is changed from memory-based to CPU-based. For more information, see Section 17.8.12, “Enabling Automatic Configuration for a Dedicated MySQL Server”

.
如果是 ON [a] ,則 innodb_flush_method 的值不再像MySQL 8.0那樣改變,但 innodb_redo_log_capacity 的計(jì)算從基于內(nèi)存改為基于CPU。有關(guān)更多信息,請(qǐng)參見第17.8.12節(jié)“為專用MySQL服務(wù)器啟用自動(dòng)配置”。

OFF
變量的實(shí)際默認(rèn)值為 OFF

innodb_adaptive_hash_index

OFF

ON

innodb_doublewrite_files

2

innodb_buffer_pool_instances

* 2

innodb_doublewrite_pages

128

innodb_write_io_threads

, which meant a default of 4
innodb_write_io_threads ,表示默認(rèn)值為4

innodb_flush_method

on Linux innodb_flush_method 在Linux上

O_DIRECT if supported, otherwise fsync
O_DIRECT 如果支持,否則 fsync

fsync

innodb_io_capacity

10000

200

innodb_io_capacity_max

2 * innodb_io_capacity

2 * innodb_io_capacity

, with a minimum default value of 2000
2 * innodb_io_capacity ,最小默認(rèn)值為2000

innodb_log_buffer_size

67108864 (64 MiB) 67108864(64 MiB)

16777216 (16 MiB) 16777216(16 MiB)

innodb_numa_interleave

ON

OFF

innodb_page_cleaners

innodb_buffer_pool_instances

4

innodb_parallel_read_threads

available logical processors / 8, with a minimum default value of 4
可用邏輯處理器/ 8,最小默認(rèn)值為4

4

innodb_purge_threads

1 if available logical processors is <= 16, otherwise 4
如果可用邏輯處理器<= 16,則為1,否則為4

4

innodb_read_io_threads

available logical processors / 2, with a minimum default value of 4
可用邏輯處理器/ 2,最小默認(rèn)值為4

4

innodb_use_fdatasync

ON

OFF

temptable_max_ram

3% of total memory, with a default value within a range of 1-4 GiB
總內(nèi)存的3%,默認(rèn)值范圍為1-4 GiB

1073741824 (1 GiB) 1073741824(1 GiB)

temptable_max_mmap

0, which means OFF 0,表示 OFF

1073741824 (1 GiB) 1073741824(1 GiB)

temptable_use_mmap

OFF
在MySQL 8.0.26中棄用

ON

克隆插件

克隆插件。克隆插件版本控制要求被放寬,允許在同一系列的不同版本之間進(jìn)行克隆。換句話說(shuō),只有主版本號(hào)和次版本號(hào)必須匹配,而以前點(diǎn)版本號(hào)也必須匹配

例如,克隆功能現(xiàn)在允許將8.4.0克隆到8.4.14,反之亦然。

MySQL復(fù)制

SOURCE_RETRY_COUNT變化

MySQL復(fù)制:SOURCE_RETRY_COUNT更改。 CHANGE REPLICATION SOURCE TO 語(yǔ)句的 SOURCE_RETRY_COUNT 選項(xiàng)的默認(rèn)值已更改為10。這意味著,如果使用此選項(xiàng)和 SOURCE_CONNECT_RETRY 的默認(rèn)值(60),復(fù)制副本將在兩次重新連接嘗試之間等待60秒,并在超時(shí)和故障切換之前以此速率繼續(xù)嘗試重新連接10分鐘。

此更改也適用于已棄用的 --master-retry-count 服務(wù)器選項(xiàng)的默認(rèn)值。(You應(yīng)該使用 SOURCE_RETRY_COUNT 代替。)

標(biāo)記的GTID

MySQL復(fù)制:標(biāo)記的GTID。MySQL復(fù)制和組復(fù)制中使用的全局事務(wù)標(biāo)識(shí)符(GID)的格式已經(jīng)擴(kuò)展,可以識(shí)別事務(wù)組,從而可以為屬于特定事務(wù)組的GTID分配唯一的名稱。例如,包含數(shù)據(jù)操作的事務(wù)可以通過(guò)比較它們的GTID容易地與由管理操作產(chǎn)生的事務(wù)區(qū)分開。

新的GTID格式是 UUID:TAG:NUMBER ,其中 TAG 是最多8個(gè)字符的字符串,通過(guò)將 gtid_next 系統(tǒng)變量的值設(shè)置為 AUTOMATIC:TAG (在此版本中添加)來(lái)啟用(有關(guān)標(biāo)記格式和其他信息,請(qǐng)參見變量的描述)。此標(biāo)記對(duì)于當(dāng)前會(huì)話中發(fā)起的所有事務(wù)都保持不變(除非使用 SET gtid_next 進(jìn)行了更改),并在此類事務(wù)的提交時(shí)應(yīng)用,或者在使用組復(fù)制時(shí)在認(rèn)證時(shí)應(yīng)用。也可以將 gtid_next 設(shè)置為 UUID:TAG:NUMBER ,以將單個(gè)事務(wù)的UUID設(shè)置為任意值,同時(shí)沿著為其分配自定義標(biāo)記。 UUID 和 NUMBER 的分配與以前的MySQL版本相比沒(méi)有變化。在任何一種情況下,用戶都有責(zé)任確保標(biāo)記對(duì)于給定的復(fù)制拓?fù)涫俏ㄒ坏摹?/p>

將 gtid_next 設(shè)置為 AUTOMATIC:TAG 或 UUID:TAG:NUMBER 需要一個(gè)新的 TRANSACTION_GTID_TAG 權(quán)限,該權(quán)限是在此版本中添加的;在原始服務(wù)器上以及副本應(yīng)用程序線程的 PRIVILEGE_CHECKS_APPLIER 上都是如此。這也意味著管理員現(xiàn)在可以將 SET @gtid_next=AUTOMATIC:TAG 或 UUID:TAG:NUMBER 的使用限制為所需的MySQL用戶或角色集,以便只有與給定數(shù)據(jù)或操作域相關(guān)的用戶才能提交具有分配的標(biāo)記的新事務(wù)。

從MySQL的早期版本升級(jí)到MySQL 8.4時(shí),任何已經(jīng)擁有 BINLOG_ADMIN 權(quán)限的用戶帳戶或角色都會(huì)自動(dòng)獲得 TRANSACTION_GTID_TAG 權(quán)限。

棄用的功能

expire_logs_days

expire_logs_days系統(tǒng)變量。MySQL 8.0中不推薦使用的 expire_logs_days server系統(tǒng)變量已被刪除。嘗試在運(yùn)行時(shí)獲取或設(shè)置此變量,或使用等效選項(xiàng)( --expire-logs-days )啟動(dòng)mysqld,現(xiàn)在會(huì)導(dǎo)致錯(cuò)誤。

使用 binlog_expire_logs_seconds 來(lái)代替 expire_logs_days ,它允許您指定(僅)整數(shù)天以外的到期期限。

刪除的功能

Replication SQL syntax

復(fù)制SQL語(yǔ)法。MySQL復(fù)制中使用的一些SQL語(yǔ)句在MySQL的早期版本中被棄用,在MySQL 8.4中不再支持?,F(xiàn)在,嘗試使用這些語(yǔ)句中的任何一個(gè)都會(huì)產(chǎn)生語(yǔ)法錯(cuò)誤。這些語(yǔ)句可以分為兩組:與源服務(wù)器相關(guān)的語(yǔ)句和與副本相關(guān)的語(yǔ)句,如下所示:

作為這項(xiàng)工作的一部分, CREATE EVENT 和 ALTER EVENT 的 DISABLE ON SLAVE 選項(xiàng)現(xiàn)在已被棄用,并被 DISABLE ON REPLICA 取代。相應(yīng)的術(shù)語(yǔ) SLAVESIDE_DISABLED 現(xiàn)在也被棄用,并且不再用于事件描述中,例如在信息架構(gòu) EVENTS 表中;現(xiàn)在顯示的是 REPLICA_SIDE_DISABLED 。

下面列出了已刪除的與復(fù)制源服務(wù)器相關(guān)的語(yǔ)句:

此處列出了刪除的與復(fù)制副本相關(guān)的SQL語(yǔ)句:

此處列出了從 START REPLICA 語(yǔ)句中刪除的選項(xiàng):

  • MASTER_LOG_FILE: Use SOURCE_LOG_FILE.
  • MASTER_LOG_POS: Use SOURCE_LOG_POS.

mysql_upgrade

mysql_upgrade實(shí)用程序,在MySQL 8.0.16中被棄用,已被刪除。

mysqlpump

mysqlpump實(shí)用程序。mysqlpump實(shí)用程序沿著及其輔助實(shí)用程序lz4_blog和zlib_blog,在MySQL 8.0.34中已被刪除。相反,使用mysqldump或MySQL Shell的轉(zhuǎn)儲(chǔ)實(shí)用程序。

一.升級(jí)前準(zhǔn)備

1.1.查看支持的平臺(tái)

MySQL8.4.0已不支持Linux7以下的操作系統(tǒng)。支持的平臺(tái)可查看官方文檔,官方文檔位置:

https://www.mysql.com/support/supportedplatforms/database.html

1.2.停止業(yè)務(wù)

確保業(yè)務(wù)已停止,保證數(shù)據(jù)一致性

--查詢數(shù)據(jù)庫(kù)中哪些線程正在執(zhí)行
show processlist;

1.3.查看源數(shù)據(jù)庫(kù)信息

#查版本
mysql -V 
或
mysql> select version();
+------------+
| version()  |
+------------+
| 8.0.35     |
+------------+
1 row in set (0.00 sec)

場(chǎng)景1:查詢所有數(shù)據(jù)庫(kù)的總大小

--查詢所有數(shù)據(jù)庫(kù)的總大小
use information_schema;
select concat(round(sum(DATA_LENGTH/1024/1024),2),'MB') as data from TABLES;

--統(tǒng)計(jì)一下所有庫(kù)數(shù)據(jù)量
SELECT
SUM(AVG_ROW_LENGTH*TABLE_ROWS+INDEX_LENGTH)/1024/1024 AS total_mb
FROM information_schema.TABLES; 

--統(tǒng)計(jì)每個(gè)庫(kù)大小
SELECT
table_schema,SUM(AVG_ROW_LENGTH*TABLE_ROWS+INDEX_LENGTH)/1024/1024 AS total_mb
FROM information_schema.TABLES group by table_schema;  

場(chǎng)景2:查看指定數(shù)據(jù)庫(kù)的大小

use information_schema;
select concat(round(sum(DATA_LENGTH/1024/1024),2),'MB') as data from TABLES where table_schema='pijiake';

場(chǎng)景3:記錄數(shù)

--查看所有數(shù)據(jù)庫(kù)各容量大小
select
table_schema as '數(shù)據(jù)庫(kù)',
sum(table_rows) as '記錄數(shù)',
sum(truncate(data_length/1024/1024, 2)) as '數(shù)據(jù)容量(MB)',
sum(truncate(index_length/1024/1024, 2)) as '索引容量(MB)'
from information_schema.tables
group by table_schema
order by sum(data_length) desc, sum(index_length) desc;

--查看所有數(shù)據(jù)庫(kù)各表容量大小
select
table_schema as '數(shù)據(jù)庫(kù)',
table_name as '表名',
table_rows as '記錄數(shù)',
truncate(data_length/1024/1024, 2) as '數(shù)據(jù)容量(MB)',
truncate(index_length/1024/1024, 2) as '索引容量(MB)'
from information_schema.tables
order by data_length desc, index_length desc;

--查看指定數(shù)據(jù)庫(kù)容量大小(例:查看mysql庫(kù)容量大小)
select
table_schema as '數(shù)據(jù)庫(kù)',
sum(table_rows) as '記錄數(shù)',
sum(truncate(data_length/1024/1024, 2)) as '數(shù)據(jù)容量(MB)',
sum(truncate(index_length/1024/1024, 2)) as '索引容量(MB)'
from information_schema.tables
where table_schema='test'; 

--查看指定數(shù)據(jù)庫(kù)各表容量大小(例:查看mysql庫(kù)各表容量大小)
select
table_schema as '數(shù)據(jù)庫(kù)',
table_name as '表名',
table_rows as '記錄數(shù)',
truncate(data_length/1024/1024, 2) as '數(shù)據(jù)容量(MB)',
truncate(index_length/1024/1024, 2) as '索引容量(MB)'
from information_schema.tables
where table_schema='test'
order by data_length desc, index_length desc;

1.4.檢查未提交的XA事務(wù)

如果您將XA事務(wù)與 InnoDB 一起使用,請(qǐng)?jiān)谏?jí)之前運(yùn)行 XA RECOVER 以檢查未提交的XA事務(wù)。如果返回結(jié)果,則通過(guò)發(fā)出 XA COMMIT 或 XA ROLLBACK 語(yǔ)句提交或回滾XA事務(wù)。

#檢查沒(méi)有未提交的xa事務(wù)
mysql> xa recover;
Empty set (0.00 sec)

1.5.確保數(shù)據(jù)都刷到硬盤上

如果您正常運(yùn)行MySQL服務(wù)器,并將 innodb_fast_shutdown 設(shè)置為 2 (冷關(guān)閉),請(qǐng)通過(guò)執(zhí)行以下語(yǔ)句之一來(lái)配置它以執(zhí)行快速或慢速關(guān)閉:

# 確保數(shù)據(jù)都刷到硬盤上,更改成0
mysql -u root -p --execute="SET GLOBAL innodb_fast_shutdown=0"
或
mysql> show variables like 'innodb_fast_shutdown';
+----------------------+-------+
| Variable_name        | Value |
+----------------------+-------+
| innodb_fast_shutdown | 1     |
+----------------------+-------+
1 row in set (0.00 sec)

mysql> set global innodb_fast_shutdown=0;
Query OK, 0 rows affected (0.00 sec)
mysql> show variables like 'innodb_fast_shutdown';
+----------------------+-------+
| Variable_name        | Value |
+----------------------+-------+
| innodb_fast_shutdown | 0     |
+----------------------+-------+

補(bǔ)充說(shuō)明:

SET GLOBAL innodb_fast_shutdown = 1; -- fast shutdown
SET GLOBAL innodb_fast_shutdown = 0; -- slow shutdown

1.6.升級(jí)前的初步檢查

mysqlcheck -u root -p --all-databases --check-upgrade

1.6.1.初步檢查的內(nèi)容有

1.6.1.1.不得存在以下問(wèn)題

  • 不能有使用過(guò)時(shí)數(shù)據(jù)類型或函數(shù)的表。
  • 不能有孤立的 .frm 文件。
  • 觸發(fā)器不能有缺失的或空的定義符或無(wú)效的創(chuàng)建上下文

1.6.1.2.不能不具有本機(jī)分區(qū)支持存儲(chǔ)引擎的分區(qū)表

不能有使用不具有本機(jī)分區(qū)支持的存儲(chǔ)引擎的分區(qū)表。要識(shí)別此類表,請(qǐng)執(zhí)行以下查詢:

SELECT TABLE_SCHEMA, TABLE_NAME
    FROM INFORMATION_SCHEMA.TABLES
    WHERE ENGINE NOT IN ('innodb', 'ndbcluster')
        AND CREATE_OPTIONS LIKE '%partitioned%';

查詢報(bào)告的任何表都必須更改為使用 InnoDB 或不分區(qū)。要將表存儲(chǔ)引擎更改為 InnoDB ,請(qǐng)執(zhí)行以下語(yǔ)句:

ALTER TABLE table_name ENGINE = INNODB;

要使已分區(qū)表成為非分區(qū)表,請(qǐng)執(zhí)行以下語(yǔ)句:

ALTER TABLE table_name REMOVE PARTITIONING;

1.6.1.3.關(guān)鍵字

MySQL 8.4中可能保留了一些以前沒(méi)有保留的關(guān)鍵字。參見第11.3節(jié)“關(guān)鍵字和保留字”。這可能會(huì)導(dǎo)致以前用作標(biāo)識(shí)符的單詞變?yōu)榉欠?。若要修?fù)受影響的語(yǔ)句,請(qǐng)使用標(biāo)識(shí)符引號(hào)。

1.6.1.4.數(shù)據(jù)字典使用的表同名的表檢查

MySQL系統(tǒng)數(shù)據(jù)庫(kù)中不能有與MySQL 8.4數(shù)據(jù)字典使用的表同名的表。要標(biāo)識(shí)具有這些名稱的表,請(qǐng)執(zhí)行以下查詢:

SELECT TABLE_SCHEMA, TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
WHERE 
    LOWER(TABLE_SCHEMA) = 'mysql'
    AND 
    LOWER(TABLE_NAME) IN
    (
    'catalogs',
    'character_sets',
    'check_constraints',
    'collations',
    'column_statistics',
    'column_type_elements',
    'columns',
    'dd_properties',
    'events',
    'foreign_key_column_usage',
    'foreign_keys',
    'index_column_usage',
    'index_partitions',
    'index_stats',
    'indexes',
    'parameter_type_elements',
    'parameters',
    'resource_groups',
    'routines',
    'schemata',
    'st_spatial_reference_systems',
    'table_partition_values',
    'table_partitions',
    'table_stats',
    'tables',
    'tablespace_files',
    'tablespaces',
    'triggers',
    'view_routine_usage',
    'view_table_usage'
    );

必須刪除或重命名查詢報(bào)告的任何表(使用 RENAME TABLE )。這還可能需要對(duì)使用受影響表的應(yīng)用程序進(jìn)行更改。

1.6.1.5.外鍵約束名稱檢查

不能有外鍵約束名稱超過(guò)64個(gè)字符的表。使用此查詢可標(biāo)識(shí)約束名稱過(guò)長(zhǎng)的表:

SELECT TABLE_SCHEMA, TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME IN
  (SELECT LEFT(SUBSTR(ID,INSTR(ID,'/')+1),
               INSTR(SUBSTR(ID,INSTR(ID,'/')+1),'_ibfk_')-1)
   FROM INFORMATION_SCHEMA.INNODB_SYS_FOREIGN
   WHERE LENGTH(SUBSTR(ID,INSTR(ID,'/')+1))>64);

對(duì)于約束名稱超過(guò)64個(gè)字符的表,請(qǐng)刪除該約束,然后使用不超過(guò)64個(gè)字符的約束名稱將其添加回來(lái)(使用 ALTER TABLE )。

1.6.1.6.sql_mode檢查

必須沒(méi)有由 sql_mode 系統(tǒng)變量定義的過(guò)時(shí)SQL模式。嘗試使用過(guò)時(shí)的SQL模式會(huì)阻止MySQL 8.4啟動(dòng)。應(yīng)該修改使用過(guò)時(shí)SQL模式的應(yīng)用程序以避免使用它們。

1.6.1.7.視圖檢查

不能有顯式定義的列名超過(guò)64個(gè)字符的視圖(在MySQL 5.7中允許列名超過(guò)255個(gè)字符的視圖)。為避免升級(jí)錯(cuò)誤,應(yīng)在升級(jí)前更改此類視圖。目前,識(shí)別列名超過(guò)64個(gè)字符的視圖的唯一方法是使用 SHOW CREATE VIEW 檢查視圖定義。您還可以通過(guò)查詢InformationSchema VIEWS 表來(lái)檢查視圖定義。

1.6.1.8.ENUM 或 SET 列元素長(zhǎng)度檢查

表或存儲(chǔ)過(guò)程中的單個(gè) ENUM 或 SET 列元素的長(zhǎng)度不得超過(guò)255個(gè)字符或1020個(gè)字節(jié)。在MySQL 8.4之前, ENUM 或 SET 列元素的最大組合長(zhǎng)度為64K。在MySQL 8.4中,單個(gè) ENUM 或 SET 列元素的最大字符長(zhǎng)度為255個(gè)字符,最大字節(jié)長(zhǎng)度為1020個(gè)字節(jié)。(The 1020字節(jié)限制支持多字節(jié)字符集)。在升級(jí)到MySQL 8.0之前,請(qǐng)修改任何超過(guò)新限制的 ENUM 或 SET 列元素。否則將導(dǎo)致升級(jí)失敗并出現(xiàn)錯(cuò)誤。

1.6.1.9.lower_case_table_names 參數(shù)設(shè)置

如果您打算在升級(jí)時(shí)將 lower_case_table_names 設(shè)置更改為1,請(qǐng)確保在升級(jí)之前將架構(gòu)和表名重新命名。否則,可能會(huì)由于架構(gòu)或表名大小寫不匹配而導(dǎo)致失敗。您可以使用以下查詢來(lái)檢查是否有包含Unicode字符的架構(gòu)和表名:

mysql> select TABLE_NAME, if(sha(TABLE_NAME) !=sha(lower(TABLE_NAME)),'Yes','No') as UpperCase from information_schema.tables;

注意:

如果升級(jí)到MySQL 8.4由于上述任何問(wèn)題而失敗,服務(wù)器會(huì)將所有更改恢復(fù)到數(shù)據(jù)目錄。在這種情況下,刪除所有重做日志文件,并在現(xiàn)有數(shù)據(jù)目錄上重新啟動(dòng)MySQL 8.3服務(wù)器以解決錯(cuò)誤。重做日志文件( ib_logfile* )默認(rèn)位于MySQL數(shù)據(jù)目錄中。修復(fù)錯(cuò)誤后,在再次嘗試升級(jí)之前執(zhí)行緩慢關(guān)機(jī)(通過(guò)設(shè)置 innodb_fast_shutdown=0 )。

1.7.備份數(shù)據(jù)庫(kù)

為了更快的回退,文檔采用目錄備份的方式。

1.7.1邏輯備份

--多個(gè)數(shù)據(jù)庫(kù)備份成1個(gè)文件
mysqldump -uroot -p  --databases  xiaomiaoao pijiake  > /root/all-databases2213.sql

--備份test數(shù)據(jù)庫(kù)
mysqldump -uroot -p test > /data/mysqldb/tmp/test_exp_$(date +%F).sql 

1.7.2.目錄備份

如果升級(jí)失敗能更快的回退

--查看進(jìn)程  確定使用的配置文件 安裝目錄
[root@localhost ~]# ps -ef | grep mysql
mysql      2232      1  0 13:10 ?        00:00:30 /mysqldb/mysql8/bin/mysqld --defaults-file=/mysqldb/my8.cnf

--確定安裝目錄和數(shù)據(jù)目錄
[root@localhost ~]# cat /mysqldb/my8.cnf | grep dir
basedir=/mysqldb/mysql8  #mysql安裝根目錄
datadir=/mysqldb/data8 #mysql數(shù)據(jù)文件所在目錄

--停止數(shù)據(jù)庫(kù)
systemctl stop mysqld
或
mysql -uroot -p
shutdown;
或
mysqladmin -u root -p shutdown

[root@localhost ~]# ps -ef | grep mysql
無(wú)輸出

--安裝目錄備份
cp -r /mysqldb/mysql8 /mysqldb/mysql8_bak_`date +%F`
--數(shù)據(jù)目錄備份
cp -r /mysqldb/data8 /mysqldb/data8_bak_`date +%F`
--配置文件備份
cp /mysqldb/my8.cnf /mysqldb/my8.cnf_bak_`date +%F`

1.8.下載并安裝新版本MySQL軟件

#1.安裝介質(zhì)上傳至/opt/下
#2.創(chuàng)建目錄
mkdir -p /data/mysqldb840
#3.解壓安裝包
cd /opt
tar -xvf mysql-8.4.0-linux-glibc2.17-x86_64.tar.xz  -C /data/mysqldb840
#4.文件夾重命名為mysql8 
mv /data/mysqldb840/mysql*  /data/mysqldb840/mysql840
#5.更改文件夾所屬
chown -R mysql.mysql /data/mysqldb840/mysql840

1.9.更改配置文件

從MySQL 8.4.0開始,默認(rèn)情況下不再啟用已棄用的 mysql_native_password 身份驗(yàn)證插件。要啟用它,請(qǐng)使用 --mysql-native-password=ON (在MySQL 8.4.0中添加)啟動(dòng)服務(wù)器,或者在MySQL配置文件的 [mysqld] 部分中包含 mysql_native_password=ON (在MySQL 8.4.0中添加)。

需注釋掉配置文件中default_authentication_plugin參數(shù),替換為mysql_native_password=ON。

更改/etc/my.conf配置

vi /mysqldb/my8.cnf
#認(rèn)證策略解決登錄ERROR 2059 (HY000): Authentication plugin 'caching_sha2_password' cannot be loaded#
#default_authentication_plugin = mysql_native_password

#add by MySQL8.4.0
mysql_native_password=ON

mysql從5.7平滑升級(jí)到8.0.27_linux mysql 5.7.6 平滑升級(jí)-CSDN博客

二.開始升級(jí)

2.1.關(guān)閉數(shù)據(jù)庫(kù)

--1.進(jìn)入原5.7 mysql命令行 正確關(guān)閉數(shù)據(jù)庫(kù)
法1:
mysqladmin -uroot -p shutdown

[root@mysql]# mysql -uroot -p
Enter password: 
#使用mysql shell 命令util.checkForServerUpgrade('root@127.0.0.1:3307', {"password":"XXXXX", "targetVersion":"8.0.26", "configPath":"/etc/my3307.cnf"}) 檢查升級(jí)到目標(biāo)版本8.0.26,確認(rèn)沒(méi)有error級(jí)別的問(wèn)題
Errors:   0
Warnings: 17
Notices:  0

#檢查沒(méi)有未提交的xa事務(wù)
mysql> xa recover;
Empty set (0.00 sec)

# 確保數(shù)據(jù)都刷到硬盤上,更改成0
mysql> show variables like 'innodb_fast_shutdown';
+----------------------+-------+
| Variable_name        | Value |
+----------------------+-------+
| innodb_fast_shutdown | 1     |
+----------------------+-------+
1 row in set (0.00 sec)

mysql> set global innodb_fast_shutdown=0;
Query OK, 0 rows affected (0.00 sec)
mysql> show variables like 'innodb_fast_shutdown';
+----------------------+-------+
| Variable_name        | Value |
+----------------------+-------+
| innodb_fast_shutdown | 0     |
+----------------------+-------+

mysql> shutdown;
Query OK, 0 rows affected (0.00 sec)

mysql> exit

#查看進(jìn)程和端口后,已無(wú)輸出記錄,確保已停止
[root@localhost mysqldb8]# ps -ef | grep mysql
root       6330   6202  0 07:35 pts/0    00:00:00 mysql -uroot -p -P2213 test
root       6466   6202  0 09:18 pts/0    00:00:00 mysql -uroot -p
root       6522   6293  0 09:58 pts/1    00:00:00 mysql -uroot -p
root       6603   6551  0 10:14 pts/3    00:00:00 grep --color=auto mysql
[root@localhost mysqldb8]# ss -ntl | grep 2213

2.2.用mysql8.4.0客戶端直接啟動(dòng)數(shù)據(jù)庫(kù)

因目標(biāo)版本8.4.0,直接在現(xiàn)有數(shù)據(jù)目錄上啟動(dòng)新版本MySQL。

cd /data/mysqldb840/mysql840
bin/mysqld_safe --user=mysql --datadir=/mysqldb/data8 &

升級(jí)過(guò)程中日志內(nèi)容:

[root@localhost opt]# tail -300f /mysqldb/log8/mysqld_error.log
......
2024-05-08T16:35:02.692061+08:00 0 [Warning] [MY-013907] [InnoDB] Deprecated configuration parameters innodb_log_file_size and/or innodb_log_files_in_group have been used to compute innodb_redo_log_capacity=536870912. Please use innodb_redo_log_capacity instead.
2024-05-08T16:35:02.695130+08:00 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2024-05-08T16:35:03.457545+08:00 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
2024-05-08T16:35:03.477878+08:00 1 [System] [MY-011090] [Server] Data dictionary upgrading from version '80023' to '80300'.
2024-05-08T16:35:04.004278+08:00 1 [System] [MY-013413] [Server] Data dictionary upgrade from version '80023' to '80300' completed.
2024-05-08T16:35:05.563366+08:00 4 [System] [MY-013381] [Server] Server upgrade from '80035' to '80400' started.
2024-05-08T16:35:09.055973+08:00 4 [System] [MY-013381] [Server] Server upgrade from '80035' to '80400' completed.
2024-05-08T16:35:09.194856+08:00 0 [Warning] [MY-010068] [Server] CA certificate ca.pem is self signed.
2024-05-08T16:35:09.194920+08:00 0 [System] [MY-013602] [Server] Channel mysql_main configured to support TLS. Encrypted connections are now supported for this channel.
2024-05-08T16:35:09.221684+08:00 0 [System] [MY-010931] [Server] /data/mysqldb840/mysql840/bin/mysqld: ready for connections. Version: '8.4.0'  socket: '/mysqldb/mysql.sock'  port: 3306  MySQL Community Server - GPL.
2024-05-08T16:35:09.228009+08:00 0 [System] [MY-011323] [Server] X Plugin ready for connections. Bind-address: '::' port: 33060, socket: /tmp/mysqlx.sock
.......

2.3..更改環(huán)境變量

因basedir由/mysqldb/mysql8 變成了/data/mysqldb840/mysql840,故相關(guān)環(huán)境變量修改如下

#更改環(huán)境變量
[root@localhost ~]# vi .bash_profile
...
MYSQL_DATA=/data/mysqldb/data
#mysql8.0棄用
#export PATH=$PATH://mysqldb/mysql8/bin
#export MYSQL_HOME=/mysqldb/mysql8
#add for mysql8.4.0
export MYSQL_HOME=/data/mysqldb840/mysql840
export PATH=$PATH:/data/mysqldb840/mysql840/bin

#生效環(huán)境變量
[root@localhost ~]# source .bash_profile

#查看版本
[root@localhost ~]# mysql -V
mysql  Ver 8.4.0 for Linux on x86_64 (MySQL Community Server - GPL)
或
[root@localhost ~]# mysql -uroot -p
root@localhost :(none) 10:40:24>select version();
+-----------+
| version() |
+-----------+
| 8.4.0     |
+-----------+
1 row in set (0.00 sec)

root@localhost :(none) 10:40:30>exit

2.4.更改配置文件

vi /mysqldb/my8.cnf
basedir=/mysqldb/mysql8  #mysql安裝根目錄
替換為
basedir=/data/mysqldb840/mysql840  #mysql安裝根目錄

可用下面的批量替換
:%s#/mysqldb/mysql8#/data/mysqldb840/mysql840#g

2.5.配置系統(tǒng)服務(wù)

--配置mysql8系統(tǒng)服務(wù)
cp /usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/mysqld.service_bak_20240508

[root@localhost ~]# cat /usr/lib/systemd/system/mysqld.service
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target

[Install]
WantedBy=multi-user.target

[Service]
User=mysql
Group=mysql
ExecStart=/data/mysqldb840/mysql840/bin/mysqld --defaults-file=/data/mysqldb/my.cnf
LimitNOFILE=65536  
LimitNPROC=65536

2.6.重新啟動(dòng)數(shù)據(jù)庫(kù)

--關(guān)閉數(shù)據(jù)庫(kù)
mysql -uroot -p
shutdown;

--通過(guò)系統(tǒng)服務(wù)重啟數(shù)據(jù)庫(kù)
systemctl start mysqld
systemctl status mysqld

三.升級(jí)過(guò)程中所做內(nèi)容

安裝新版本的MySQL可能需要升級(jí)現(xiàn)有安裝的以下部分:

  • mysql 系統(tǒng)架構(gòu),其中包含存儲(chǔ)MySQL服務(wù)器運(yùn)行時(shí)所需信息的表。mysql 模式表分為兩大類:

(1).數(shù)據(jù)字典表,用于存儲(chǔ)數(shù)據(jù)庫(kù)對(duì)象元數(shù)據(jù)。

(2).系統(tǒng)表(即剩余的非數(shù)據(jù)字典表),用于其他操作目的。

  • 其他架構(gòu),其中一些是內(nèi)置的,可以被認(rèn)為是由服務(wù)器“擁有”的,而其他則不是:

(1).performance_schema 、 INFORMATION_SCHEMA 、 ndbinfo 和 sys 架構(gòu)。

 (2).User schemas. 用戶架構(gòu)

到此這篇關(guān)于MySQL8.0就地升級(jí)到MySQL8.4.0的方法的文章就介紹到這了,更多相關(guān)MySQL8.0升級(jí)到8.4.0內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • MySQL5.7如何修改root密碼

    MySQL5.7如何修改root密碼

    這篇文章主要為大家詳細(xì)介紹了MySQL5.7修改root密碼的相關(guān)方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-01-01
  • MySQL系列之八 MySQL服務(wù)器變量

    MySQL系列之八 MySQL服務(wù)器變量

    其中有些參數(shù)支持運(yùn)行時(shí)修改,會(huì)立即生效;有些參數(shù)不支持,且只能通過(guò)修改配置文件,并重啟服務(wù)器程序生效;有些參數(shù)作用域是全局的,且不可改變;有些可以為每個(gè)用戶提供單獨(dú)(會(huì)話)的設(shè)置
    2021-07-07
  • Centos中徹底刪除Mysql(rpm、yum安裝的情況)

    Centos中徹底刪除Mysql(rpm、yum安裝的情況)

    這篇文章主要介紹了Centos中徹底刪除Mysql(rpm、yum安裝的情況),本文直接給出操作代碼,需要的朋友可以參考下
    2015-02-02
  • 詳解MySQL插入和查詢數(shù)據(jù)的相關(guān)命令及語(yǔ)句使用

    詳解MySQL插入和查詢數(shù)據(jù)的相關(guān)命令及語(yǔ)句使用

    這篇文章主要介紹了MySQL插入和查詢數(shù)據(jù)的相關(guān)命令及語(yǔ)句使用,包括相關(guān)的PHP腳本操作方法講解也很詳細(xì),需要的朋友可以參考下
    2015-11-11
  • mysql 8.0.12 安裝配置圖文教程

    mysql 8.0.12 安裝配置圖文教程

    這篇文章主要為大家詳細(xì)介紹了mysql 8.0.12 安裝配置圖文教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-08-08
  • mysql通過(guò)INSERT IGNORE INTO插入拼音字符無(wú)效問(wèn)題及解決

    mysql通過(guò)INSERT IGNORE INTO插入拼音字符無(wú)效問(wèn)題及解決

    這篇文章主要介紹了mysql通過(guò)INSERT IGNORE INTO插入拼音字符無(wú)效問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • mysql索引覆蓋實(shí)例分析

    mysql索引覆蓋實(shí)例分析

    這篇文章主要介紹了mysql索引覆蓋,簡(jiǎn)單說(shuō)明了索引覆蓋的概念,并結(jié)合實(shí)例形式分析了mysql索引覆蓋的相關(guān)應(yīng)用與操作注意事項(xiàng),需要的朋友可以參考下
    2019-07-07
  • MySql用DATE_FORMAT截取DateTime字段的日期值

    MySql用DATE_FORMAT截取DateTime字段的日期值

    MySql截取DateTime字段的日期值可以使用DATE_FORMAT來(lái)格式化,使用方法如下
    2014-08-08
  • 如何使用mysqladmin獲取一個(gè)mysql實(shí)例當(dāng)前的TPS和QPS

    如何使用mysqladmin獲取一個(gè)mysql實(shí)例當(dāng)前的TPS和QPS

    這篇文章主要介紹了如何使用mysqladmin這個(gè)工具來(lái)獲取一個(gè)mysql實(shí)例當(dāng)前的TPS和QPS,幫助大家更好的管理數(shù)據(jù)庫(kù),感興趣的朋友可以了解下
    2020-11-11
  • MLSQL編譯時(shí)權(quán)限控制示例詳解

    MLSQL編譯時(shí)權(quán)限控制示例詳解

    這篇文章主要給大家介紹了關(guān)于MLSQL編譯時(shí)權(quán)限控制的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用mysql具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03

最新評(píng)論