阅读xtrabackup代码的一点笔记
xtrabackup binary最重要的两个过程是backup和prepare,对应的函数分别是xtrabackup_backup_func()和xtrabackup_prepare_func(),这里做一些阅读代码时的笔记。
xtrabackup backup的线程模型:
1. 一个log拷贝线程;
2. n个ibd文件拷贝线程;
3. 一个io监控线程;
4. 通过suspend_start/suspend_end文件来标注是否启动终止线程;
typedef struct {
datafiles_iter_t *it;
uint num;uint *count;
os_ib_mutex_t count_mutex;
os_thread_id_t id;
}data_thread_ctxt_t;
数据线程上下文切换工作目录;116 /** Set if InnoDB must operate in read-only mode. We don't do any
117 recovery and open all tables in RO mode instead of RW mode. We don't
118 sync the max trx id to disk either. */
xb_set_innodb_read_only() 将innodb设成只读模式
srv_backup_mode=TRUE; 将innodb设成backup模式;
设置innodb的一系列参数
innodb_init_param()
xb_normalize_init_values(void)
修改srv_unix_file_flush_method
根据bp大小,调整srv_max_n_threads参数
1017 /*********************************************************************//**
1018 Initializes the synchronization primitives, memory system, and the thread
1019 local storage. */
srv_general_init()
ut_crc32_init()
xb_filters_init()
2567 /************************************************************************
2568 Initializes the I/O and tablespace cache subsystems. */
xb_fil_io_init(void)
838 /******************************************************//**
839 Initializes the log. */
log_init(void)585 /*********************************************************************//**
586 Creates the lock system at database start. */
lock_sys_create()
open_or_create_log_file
创建xtrabackup_extra_lsndir/extrabackup_traget_dir
表空间memory cache
fil_system_t* f_system = fil_system;
recv_find_max_checkpoint(&max_cp_group, &max_cp_field)
log_group_read_checkpoint_info(max_cp_group, max_cp_field)
checkpoint_lsn_start/checkpoint_no_start
确认一致的checkpoint状态;
创建XB_LOG_FILENAME文件,写入文件头信息;
创建io_watching_thread;
从checkpoint位置开始copy log文件;
xtrabackup_copy_logfile(checkpoint_lsn_start, FALSE)
log_copying/log_copying_stop
创建日志copy线程
os_thread_create(log_copying_thread, NULL, &log_copying_thread_id);
2591 /****************************************************************************
2592 Populates the tablespace memory cache by scanning for and opening data files.
2593 @returns DB_SUCCESS or error code.*/
xb_load_tablespaces()
挂起,等待XB_FN_SUSPENDED_AT_START文件被删除
xtrabackup_suspend
xb_page_bitmap_init()
根据xtrabackup_parallel设置,创建data_copy_thread_func线程
等待所有data_copy_thread_func线程退出
挂起,等待XB_FN_SUSPENDED_AT_END文件被删除
xtrabackup_suspend
读取最新的checkpoint, 记录在metadata的to_lsn字段;
通过设置log_copying=FALSE && set log_copying_stop,停止log_copying_thread;
创建一个文件XB_FN_LOG_COPIED,通知外部脚本,log_copying_thread已经结束;
写metadata;prepare_func1. 切换到xtrabackup_real_target_dir
2. 读取XTRABACKUP_METADATA_FILENAME,获取原信息;
metadata_type
3. xtrabackup_init_temp_log()
4. innodb_init_param()
2670 /************************************************************************
2671 Initialize the tablespace memory cache and populate it by scanning for and
2672 opening data files.
2673 @returns DB_SUCCESS or error code.*/
xb_data_files_init()
应用增量到全量xtrabackup_apply_deltas()
重设innodb初始化参数
innodb_init_param()
innodb_init()遍历文件mtr_start -> mtr_commit
trx_sys_print_mysql_binlog_offset()
将binlog位置信息输出到 xtrabackup_binlog_pos_innodb文件中
xtrabackup_close_temp_log(TRUE)
输出记录metadata_log
backup$./xtrabackup_56 --defaults-file=/u01/my3928/my.cnf --backup --target_dir=/u01/xianlin.lh/backup_dir/
./xtrabackup_56 version 2.1.8 for MySQL server 5.6.15 Linux (x86_64) (revision id: undefined)
xtrabackup: uses posix_fadvise().
xtrabackup: cd to /u01/my3928/data
xtrabackup: using the following InnoDB configuration:
xtrabackup: innodb_data_home_dir = /u01/my3928/data
xtrabackup: innodb_data_file_path = ibdata1:4G;ibdata2:16M:autoextend
xtrabackup: innodb_log_group_home_dir = /u01/my3928/data
xtrabackup: innodb_log_files_in_group = 4
xtrabackup: innodb_log_file_size = 1073741824
2014-05-05 17:29:35 2ac06bc4a2c0 InnoDB: Using Linux native AIO
xtrabackup: using O_DIRECT
>> log scanned up to (1451746590)
[01] Copying /u01/my3928/data/ibdata1 to /u01/xianlin.lh/backup_dir/ibdata1
>> log scanned up to (1451746590)
>> log scanned up to (1451746590)
>> log scanned up to (1451746590)
>> log scanned up to (1451746590)
>> log scanned up to (1451746590)
>> log scanned up to (1451746590)
>> log scanned up to (1451746590)
>> log scanned up to (1451746590)
>> log scanned up to (1451746590)
>> log scanned up to (1451746590)
>> log scanned up to (1451746590)
>> log scanned up to (1451746590)
>> log scanned up to (1451746590)
>> log scanned up to (1451746590)
>> log scanned up to (1451746590)
>> log scanned up to (1451746590)
>> log scanned up to (1451746590)
>> log scanned up to (1451746590)
[01] ...done[01] Copying /u01/my3928/data/ibdata2 to /u01/xianlin.lh/backup_dir/ibdata2
[01] ...done[01] Copying ./test/t2.ibd to /u01/xianlin.lh/backup_dir/test/t2.ibd
[01] ...done[01] Copying ./test/t4.ibd to /u01/xianlin.lh/backup_dir/test/t4.ibd
[01] ...done[01] Copying ./test/t3.ibd to /u01/xianlin.lh/backup_dir/test/t3.ibd
[01] ...done[01] Copying ./test/sbtest1.ibd to /u01/xianlin.lh/backup_dir/test/sbtest1.ibd
>> log scanned up to (1451746590)
>> log scanned up to (1451746590)
[01] ...done[01] Copying ./test/t1.ibd to /u01/xianlin.lh/backup_dir/test/t1.ibd
[01] ...done[01] Copying ./mysql/innodb_index_stats.ibd to /u01/xianlin.lh/backup_dir/mysql/innodb_index_stats.ibd
[01] ...done[01] Copying ./mysql/slave_worker_info.ibd to /u01/xianlin.lh/backup_dir/mysql/slave_worker_info.ibd
[01] ...done[01] Copying ./mysql/innodb_table_stats.ibd to /u01/xianlin.lh/backup_dir/mysql/innodb_table_stats.ibd
[01] ...done[01] Copying ./mysql/slave_relay_log_info.ibd to /u01/xianlin.lh/backup_dir/mysql/slave_relay_log_info.ibd
[01] ...done[01] Copying ./mysql/slave_master_info.ibd to /u01/xianlin.lh/backup_dir/mysql/slave_master_info.ibd
[01] ...done>> log scanned up to (1451746590)
xtrabackup: The latest check point (for incremental): '1451746590'
xtrabackup: Stopping log copying thread.
.>> log scanned up to (1451746590)
xtrabackup: Transaction log of lsn (1451746590) to (1451746590) was copied.
创建备份的流程http://www.percona.com/doc/percona-xtrabackup/2.1/xtrabackup_bin/creating_a_backup.html
1 backup_type = full-backuped
2 from_lsn = 03 to_lsn = 1451746590
4 last_lsn = 1451746590
5 compact = 0prepare$./xtrabackup_56 --defaults-file=/u01/my3928/my.cnf --prepare --target-dir=/u01/xianlin.lh/backup_dir/
./xtrabackup_56 version 2.1.8 for MySQL server 5.6.15 Linux (x86_64) (revision id: undefined)
xtrabackup: cd to /u01/xianlin.lh/backup_dir/
xtrabackup: This target seems to be not prepared yet.
xtrabackup: xtrabackup_logfile detected: size=2097152, start_lsn=(1451746590)
xtrabackup: using the following InnoDB configuration for recovery:
xtrabackup: innodb_data_home_dir = ./
xtrabackup: innodb_data_file_path = ibdata1:4G;ibdata2:16M:autoextend
xtrabackup: innodb_log_group_home_dir = ./
xtrabackup: innodb_log_files_in_group = 1
xtrabackup: innodb_log_file_size = 2097152
2014-05-05 18:38:32 2b7f2f5202c0 InnoDB: Using Linux native AIO
xtrabackup: using the following InnoDB configuration for recovery:
xtrabackup: innodb_data_home_dir = ./
xtrabackup: innodb_data_file_path = ibdata1:4G;ibdata2:16M:autoextend
xtrabackup: innodb_log_group_home_dir = ./
xtrabackup: innodb_log_files_in_group = 1
xtrabackup: innodb_log_file_size = 2097152
2014-05-05 18:38:32 2b7f2f5202c0 InnoDB: Using Linux native AIO
xtrabackup: Starting InnoDB instance for recovery.
xtrabackup: Using 104857600 bytes for buffer pool (set by --use-memory parameter)
InnoDB: The InnoDB memory heap is disabled
InnoDB: Mutexes and rw_locks use GCC atomic builtins
InnoDB: Compressed tables use zlib 1.2.3
InnoDB: Using Linux native AIO
InnoDB: Using CPU crc32 instructions
InnoDB: Initializing buffer pool, size = 100.0M
InnoDB: Completed initialization of buffer pool
InnoDB: Highest supported file format is Barracuda.
InnoDB: The log sequence numbers 552524932 and 552524932 in ibdata files do not match the log sequence number 1451746590 in the ib_logfiles!
InnoDB: Database was not shutdown normally!
InnoDB: Starting crash recovery.
InnoDB: Reading tablespace information from the .ibd files...
InnoDB: Restoring possible half-written data pages
InnoDB: from the doublewrite buffer...
InnoDB: Last MySQL binlog file position 0 26767310, file name mysql-bin.000023
InnoDB: 128 rollback segment(s) are active.
InnoDB: Waiting for purge to start
2014-05-05 18:38:33 2b7f49056700 InnoDB: Warning: table 'test/sbtest1'
InnoDB: in InnoDB data dictionary has unknown flags 50.
InnoDB: 5.6.15 started; log sequence number 1451746590
[notice (again)]
If you use binary log and don't use any hack of group commit,
the binary log position seems to be:
InnoDB: Last MySQL binlog file position 0 26767310, file name mysql-bin.000023
xtrabackup: starting shutdown with innodb_fast_shutdown = 1
InnoDB: FTS optimize thread exiting.
InnoDB: Starting shutdown...
InnoDB: Shutdown completed; log sequence number 1451747281
prepare的流程:
http://www.percona.com/doc/percona-xtrabackup/2.1/xtrabackup_bin/preparing_the_backup.html
1 backup_type = full-prepared
2 from_lsn = 0
3 to_lsn = 1451746590
4 last_lsn = 1451746590
5 compact = 0

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

