国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

TIDB運維文檔(下)

IT那活兒 / 2406人閱讀
TIDB運維文檔(下)

點擊上方“IT那活兒”公眾號,關注后了解更多內容,不管IT什么活兒,干就完了?。?!

接上篇《TiDB運維文檔(上)》,我們今天講一下TIDB數據庫的日常運維。


版本升級

1.1 升級 TiUP 或更新 TiUP 離線鏡像

參考tidb安裝部署文檔,安裝tiup。

1.2 檢查當前集群的健康狀況

tiup cluster check name>

執行結束后,最后會輸出 region status 檢查結果。

  • 如果結果為 "All regions are healthy",則說明當前集群中所有 region 均為健康狀態,可以繼續執行升級;

  • 如果結果為 "Regions are not fully healthy: m miss-peer, n pending-peer" 并提示 "Please fix unhealthy regions before other operations.",則說明當前集群中有 region 處在異常狀態,應先排除相應異常狀態,并再次檢查結果為 "All regions are healthy" 后再繼續升級。

1.3 升級 TiDB 集群

升級的方式有兩種:不停機升級和停機升級。
TiUP Cluster 默認的升級 TiDB 集群的方式是不停機升級,即升級過程中集群仍然可以對外提供服務。
升級時會對各節點逐個遷移 leader 后再升級和重啟,因此對于大規模集群需要較長時間才能完成整個升級操作。如果業務有維護窗口可供數據庫停機維護,則可以使用停機升級的方式快速進行升級操作。
以下我們只介紹不停機升級方式:
tiup cluster upgrade  
以升級到 5.1.2 版本為例:
tiup cluster upgrade <cluster-name> v5.1.2

注意:

  • a) 滾動升級會逐個升級所有的組件。升級 TiKV 期間,會逐個將 TiKV 上的所有 leader 切走再停止該 TiKV 實例。默認超時時間為 5 分鐘(300 秒),超時后會直接停止該實例。
  • b) 如果不希望驅逐 leader,而希望快速升級集群至新版本,可以在上述命令中指定 --force,該方式會造成性能抖動,不會造成數據損失。
  • c) 如果希望保持性能穩定,則需要保證 TiKV 上的所有 leader 驅逐完成后再停止該 TiKV 實例,可以指定 --transfer-timeout 為一個更大的值,如 --transfer-timeout 3600,單位為秒。


擴縮容

2.1 擴容 TiDB/PD/TiKV 節點

2.1.1 在 scale-out.yaml 文件添加擴容拓撲配置
  • TiDB 配置文件參考:
tidb_servers:
- host: 10.0.1.5
ssh_port: 22
port: 4000
status_port: 10080
deploy_dir: /data/deploy/install/deploy/tidb-4000
log_dir: /data/deploy/install/log/tidb-4000
  • TiKV 配置文件參考:
tikv_servers:
- host: 10.0.1.5
ssh_port: 22
port: 20160
status_port: 20180
deploy_dir: /data/deploy/install/deploy/tikv-20160
data_dir: /data/deploy/install/data/tikv-20160
log_dir: /data/deploy/install/log/tikv-20160
  • PD 配置文件參考:
pd_servers:
- host: 10.0.1.5
ssh_port: 22
name: pd-1
client_port: 2379
peer_port: 2380
deploy_dir: /data/deploy/install/deploy/pd-2379
data_dir: /data/deploy/install/data/pd-2379
log_dir: /data/deploy/install/log/pd-2379
可以使用 tiup cluster edit-config 查看當前集群的配置信息,因為其中的 global 和 server_configs 參數配置默認會被 scale-out.yaml 繼承,因此也會在 scale-out.yaml 中生效。
2.1.2 執行擴容命令
tiup cluster scale-out  scale-out.yaml
預期輸出 Scaled cluster out successfully 信息,表示擴容操作成功。
注意:
須提前打通中控機到目標主機的sudo互信。

2.2 擴容 TiFlash 節點

2.2.1 添加節點信息到 scale-out.yaml 文件
編寫 scale-out.yaml 文件,添加該 TiFlash 節點信息(目前只支持 ip,不支持域名):
tiflash_servers:
- host: 10.0.1.4
2.2.2 運行擴容命令
tiup cluster scaltiup cluster scale-out  
scale-out.yamle-out  scale-out.yaml

