日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

持久緩存池(Warm Buffer Pool)

本文介紹了PolarDB的持久緩存池(Warm Buffer Pool)功能,包括技術原理、功能優勢、使用方法等內容。

背景信息

PolarDB MySQL版支持持久緩存池功能,在主節點主動重啟或者異常崩潰后重啟的過程中,緩存池(Buffer Pool)中的數據依然存在,從而大幅度加快重啟速度,并保持重啟后性能無衰減。

前提條件

  • PolarDB集群版本需為PolarDB MySQL版8.0.2版本且Revision version為8.0.2.1.0或以上,您可以參見查詢版本號確認集群版本。

  • 請確保未開啟壓縮表的功能,否則持久緩存池功能會失效。

技術原理

PolarDB MySQL版的持久緩存池功能利用了Linux的共享內存(Shared Memory)技術,將物理機內部的InnoDB緩存池從PolarDB的進程中獨立起來,以實現主節點快速重啟的能力。

持久緩存池的技術架構如下:

warmbp.jpg
  • 緩存池的控制信息、Page的控制信息,以及緩存池中存放數據的Page,其內存均從共享內存(Shared Memory)中分配,并獨立于PolarDB進程存在。

  • 當存在獨立的緩存池的時候,PolarDB能夠掛載到已經存在的緩存池中。

  • PolarDB能夠修復節點異常崩潰后不一致的緩存池,使其達到一致狀態。

  • 當主節點主動重啟時,PolarDB能夠保存主要事務信息,以跳過關機時的回滾和重啟時的恢復過程,從而實現主節點快速重啟。

  • mysqlshm是PolarDB MySQL版提供的獨立工具,可以直接訪問已經存在的緩存池,實現配置查詢、釋放緩存池等運維功能。

功能優勢

持久緩存池功能具有加快主節點重啟速度以及保持重啟后性能無衰減兩大優勢。

  • 加快主節點重啟速度:在開啟持久緩存池功能的情況下,大大加快主節點主動重啟和異常崩潰恢復速度。特別是大規格的緩存池在大量寫入和大事務的情況下,開啟持久緩存池后,主節點的重啟或恢復可以秒級完成,相比未開啟時分鐘級的速度,實現了1~2個數量級的提升。

  • 主節點重啟后性能無衰減:在開啟持久緩存池的情況下,當節點主動重啟或者異常崩潰恢復以后,熱數據仍然在緩存池中,性能不出現衰減,無需緩存池預熱的過程。

    示例:

    如下是一個50 GB的緩存池在Sysbench oltp_read_only的負載下,主節點重啟后的吞吐對比圖。

    image.png從上圖可以看到:

    • 對于普通的緩存池(橙色線條),在節點重啟后,其吞吐只有穩定值的2%。在之后的200多秒內,吞吐緩慢回升到重啟前的100%。

    • 對于開啟了持久緩存池功能的存儲池(藍色線條),其吞吐則沒有任何的性能衰減。

使用說明

參數說明

參數名稱

類型

級別

參數說明

innodb_buf_shm_key

整型

Global

每個PolarDB進程的唯一標識符。

  • 取值范圍:0至264-1。

  • 默認值:0,表示關閉持久緩存池功能。

innodb_buf_shm_base_addr

整型

Global

共享緩存池的基虛擬地址偏移量。共享內存將被映射到PolarDB從此地址開始的虛擬內存空間。

  • 取值范圍:0x300000000000至264-1。

  • 默認值:0x567800000000。

innodb_buf_page_desc_free_list_size

整型

Global

為分配壓縮頁(Zip Page)描述符而保留的Page數。

  • 取值范圍:8至128。

  • 默認值:16。

innodb_buf_free_zip_pages

整型

Global

修復Zip Page行為的策略。

  • 取值范圍:1至2。

    • 1:在非正常重啟時釋放Zip Page;

    • 2:在正常重啟時強制釋放Zip Page。

  • 默認值:1。

innodb_buffer_pool_parallel_scan_threads

整型

Global

并行掃描線程數。

  • 取值范圍:0至512。

  • 默認值:4。

innodb_buf_shm_huge_page

Bool

Global

在分配共享內存時,是否開啟大頁(Huge Page)。

  • 取值范圍:ON或OFF。

  • 默認值:ON,即默認開啟。

innodb_fast_shutdown

整型

Global

設置InnoDB引擎的關閉模式。

  • 取值范圍:0至3,關閉速度遞增。其中,取值3是PolarDB MySQL版新增的取值,其關閉過程與2一致,但不回滾未提交的事務。

  • 默認值:1。

狀態變量

持久緩存池功能新增了一個狀態變量:innodb_shared_buffer_pool_status。其取值如下:

狀態變量名

說明

Using process private memory

持久緩存池功能已關閉,使用私有內存。

Allocate from shared memory

PolarDB從共享內存中分配內存。

Attach to clean shutdown shared memory

PolarDB連接到已清理的關閉的緩存池。

Attach to abnormal shutdown shared memory

PolarDB連接到異常崩潰的緩存池。

mysqlshm工具

PolarDB MySQL版新增了mysqlshm工具來管理持久緩存池功能,其使用說明如下:

Usage: mysqlshm -k key [options]
   -h, Display this help and exit.
   -k, The shared memory key  [REQUIRED]
   -i, Prinf the basic info of shared memory
   -f, Free the shared memory

操作步驟

主動重啟

  1. 配置參數inndb_buf_shm_key為非0值到my.cnf,并正常啟動PolarDB。

    啟動后,檢查innodb_shared_buffer_pool_status狀態變量是否為“Allocate from shared memory”。

  2. 配置參數innodb_fast_shutdown為3。

  3. 重啟主節點。

  4. 重啟后,檢查innodb_shared_buffer_pool_status狀態變量是否為“Attach to clean shutdown shared memory”。

異常崩潰恢復

  1. 配置參數inndb_buf_shm_key為非0值到my.cnf,并正常啟動PolarDB

  2. 啟動后,檢查innodb_shared_buffer_pool_status狀態變量是否為“Allocate from shared memory”。

  1. 終止mysqld進程,模擬節點異常崩潰。

  2. 等待節點再次啟動。

    啟動后,檢查innodb_shared_buffer_pool_status狀態變量是否為“Attach to abnormal shutdown shared memory”。