想像一下,一個人工智慧模型,不僅擁有超越傳統運算的能力,還能以更低的成本實現更有效率的效能。這不是科幻,DeepSeek-V2[1],全球最強開源MoE模型來了。 DeepSeek-V2是一個強大的專家混合(MoE)語言模型,具有訓練經濟、推理高效的特點。它由236B個參數組成,其中21B個參數用於啟動每個標記。與DeepSeek67B相比,DeepSeek-V2效能更強,同時節省了42.5%的訓練成本,減少了93.3%的KV緩存,最大生成吞吐量提高到5.76倍。 DeepSeek是一家探索通用人工智

AI,的確正在改變數學。最近,一直十分關注這個議題的陶哲軒,轉發了最近一期的《美國數學學會通報》(BulletinoftheAmericanMathematicalSociety)。圍繞著「機器會改變數學嗎?」這個話題,許多數學家發表了自己的觀點,全程火花四射,內容硬核,精彩紛呈。作者陣容強大,包括菲爾茲獎得主AkshayVenkatesh、華裔數學家鄭樂雋、紐大電腦科學家ErnestDavis等多位業界知名學者。 AI的世界已經發生了天翻地覆的變化,要知道,其中許多文章是在一年前提交的,而在這一

谷歌力推的JAX在最近的基準測試中表現已經超過Pytorch和TensorFlow,7項指標排名第一。而且測試並不是JAX性能表現最好的TPU上完成的。雖然現在在開發者中,Pytorch依然比Tensorflow更受歡迎。但未來,也許有更多的大型模型會基於JAX平台進行訓練和運行。模型最近,Keras團隊為三個後端(TensorFlow、JAX、PyTorch)與原生PyTorch實作以及搭配TensorFlow的Keras2進行了基準測試。首先,他們為生成式和非生成式人工智慧任務選擇了一組主流