2.3 擴容 TiCDC 節點

2.3.1 添加節點信息到 scale-out.yaml 文件
編寫 scale-out.yaml 文件:
cdc_servers:
- host: 10.0.1.3
- host: 10.0.1.4
2.3.2 運行擴容命令
tiup cluster scale-out  scale-out.yaml

2.4 縮容 TiDB/PD/TiKV 節點

2.4.1 查看節點 ID 信息
tiup cluster display 
2.4.2 執行縮容操作
tiup cluster scale-in <cluster-name> --node 10.0.1.5:20160
其中 --node 參數為需要下線節點的 ID。
預期輸出 Scaled cluster in successfully 信息,表示縮容操作成功。
2.4.3 檢查集群狀態
下線需要一定時間,下線節點的狀態變為 Tombstone 就說明下線成功。
執行如下命令檢查節點是否下線成功:
tiup cluster display 
2.5 縮容 TiFlash 節點
2.5.1 根據 TiFlash 剩余節點數調整數據表的副本數
在下線節點之前,確保 TiFlash 集群剩余節點數大于等于所有數據表的最大副本數,否則需要修改相關表的 TiFlash 副本數。
在 TiDB 客戶端中針對所有副本數大于集群剩余 TiFlash 節點數的表執行:
alter table name>.<table-name> set tiflash replica 0;
等待相關表的 TiFlash 副本被刪除(按照查看表同步進度一節操作,查不到相關表的同步信息時即為副本被刪除)。
2.5.2 執行縮容操作
通過以下命令確定需要下線的節點名稱:
tiup cluster display 
執行 scale-in 命令來下線節點,假設步驟 1 中獲得該節點名為 10.0.1.4:9000
tiup cluster scale-in <cluster-name> --node 10.0.1.4:9000

2.6 縮容 TiCDC 節點

tiup cluster scale-in <cluster-name> --node 10.0.1.4:8300


備份恢復

3.1 BR備份恢復

BR 全稱為 Backup & Restore,是 TiDB 分布式備份恢復的命令行工具,用于對 TiDB 集群進行數據備份和恢復。BR 只支持在 TiDB v3.1 及以上版本使用。
3.1.1 工作原理
BR 將備份或恢復操作命令下發到各個 TiKV 節點。TiKV 收到命令后執行相應的備份或恢復操作。此備份只備份各節點的leader副本。
在一次備份或恢復中,各個 TiKV 節點都會有一個對應的備份路徑,TiKV 備份時產生的備份文件將會保存在該路徑下,恢復時也會從該路徑讀取相應的備份文件。
3.1.2 備份文件類型

備份路徑下會生成以下幾種類型文件:

  • SST 文件:存儲 TiKV 備份下來的數據信息。
  • backupmeta 文件:存儲本次備份的元信息,包括備份文件數、備份文件的 Key 區間、備份文件大小和備份文件 Hash (sha256) 值。
  • backup.lock 文件:用于防止多次備份到同一目錄。
1) 推薦部署配置
推薦 BR 部署在 PD 節點上。
推薦使用一塊高性能 SSD 網盤,掛載到 BR 節點和所有 TiKV 節點上,網盤推薦萬兆網卡,否則帶寬有可能成為備份恢復時的性能瓶頸。
2) 備份數據
  • i) 備份全庫
br backup full 
--pd "${PDIP}:2379"
--storage "local:///tmp/backup"
--ratelimit 128
--log-file backupfull.log
以上命令中,--ratelimit 選項限制了每個 TiKV 執行備份任務的速度上限(單位 MiB/s)。--log-file 選項指定把 BR 的 log 寫到 backupfull.log 文件中。
  • ii) 備份單庫
br backup db 
--pd "${PDIP}:2379"
--db test
--storage "local:///tmp/backup"
--ratelimit 128
--log-file backuptable.log
db 子命令的選項為 --db,用來指定數據庫名。其他選項的含義與備份全部集群數據相同。
  • iii) 備份單表
br backup table 
--pd "${PDIP}:2379"
--db test
--table usertable
--storage "local:///tmp/backup"
--ratelimit 128
--log-file backuptable.log
table 子命令有 --db 和 --table 兩個選項,分別用來指定數據庫名和表名。其他選項的含義與備份全部集群數據相同。
  • iv) 使用表庫功能過濾備份多表
