mysqldump原理分析

2021-08-13 07:43:10 字數 3215 閱讀 6689

測試庫:mysqldump_test

命令:mysqldump -u root -p mysqldump_test > /user/admin/desktop/mysqldump_test.sql

準備工作:

1、建立乙個mysqldump_test的資料庫

create database `mysqldump_test` /*!40100 default character set utf8 */

2、建立乙個簡單的person表

create table `person` (

`id` int(11) not null auto_increment,

`name` varchar(32) default null,

`age` int(11) default null,

primary key (`id`)

) engine=innodb auto_increment=5 default charset=utf8;

3、隨便插入幾條資料

4、開啟general日誌

如果:show variables like 『%general_log%』;展示出來的general_log為off,設定乙個全域性開啟general日誌:set @@global.general_log = on;

日誌通過general_log_file對應的檔案進行檢視。

5、通過執行mysqldump -u root -p mysqldump_test > /user/admin/desktop/mysqldump_test.sql得到下面的日誌

完整日誌

171210 10:08:12         

8 connect     root@localhost on

8 query     /*!40100 set @@sql_mode='' */

8 query     /*!40103 set time_zone='+00:00' */

8 query     show variables like 'gtid\_mode'

8 query     select logfile_group_name, file_name, total_extents, initial_size, engine, extra from information_schema.files where file_type = 'undo log' and file_name is not null and logfile_group_name in (select distinct logfile_group_name from information_schema.files where file_type = 'datafile' and tablespace_name in (select distinct tablespace_name from information_schema.partitions where table_schema in ('mysqldump_test'))) group by logfile_group_name, file_name, engine order by logfile_group_name

8 query     select distinct tablespace_name, file_name, logfile_group_name, extent_size, initial_size, engine from information_schema.files where file_type = 'datafile' and tablespace_name in (select distinct tablespace_name from information_schema.partitions where table_schema in ('mysqldump_test')) order by tablespace_name, logfile_group_name

8 query     show variables like 'ndbinfo\_version'

8 init db     mysqldump_test

8 query     show tables

8 query     lock tables `person` read /*!32311 local */

8 query     show table status like 'person'

8 query     set sql_quote_show_create=1

8 query     set session character_set_results = 'binary'

8 query     show create table `person`

8 query     set session character_set_results = 'utf8'

8 query     show fields from `person`

8 query     select /*!40001 sql_no_cache */ * from `person`

8 query     set session character_set_results = 'binary'

8 query     use `mysqldump_test`

8 query     select @@collation_database

8 query     show triggers like 'person'

8 query     set session character_set_results = 'utf8'

8 query     unlock tables

8 quit

6、分析過程

(1)mysqldump通過輸入密碼鏈結資料庫

(2)檢視是否開啟gtid

(3)通過庫表information_schema.partitions檢視庫表分割槽情況

(4)進入需要進行備份的庫mysqldump_test

(5)檢視所有的表,並開始遍歷每乙個表

(6)對遍歷的每乙個表(如person),鎖當前表的讀表

(7)匯出person表的建立語句

(8)查出所有的person表資料,當前資料不從快取拿,也不放入快取

(9)檢視person表的觸發器(觸發器不在建表語句中)

(10)釋放表的讀鎖,完成當前表的遍歷,繼續下一張表,如果沒有下一張表,則完成mysqldump工作

人活著是為了體驗你從未體驗過的美好。 coding的意義在於使用那些沒有使用過的技術。

mysql dump備份 mysqldump備份

備份工具 1.mysqldump 資料量很大時不推薦使用 myisam 鎖表 innodb 行鎖 mysqldump help less 檢視mysql所有的語法 mysqldump uroot p wang usr back upsql wang.sql 整個庫備份 mysqldump uroot...

原理分析 煙氣分析儀工作原理

煙氣分析儀的工作原理常用兩種,一種是電化學工作原理,另一種是紅外工作原理。目前市場上的可攜式煙氣分析儀通常是這兩種原理相結合,電化學煙氣分析儀一般有德國菲索 德國mru德國德圖,國產的有天虹嶗應等,紅外煙氣分析儀廠家一般有德國mru,德國西門子等。以下是這兩種煙氣分析儀的工作原理介紹 電化學氣體感測...

fork原理分析

note4 首先必須有一點要清楚,函式的返回值是儲存在暫存器eax中的。其次,當fork返回時,新程序會返回0是因為在初始化任務結構時,將eax設定為0 在fork中,把子程序加入到可執行的佇列中,由程序排程程式在適當的時機排程執行。也就是從此時開始,當前程序 為兩個併發的程序。無論哪個程序被排程執...