波士頓動力Atlas,正式進入電動機器人時代!昨天,液壓Atlas剛「含淚」退出歷史舞台,今天波士頓動力就宣布:電動Atlas上崗。看來,在商用人形機器人領域,波士頓動力是下定決心要跟特斯拉硬剛一把了。新影片放出後,短短十幾小時內,就已經有一百多萬觀看。舊人離去,新角色登場,這是歷史的必然。毫無疑問,今年是人形機器人的爆發年。網友銳評:機器人的進步,讓今年看起來像人類的開幕式動作、自由度遠超人類,但這真不是恐怖片?影片一開始,Atlas平靜地躺在地上,看起來應該是仰面朝天。接下來,讓人驚掉下巴

本月初,來自MIT等機構的研究者提出了一種非常有潛力的MLP替代方法—KAN。 KAN在準確性和可解釋性方面表現優於MLP。而且它能以非常少的參數量勝過以更大參數量運行的MLP。例如,作者表示,他們用KAN以更小的網路和更高的自動化程度重現了DeepMind的結果。具體來說,DeepMind的MLP有大約300,000個參數,而KAN只有約200個參數。 KAN與MLP一樣具有強大的數學基礎,MLP基於通用逼近定理,而KAN基於Kolmogorov-Arnold表示定理。如下圖所示,KAN在邊上具