使用表庫過濾功能備份多張表的數據。
如果你需要以更復雜的過濾條件來備份多個表,執行 br backup full 命令,并使用 --filter 或 -f 來指定表庫過濾規則。
用例:以下命令將所有 db*.tbl* 形式的表格數據備份到每個 TiKV 節點上的 /tmp/backup 路徑,并將 backupmeta 文件寫入該路徑。
br backup full 
--pd "${PDIP}:2379" 
--filter db*.tbl* 
--storage "local:///tmp/backup" 
--ratelimit 128 
--log-file backupfull.log
3) 恢復數據
  • i) 恢復全部備份數據
要將全部備份數據恢復到集群中來,可使用 br restore full 命令。該命令的使用幫助可以通過 br restore full -h 或 br restore full --help 來獲取。
用例:將 /tmp/backup 路徑中的全部備份數據恢復到集群中。
br restore full 
--pd "${PDIP}:2379"
--storage "local:///tmp/backup"
--ratelimit 128
--log-file restorefull.log
以上命令中,--ratelimit 選項限制了每個 TiKV 執行恢復任務的速度上限(單位 MiB/s)。--log-file 選項指定把 BR 的 log 寫到 restorefull.log 文件中。
  • ii) 恢復單個數據庫的數據
要將備份數據中的某個數據庫恢復到集群中,可以使用 br restore db 命令。該命令的使用幫助可以通過 br restore db -h 或 br restore db --help 來獲取。
用例:將 /tmp/backup 路徑中備份數據中的某個數據庫恢復到集群中。
br restore db 
--pd "${PDIP}:2379" 
--db "test" 
--ratelimit 128 
--storage "local:///tmp/backup" 
--log-file restorefull.log
以上命令中 --db 選項指定了需要恢復的數據庫名字。其余選項的含義與恢復全部備份數據相同。
  • iii) 恢復單張表的數據
要將備份數據中的某張數據表恢復到集群中,可以使用 br restore table 命令。該命令的使用幫助可通過 br restore table -h 或 br restore table --help 來獲取。
用例:將 /tmp/backup 路徑下的備份數據中的某個數據表恢復到集群中。
br restore table 
--pd "${PDIP}:2379"
--db "test"
--table "usertable"
--ratelimit 128
--storage "local:///tmp/backup"
--log-file restorefull.log
  • iv) 使用表庫功能過濾恢復數據
如果你需要用復雜的過濾條件來恢復多個表,執行 br restore full 命令,并用 --filter 或 -f 指定使用表庫過濾。
用例:以下命令將備份在 /tmp/backup 路徑的表的子集恢復到集群中。
br restore full 
--pd "${PDIP}:2379" 
--filter db*.tbl* 
--storage "local:///tmp/backup" 
--log-file restorefull.log

3.2 TiCDC異地庫備份

B集群作為備份集群,GC time設置為 1天,生產A集群需要恢復數據時,可通過Dumpling工具導出指定時間點之前數據,進行數據恢復。

3.3 DumplingTiDB Lightning備份恢復

輸出文件格式:
  • metadata:此文件包含導出的起始時間,以及 master binary log 的位置
Started dump at: 2020-11-10 10:40:19
SHOW MASTER STATUS:
Log: tidb-binlog
Pos: 420747102018863124

Finished dump at: 2020-11-10 10:40:20
  • {schema}-schema-create.sql:創建 schema 的 SQL 文件。
CREATE DATABASE `test` /*!40100 DEFAULT CHARACTER SET utf8mb4 */;
  • {schema}.{table}-schema.sql:創建 table 的 SQL 文件。
CREATE TABLE `t1` (
`id` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;
  • {schema}.{table}.{0001}.{sql|csv}:數據源文件。
/*!40101 SET NAMES binary*/;
INSERT INTO `t1` VALUES
(1);
1) 備份工具Dumpling
該工具可以把存儲在 TiDB/MySQL 中的數據導出為 SQL 或者 CSV 格式,可以用于完成邏輯上的全量備份或者導出。
./dumpling 
-u root
-P 4000
-h 127.0.0.1
--filetype sql
-o /tmp/test
-t 8
-r 200000
-F 256MiB
  • --filetype:導出文件類型,sql|csv。
  • -o:用于選擇存儲導出文件的目錄。
  • -t:用于指定導出的線程數。增加線程數會增加 Dumpling 并發度提高導出速度,但也會加大數據庫內存消耗,因此不宜設置過大。
  • -r:用于指定單個文件的最大行數,指定該參數后 Dumpling 會開啟表內并發加速導出,同時減少內存使用。
  • -F:選項用于指定單個文件的最大大小(單位為 MiB,可接受類似 5GiB 或 8KB 的輸入)。
  • --filter:表庫過濾。