特斯拉機器人Optimus最新影片出爐,已經可以在工廠裡打工了。正常速度下,它分揀電池(特斯拉的4680電池)是這樣的:官方還放出了20倍速下的樣子——在小小的「工位」上,揀啊揀啊揀:這次放出的影片亮點之一在於Optimus在廠子裡完成這項工作,是完全自主的,全程沒有人為的干預。而且在Optimus的視角之下,它還可以把放歪了的電池重新撿起來放置,主打一個自動糾錯:對於Optimus的手,英偉達科學家JimFan給出了高度的評價:Optimus的手是全球五指機器人裡最靈巧的之一。它的手不僅有觸覺

目標偵測在自動駕駛系統當中是一個比較成熟的問題,其中行人偵測是最早得以部署演算法之一。在多數論文當中已經進行了非常全面的研究。然而,利用魚眼相機進行環視的距離感知相對來說研究較少。由於徑向畸變大,標準的邊界框表示在魚眼相機當中很難實施。為了緩解上述描述,我們探索了擴展邊界框、橢圓、通用多邊形設計為極座標/角度表示,並定義一個實例分割mIOU度量來分析這些表示。所提出的具有多邊形形狀的模型fisheyeDetNet優於其他模型,並同時在用於自動駕駛的Valeo魚眼相機資料集上實現了49.5%的mAP

寫在前面項目連結:https://nianticlabs.github.io/mickey/給定兩張圖片,可以透過建立圖片之間的對應關係來估計它們之間的相機姿態。通常,這些對應關係是二維到二維的,而我們估計的姿態在尺度上是不確定的。一些應用,例如隨時隨地實現即時增強現實,需要尺度度量的姿態估計,因此它們依賴外部的深度估計器來恢復尺度。本文提出了MicKey,這是一個關鍵點匹配流程,能夠夠預測三維相機空間中的度量對應關係。透過學習跨影像的三維座標匹配,我們能夠在沒有深度測試的情況下推斷度量相對