例: --filter "employees.*"
  --filter "*.WorkOrder"
--where :條件過濾。
例:   --where "id < 100"
--sql:導出scv文件時條件過濾。
例: --sql select * from `test`.`sbtest1` where id < 100
參數列表:
主要選項
用途
默認值
-V 或 --version
輸出 Dumpling 版本并直接退出
 
-B 或 --database
導出指定數據庫
 
-T 或 --tables-list
導出指定數據表
 
-f 或 --filter
導出能匹配模式的表,語法可參考 filter.txt
*.*(導出所有庫表)
--case-sensitive
table-filter 是否大小寫敏感
false,大小寫不敏感
-h 或 --host
連接的數據庫主機的地址
"127.0.0.1"
-t 或 --threads
備份并發線程數
4
-r 或 --rows
將 table 劃分成 row 行數據,一般針對大表操作并發生成多個文件。
 
-L 或 --logfile
日志輸出地址,為空時會輸出到控制臺
""
--loglevel
日志級別 {debug,info,warn,error,dpanic,panic,fatal}
"info"
--logfmt
日志輸出格式 {text,json}
"text"
-d 或 --no-data
不導出數據,適用于只導出 schema 場景
 
--no-header
導出 csv 格式的 table 數據,不生成 header
 
-W 或 --no-views
不導出 view
TRUE
-m 或 --no-schemas
不導出 schema,只導出數據
 
-s 或--statement-size
控制 INSERT SQL 語句的大小,單位 bytes
 
-F 或 --filesize
將 table 數據劃分出來的文件大小,需指明單位(如 128B, 64KiB, 32MiB, 1.5GiB)
 
--filetype
導出文件類型(csv/sql)
"sql"
-o 或 --output
導出文件路徑
"./export-${time}"
-S 或 --sql
根據指定的 sql 導出數據,該選項不支持并發導出
 
--consistency
flush: dump 前用 FTWRL
"auto"
snapshot: 通過 TSO 來指定 dump 某個快照時間點的 TiDB 數據
lock: 對需要 dump 的所有表執行 lock tables read 命令
none: 不加鎖 dump,無法保證一致性
auto: MySQL 默認用 flush, TiDB 默認用 snapshot
--snapshot
snapshot tso,只在 consistency=snapshot 下生效
 
--where
對備份的數據表通過 where 條件指定范圍
 
-p 或 --password
連接的數據庫主機的密碼
 
-P 或 --port
連接的數據庫主機的端口
4000
-u 或 --user
連接的數據庫主機的用戶名
"root"
--dump-empty-database
導出空數據庫的建庫語句
TRUE
--ca
用于 TLS 連接的 certificate authority 文件的地址
 
--cert
用于 TLS 連接的 client certificate 文件的地址
 
--key
用于 TLS 連接的 client private key 文件的地址
 
--csv-delimiter
csv 文件中字符類型變量的定界符
"
--csv-separator
csv 文件中各值的分隔符
,
--csv-null-value
csv 文件空值的表示
"N"
--escape-backslash
使用反斜杠 () 來轉義導出文件中的特殊字符
TRUE
--output-filename-template
以 golang template 格式表示的數據文件名格式
{{.DB}}.{{.Table}}.{{.Index}}
支持 {{.DB}}、{{.Table}}、{{.Index}} 三個參數
分別表示數據文件的庫名、表名、分塊 ID
--status-addr
Dumpling 的服務地址,包含了 Prometheus 拉取 metrics 信息及 pprof 調試的地址
":8281"
--tidb-mem-quota-query
單條 dumpling 命令導出 SQL 語句的內存限制,單位為 byte,默認為 32 GB
34359738368


2) 恢復工具Tidb Lightning
TiDB Lightning 是一個將全量數據高速導入到 TiDB 集群的工具。
日常命令:
tidb-lightning --config cfg.toml --backend tidb -tidb-
host 127.0.0.1 -tidb-user root --tidb-password passwd -
tidb-port 4000 -d /home/tidb/bakfile/9
Local-backend 工作原理:

TiDB Lightning 整體工作原理如下:

  • i) 在導入數據之前,tidb-lightning 會自動將 TiKV 集群切換為“導入模式” (import mode),優化寫入效率并停止自動壓縮。
  • ii) tidb-lightning 會在目標數據庫建立架構和表,并獲取其元數據。
  • iii) 每張表都會被分割為多個連續的區塊,這樣來自大表 (200 GB+) 的數據就可以用增量方式并行導入。
  • iv) tidb-lightning 會為每一個區塊準備一個“引擎文件 (engine file)”來處理鍵值對。tidb-lightning 會并發讀取 SQL dump,將數據源轉換成與 TiDB 相同編碼的鍵值對,然后將這些鍵值對排序寫入本地臨時存儲文件中。
  • v) 當一個引擎文件數據寫入完畢時,tidb-lightning 便開始對目標 TiKV 集群數據進行分裂和調度,然后導入數據到 TiKV 集群。
  • vi) 引擎文件包含兩種:數據引擎與索引引擎,各自又對應兩種鍵值對:行數據和次級索引。通常行數據在數據源里是完全有序的,而次級索引是無序的。因此,數據引擎文件在對應區塊寫入完成后會被立即上傳,而所有的索引引擎文件只有在整張表所有區塊編碼完成后才會執行導入。
  • vii) 整張表相關聯的所有引擎文件完成導入后,tidb-lightning 會對比本地數據源及下游集群的校驗和 (checksum),確保導入的數據無損,然后讓 TiDB 分析 (ANALYZE) 這些新增的數據,以優化日后的操作。同時,tidb-lightning 調整 AUTO_INCREMENT 值防止之后新增數據時發生沖突。
  • viii) 表的自增 ID 是通過行數的上界估計值得到的,與表的數據文件總大小成正比。因此,最后的自增 ID 通常比實際行數大得多。這屬于正?,F象,因為在 TiDB 中自增 ID 不一定是連續分配的。
  • viiii) 在所有步驟完畢后,tidb-lightning 自動將 TiKV 切換回“普通模式” (normal mode),此后 TiDB 集群可以正常對外提供服務。
參數列表:
參數
描述
對應配置項
--config file
從 file 讀取全局設置。如果沒有指定則使用默認設置。
 
-V
輸出程序的版本
 
-d directory
讀取數據的目錄
mydumper.data-source-dir
-L level
日志的等級:debug、info、warn、error 或 fatal (默認為 info)
lightning.log-level
-f rule
表庫過濾的規則 (可多次指定)
mydumper.filter
--backend backend
選擇后端的模式:importer、local 或 tidb
tikv-importer.backend
--log-file file
日志文件路徑(默認是 /tmp 中的臨時文件)
lightning.log-file
--status-addr ip:port
TiDB Lightning 服務器的監聽地址
lightning.status-port
--importer host:port
TiKV Importer 的地址
tikv-importer.addr
--pd-urls host:port
PD endpoint 的地址
tidb.pd-addr
--tidb-host host
TiDB Server 的 host
tidb.host
--tidb-port port
TiDB Server 的端口(默認為 4000)
tidb.port
--tidb-status port
TiDB Server 的狀態端口的(默認為 10080)
tidb.status-port
--tidb-user user
連接到 TiDB 的用戶名
tidb.user
--tidb-password password
連接到 TiDB 的密碼
tidb.password
--no-schema
忽略表結構文件,直接從 TiDB 中獲取表結構信息
mydumper.no-schema
--enable-checkpoint bool
是否啟用斷點 (默認值為 true)
checkpoint.enable
--analyze bool
導入后分析表信息 (默認值為 true)
post-restore.analyze
--checksum bool
導入后比較校驗和 (默認值為 true)
post-restore.checksum
--check-requirements bool
開始之前檢查集群版本兼容性(默認值為 true)
lightning.check-requirements
--ca file
TLS 連接的 CA 證書路徑
security.ca-path
--cert file
TLS 連接的證書路徑
security.cert-path
--key file
TLS 連接的私鑰路徑
security.key-path
--server-mode
在服務器模式下啟動 TiDB Lightning
lightning.server-mode
backend各模式區別:
backend
Local-backend
Importer-backend
TiDB-backend
速度
快 (~500 GB/小時)
快 (~400 GB/小時)
慢 (~50 GB/小時)
資源使用率
占用網絡帶寬
導入時是否滿足 ACID
目標表
必須為空
必須為空
可以不為空
額外組件
tikv-importer
支持 TiDB 集群版本
>= v4.0.0
全部
全部
是否影響 TiDB 對外提供服務



誤操作恢復

參考: https://asktug.com/t/topic/63675

4.1 誤drop庫

1) 確認刪除時間
刪庫這種操作權限一般只有管理員才會有,當然也不排除有部分開發人員申請了超級權限,如果這個事情發生了那么我們肯定是希望能精確找到刪庫的時間點這樣可以減少數據丟失,好在Tidb記錄了所以DDL操作,可以通過adminshowddljobs;查看,找到刪庫的具體時間點。
JOB_ID
DB_NAME
TABLE_NAME
JOB_TYPE
START_TIME
END_TIME
815
xxx_ods

drop schema
2020-11-17 08:26:36
2020-11-17 08:26:36
814
xxx_ods
xxx_co
create table
2020-11-17 08:24:20
2020-11-17 08:24:21
812
xxx_ods

create schema
2020-11-17 08:24:20
2020-11-17 08:24:20
810
xxx ods

drop schema
2020-11-17 08:11:57
2020-11-17 08:11:59
809
test
t
truncate table
2020-11-16 15:55:48
2020-11-16 15:55:48
807
test
t
recover table
2020-11-16 15:23:16
2020-11-16 15:23:18
806
test
t
drop table
2020-11-16 15:23:03
2020-11-16 15:23:03
805
xxx_ptest
xxx_re_1
truncate table
2020-11-16 14:08:14
2020-11-16 14:08:15
803
xxx_ptest
xxx_re_2
create table
2020-11-16 13:59:40
2020-11-16 13:59:40
801
xxx_ptest
xxx_re_3
rename table
2020-11-16 13:59:35
2020-11-16 13:59:36
2) 確認數據的有效性
通過上面方法我們可以確認drop 庫的操作是在 2020-11-17 08:26:36 ,那么我們需要這個時間點的前幾秒的快照應該就有被我們刪除的庫,通過 set @@tidb_snapshot="xx-xx-xx xx:xx:xx"; 設置當前session查詢該歷史快照數據。
3) 備份數據
dumpling -h 172.21.xx.xx -P 4000 -uroot -p xxx -t 32 -F 64MiB -B xxx_ods --snapshot "2020-11-17 08:26:35" -o ./da
4) 恢復數據
myloader -h 172.21.xx.xx -u root -P 4000 -t 32 -d ./da -p xxx
4.2 誤truncate table
1) 確認操作時間
通過 admin show ddl jobs 確認truncate的操作的開始時間。
2) 將數據寫入到臨時表
通過 set @@tidb_snapshot="xx-xx-xx xx:xx:xx"; 設置當前session查詢該歷史快照數據。
FLASHBACK TABLE xxx_comment TO xxx_comment_bak_20201117;
3) 恢復數據
如果線上的這張表沒有新數據寫入或者新數據可以不要,那么可以這樣操作:
drop table xxx_comment ;
rename table xxx_comment_bak_20201117 to xxx_comment;
如果線上的表還在繼續有新數據寫入并且不能破壞,那么可以把恢復出來的臨時表的數據在寫會到線上表。
insert into xxx_comment select * from xxx_comment_bak_20201117;
4.3 誤drop table
1) 確認操作時間
通過 admin show ddl jobs 確認truncate的操作的開始時間。
2) 恢復表
通過recover table恢復:
RECOVER TABLE xxx_comment ;
上面是通過表名恢復的,這種方式有兩個前提條件:
最近 DDL JOB 歷史中找到的第一個 DROP TABLE 操作,且 DROP TABLE 所刪除的表的名稱與 RECOVER TABLE 語句指定表名相同 ,如果這個表執行過多次刪除再建的操作,你想恢復到第一次的刪除操作之前的數據,可以通過 RECOVER TABLE BY JOB 827; 恢復,其中827是通過 admin show ddl jobs ; 確認的job id。

4.4 誤 delete、update表

1) 確認操作時間
對于DML的誤操作,如圖Tidb集群沒開啟全日志,基本沒辦法從集群層面確認誤操作時間了,需要從誤操作發起端介入排查了。
如果是管理員命令行誤操作,可以通過堡壘機的操作記錄去人;
如果是程序bug可以通過排查程序的日志確認執行誤操作的時間。
2) 確認數據的有效性
通過上面方法我們可以確認誤操作是在 2020-11-17 10:28:25 ,那么我們需要這個時間點的前幾秒的快照應該就有被我們刪除的庫,通過set @@tidb_snapshot=“xx-xx-xx xx:xx:xx”; 設置當前session查詢該歷史快照數據。
3) 備份數據
通過dumpling把上面確定的時間點的快照數據備份出來:
dumpling -h 172.21.xx.xx -P 4000 -uroot -p xxx -t 32 -F 
64MiB -B xxx_ods -T xxx_ods.xxx_comment --snapshot "2020-
11-17 09:55:00" -o ./da
4) 恢復數據
把上面備份的數據導入到一個臨時實例里面,確認下數據沒問題可以在臨時實例里面把這個表重命名,然后導入到線上庫,最后把數據合并到線上的表里面。

myloader -h 172.21.xx.xx -u root -P 4001 -t 32 -d ./da -p xxx


中控機異?;謴?/strong>

5.1 中控有備份

中控有備份,那么我們可以直接通過中控的備份進行恢復;
1) 中控備份
TiUP 相關的數據都存儲在用戶home目錄的 .tiup 目錄下,若要遷移中控機只需要拷貝 .tiup 目錄到對應目標機器即可。
中控備份:tar czvf tiup.tar.gz .tiup。為了避免中控機磁盤損壞或異常宕機等情況導致TiUP數據丟失,建議線上環境定時備份.tiup 目錄,寫一個簡單的腳本就可以搞定。
2) 恢復方法
  • i) 把 tiup.tar.gz 拷貝到目標機器home目錄。
  • ii) 在目標機器 home 目錄下執行 tar xzvf tiup.tar.gz。
  • iii) 添加 .tiup 目錄到 PATH 環境變量。
如使用 bash 并且是 tidb 用戶,在 ~/.bashrc 中添加 export PATH=/home/tidb/.tiup/bin:$PATH 后執行 source ~/.bashrc,根據使用的 shell 與用戶做相應調整。

5.2 中控沒有備份

針對中控沒有備份,那么其實恢復方案也相對比較簡單。
恢復方法:
  • i) 在新的中控機器上,重新部署tiup。
  • ii) 根據運行的集群組件,重新配置一個集群的拓撲文件。
  • iii) 執行deploy命令:tiup cluster deploy tidb-xxx ./topology.yaml。
  • iv) 執行完成之后,不需要start集群,因為集群本身是在運行的,執行display查看一下集群的節點狀態即可。

5.3 注意事項

  • ssh互信
    新的中控節點,必須要包括和各個節點網絡都是通的,并且ssh也是互通的。
  • 網絡互通

    無論是通過備份恢復還是重新編寫拓撲配置文件在新的節點恢復中控,如果恢復完成后,查看集群的節點狀態顯示down或N/A的狀態,請檢查新的中控節點和集群各節點之間的網絡是否是通的。


巡檢分析(Dashboard)

6.1 集群狀態

1) 實例
2) 主機
3) 磁盤
4) 存儲拓撲
5) 監控告警

6.2 Sql語句

  • 統計選項

6.3 慢查詢

6.4 流量可視化

6.5 集群診斷報告



本文作者:李仕豪(上海新炬中北團隊)

本文來源:“IT那活兒”公眾號

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/129138.html

相關文章

  • 詳解 | TiDB 2.0 GA is here!

    摘要:經過半年時間,個版本,今天版本正式發布。目前已經有大量的用戶在線上使用,這些用戶的數據量在不斷增加業務也在不斷演進。比如盡可能簡化部署升級擴容方式,盡可能容易的定位系統中出現的異常狀態。同時功能也更加豐富,支持自動部署組件支持啟用。 去年十月份的時候,我們發布了 TiDB 1.0 版本,為此我們日夜兼程奮斗了兩年半時間,我們認為 1.0 版本達到了可在生產環境中使用的程度。在接下來的六...

    FreeZinG 評論0 收藏0

發表評論

0條評論

IT那活兒

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<