這篇文章主要介紹“分析MySQL系統(tǒng)庫(kù)日志信息記錄表”,在日常操作中,相信很多人在分析mysql系統(tǒng)庫(kù)日志信息記錄表問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”分析mysql系統(tǒng)庫(kù)日志信息記錄表”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!
創(chuàng)新互聯(lián)是一家專(zhuān)注網(wǎng)站建設(shè)、網(wǎng)絡(luò)營(yíng)銷(xiāo)策劃、微信小程序定制開(kāi)發(fā)、電子商務(wù)建設(shè)、網(wǎng)絡(luò)推廣、移動(dòng)互聯(lián)開(kāi)發(fā)、研究、服務(wù)為一體的技術(shù)型公司。公司成立10年以來(lái),已經(jīng)為上千工商代辦各業(yè)的企業(yè)公司提供互聯(lián)網(wǎng)服務(wù)。現(xiàn)在,服務(wù)的上千客戶與我們一路同行,見(jiàn)證我們的成長(zhǎng);未來(lái),我們一起分享成功的喜悅。
一、日志信息記錄表
默認(rèn)情況下,binary log根據(jù)max_binlog_size參數(shù)設(shè)置的大小自動(dòng)滾動(dòng)、relay log根據(jù)max_relay_log_size或者max_binlog_size自動(dòng)滾動(dòng)(如果max_relay_log_size沒(méi)設(shè)置就按照max_binlog_size大小滾動(dòng)),其他的日志類(lèi)型不會(huì)滾動(dòng),總是使用同一個(gè)文件,所以其他日志類(lèi)型增長(zhǎng)過(guò)大之后,需要自行做切割。
一般使用mv file file.bak;然后執(zhí)行刷新命令,刷新命令可以登錄實(shí)例使用flush logs命令刷新重新產(chǎn)生新的日志文件,但是該命令是刷新所有的日志類(lèi)型,要針對(duì)具體的日志類(lèi)型,可以使用:flush binary logs;刷新二進(jìn)制日志、flush error logs;刷新錯(cuò)誤日志、flush general logs;刷新普通查詢?nèi)罩尽lush slow logs;刷新慢查詢?nèi)罩尽lush relay logs;刷新中繼日志、flush engine logs;刷新存儲(chǔ)引擎相關(guān)的任何可刷新的日志。
也可以使用Server的flush tables;語(yǔ)句或者flush table with read lock;語(yǔ)句。
要禁用日志記錄表以便進(jìn)行相應(yīng)的DDL語(yǔ)句操作,可以使用以下步驟(以慢查詢表為例進(jìn)行說(shuō)明,slow_log和general_log表操作方式類(lèi)似)。
SET @old_log_state = @@ global.general_log; SET GLOBAL general_log ='OFF'; ALTER TABLE mysql.general_log ENGINE = MyISAM; SET GLOBAL general_log = @old_log_state;
可以使用TRUNCATE TABLE來(lái)清空日志記錄。
可以使用RENAME TABLE來(lái)實(shí)現(xiàn)日志表的歸檔,新舊表做一個(gè)原子的名稱互換操作,如下:
use mysql; DROP TABLE IF EXISTS general_log2; CREATE TABLE general_log2 LIKE general_log; RENAME TABLE general_log TO general_log_backup,general_log2 TO general_log;
注意事項(xiàng)
可以使用CHECK TABLE語(yǔ)句。
不能使用LOCK TABLE語(yǔ)句。
不能使用INSERT,DELETE和UPDATE語(yǔ)句,日志表的記錄變更由Server內(nèi)部維護(hù),不能手動(dòng)操作。
FLUSH TABLES WITH READ LOCK和read_only系統(tǒng)變量的設(shè)置對(duì)日志表沒(méi)有影響。Server內(nèi)部始終可以寫(xiě)日志表。
日志表的數(shù)據(jù)變更操作不會(huì)記錄到binlog,因此不會(huì)被復(fù)制到從庫(kù)。
可以使用FLUSH TABLES或FLUSH LOGS語(yǔ)句來(lái)刷新日志表或日志文件。
日志表不支持分區(qū)表。
mysqldump轉(zhuǎn)儲(chǔ)包含了重新創(chuàng)建這些表的語(yǔ)句,以便在重新加載轉(zhuǎn)儲(chǔ)文件后恢復(fù)日志表結(jié)構(gòu),但是日志表中的記錄內(nèi)容不會(huì)被轉(zhuǎn)儲(chǔ)。
PS:MySQL的查詢?nèi)罩尽㈠e(cuò)誤日志等是使用明文記錄的,所以,這些日志中有可能會(huì)記錄用戶的明文密碼信息,可以使用rewrite插件來(lái)使用原始格式記錄,詳見(jiàn)鏈接:
https://dev.mysql.com/doc/refman/5.7/en/plugin-types.html#query-rewrite-plugin-type
https://dev.mysql.com/doc/refman/5.7/en/rewriter-query-rewrite-plugin.html
1.2. 日志表詳解
1.2.1. general_log
下面是該表中存儲(chǔ)的信息內(nèi)容。
root@localhost : (none) 07:25:50> set global log_output='TABLE'; Query OK, 0 rows affected (0.00 sec) root@localhost : (none) 07:26:20> set global general_log=1; Query OK, 0 rows affected (0.01 sec) root@localhost : (none) 07:26:32> select * from mysql.general_log; +----------------------------+---------------------------+-----------+-----------+--------------+---------------------------------+ | event_time | user_host | thread_id | server_id | command_type | argument | +----------------------------+---------------------------+-----------+-----------+--------------+---------------------------------+ | 2018-06-19 19:26:32.891371 | root[root] @ localhost [] | 3 | 3306102 | Query | show databases | | 2018-06-19 19:26:42.012064 | root[root] @ localhost [] | 3 | 3306102 | Query | select * from mysql.general_log | +----------------------------+---------------------------+-----------+-----------+--------------+---------------------------------+ 2 rows in set (0.00 sec) root@localhost : (none) 07:26:42> select connection_id(); +-----------------+ | connection_id() | +-----------------+ | 3 | +-----------------+ 1 row in set (0.00 sec)
表字段含義。
event_time:查詢?nèi)罩居涗浀奖淼哪且豢痰膌og_timestamps系統(tǒng)變量值,用于標(biāo)記查詢?nèi)罩居涗浐螘r(shí)入庫(kù)。
user_host:表示該查詢?nèi)罩居涗浀膩?lái)源,其中有用戶名和主機(jī)名信息。
thread_id:表示該查詢?nèi)罩居涗泩?zhí)行時(shí)的process_id。
server_id:表示執(zhí)行該查詢的數(shù)據(jù)庫(kù)實(shí)例ID。
command_type:表示該查詢的command類(lèi)型,通常都為query。
argument:表示執(zhí)行查詢的SQL語(yǔ)句文本。
在主從復(fù)制架構(gòu)中。
主庫(kù)上在使用基于語(yǔ)句的日志格式時(shí),從庫(kù)在在重放這些語(yǔ)句之后,會(huì)把這些語(yǔ)句記錄自己的查詢?nèi)罩局校ㄐ枰獜膸?kù)啟用了查詢?nèi)罩居涗浌δ埽褂谜Z(yǔ)句格式記錄的binlog在使用mysqlbinlog命令解析之后導(dǎo)入數(shù)據(jù)庫(kù)中時(shí),如果實(shí)例開(kāi)啟了查詢?nèi)罩居涗浌δ埽瑒t這些解析語(yǔ)句也會(huì)被記錄到查詢?nèi)罩局小?/p>
主庫(kù)上使用基于row日志格式時(shí),從庫(kù)重放這些數(shù)據(jù)變更之后,這些語(yǔ)句不會(huì)被計(jì)入從庫(kù)的查詢?nèi)罩局小?/p>
在主庫(kù)上使用基于mixed日志格式時(shí),如果主庫(kù)是以語(yǔ)句格式記錄的,則從庫(kù)重放這些數(shù)據(jù)變更之后會(huì)把語(yǔ)句記錄到自己的查詢?nèi)罩局校ㄐ枰獜膸?kù)啟用了查詢?nèi)罩居涗浌δ埽绻鲙?kù)在記錄binlog時(shí)被轉(zhuǎn)換為了row格式,則也跟row格式復(fù)制一樣,從庫(kù)重放這些數(shù)據(jù)變更之后不會(huì)把這些語(yǔ)句記錄到自己的查詢?nèi)罩局小?/p>
如果啟用了查詢?nèi)罩荆瑒tServer重新啟動(dòng)的時(shí)候會(huì)重新打開(kāi)查詢?nèi)罩疚募绻樵內(nèi)罩敬嬖冢瑒t直接重新打開(kāi),如果查詢?nèi)罩静淮嬖冢瑒t重新創(chuàng)建,如果需要再Server運(yùn)行時(shí)動(dòng)態(tài)歸檔查詢?nèi)罩荆瑒t可以按照如下命令操作(linux或者unix平臺(tái))。
shell> mv host_name.log host_name-old.log shell> mysqladmin flush-logs shell> mv host_name-old.log backup-directory # 在Windows上,請(qǐng)直接使用重命名,而不是mv命令
也可以在Server運(yùn)行時(shí)通過(guò)語(yǔ)句先關(guān)閉查詢?nèi)罩竟δ埽缓笫褂猛獠棵顏?lái)歸檔,然后再重新啟用查詢?nèi)罩荆@樣就不需要使用flush-logs命令來(lái)刷新日志文件了,此方法適用于任何平臺(tái),命令如下:
SET GLOBAL general_log ='OFF'; # 在禁用日志的情況下,從外部重命名日志文件;例如,從命令行。然后再次啟用日志:SET GLOBAL general_log ='ON';# 此方法適用于任何平臺(tái),不需要重新啟動(dòng)服務(wù)器。
默認(rèn)情況下,在Server中執(zhí)行的語(yǔ)句如果帶了用戶密碼,會(huì)被Server重寫(xiě)該語(yǔ)句之后再寫(xiě)入到查詢?nèi)罩局校绻枰涗浢魑拿艽a,則需要使用--low-raw選項(xiàng)啟動(dòng)Server(使用該選項(xiàng)會(huì)繞過(guò)密碼重寫(xiě)功能),通常不建議記錄密碼明文信息到查詢?nèi)罩局校驗(yàn)椴话踩绻斜匾孕信袛啵ɡ纾盒枰樵冊(cè)嫉恼Z(yǔ)句信息來(lái)排查問(wèn)題時(shí))。
如果帶密碼的語(yǔ)句中,指定了密碼是一個(gè)hash值時(shí),則密碼字符串不會(huì)被重寫(xiě),例如:CREATE USER 'user1'@'localhost' IDENTIFIED BY PASSWORD 'not-so-secret';就會(huì)被原本原因地記錄下來(lái),但是如果去掉PASSWORD關(guān)鍵字CREATE USER 'user1'@'localhost' IDENTIFIED BY 'not-so-secret';,則在查詢?nèi)罩局芯蜁?huì)被重寫(xiě)為:CREATE USER 'user1'@'localhost' IDENTIFIED WITH 'mysql_native_password' AS ''。
查詢?nèi)罩颈碇械臅r(shí)間戳信息來(lái)源于系統(tǒng)變量log_timestamps(包括慢查詢?nèi)罩疚募湾e(cuò)誤日志文件中的時(shí)間戳都來(lái)自此系統(tǒng)變量的值),該時(shí)間戳值在查詢時(shí)可以使用CONVERT_TZ()函數(shù)或通過(guò)設(shè)置會(huì)話將從這些表中的時(shí)間戳信息從本地系統(tǒng)時(shí)區(qū)轉(zhuǎn)換為任何所需時(shí)區(qū)(修改會(huì)話級(jí)別的time_zone變量值)。
1.2.2. slow_log
下面是該表中存儲(chǔ)的信息內(nèi)容。
root@localhost : test 08:46:04> set global long_query_time=0; Query OK, 0 rows affected (0.01 sec) root@localhost : test 08:55:14> set global slow_query_log=1; Query OK, 0 rows affected (0.01 sec) # 斷開(kāi)會(huì)話重新連接 root@localhost : (none) 08:56:12> use test Database changed root@localhost : test 08:56:13> show tables; +----------------+ | Tables_in_test | +----------------+ | customer | | product | | shares | | test | | transreq | +----------------+ 5 rows in set (0.01 sec) root@localhost : test 08:56:16> select * from test; +---+---+------+------+------+------+ | a | b | c | d | e | f | +---+---+------+------+------+------+ | 1 | 1 | 1 | 1 | 1 | 1 | | 2 | 2 | 2 | 2 | 2 | 2 | | 3 | 3 | 3 | 3 | 3 | 3 | | 4 | 4 | 4 | 4 | 4 | 4 | | 5 | 5 | 4 | 4 | 5 | 5 | +---+---+------+------+------+------+ 5 rows in set (0.01 sec) root@localhost : test 08:56:18> select * from mysql.slow_log; +----------------------------+---------------------------+-----------------+-----------------+-----------+---------------+------+----------------+-----------+-----------+----------------------------------+-----------+ | start_time | user_host | query_time | lock_time | rows_sent | rows_examined | db | last_insert_id | insert_id | server_id | sql_text | thread_id | +----------------------------+---------------------------+-----------------+-----------------+-----------+---------------+------+----------------+-----------+-----------+----------------------------------+-----------+ | 2018-06-19 20:56:12.254716 | root[root] @ localhost [] | 00:00:00.000286 | 00:00:00.000000 | 1 | 0 | | 0 | 0 | 3306102 | select @@version_comment limit 1 | 4 | | 2018-06-19 20:56:12.258551 | root[root] @ localhost [] | 00:00:00.000153 | 00:00:00.000000 | 1 | 0 | | 0 | 0 | 3306102 | select USER() | 4 | | 2018-06-19 20:56:13.975382 | root[root] @ localhost [] | 00:00:00.000247 | 00:00:00.000000 | 1 | 0 | | 0 | 0 | 3306102 | SELECT DATABASE() | 4 | | 2018-06-19 20:56:13.975627 | root[root] @ localhost [] | 00:00:00.000095 | 00:00:00.000000 | 1 | 0 | test | 0 | 0 | 3306102 | Init DB | 4 | | 2018-06-19 20:56:16.277207 | root[root] @ localhost [] | 00:00:00.000490 | 00:00:00.000264 | 5 | 5 | test | 0 | 0 | 3306102 | show tables | 4 | | 2018-06-19 20:56:18.936831 | root[root] @ localhost [] | 00:00:00.000694 | 00:00:00.000400 | 5 | 5 | test | 0 | 0 | 3306102 | select * from test | 4 | +----------------------------+---------------------------+-----------------+-----------------+-----------+---------------+------+----------------+-----------+-----------+----------------------------------+-----------+ 6 rows in set (0.00 sec)
表字段含義。
start_time:慢查詢?nèi)罩居涗浀奖頃r(shí)的log_timestamps系統(tǒng)變量值。
user_host:帶用戶名和主機(jī)名(IP)格式的值,用于標(biāo)記訪問(wèn)來(lái)源。
query_time:慢查詢語(yǔ)句總的執(zhí)行時(shí)間。
lock_time:慢查詢語(yǔ)句持有鎖的時(shí)間。
rows_sent:慢查詢語(yǔ)句最終返回給客戶端的數(shù)據(jù)記錄數(shù)。
rows_examined:慢查詢語(yǔ)句在存儲(chǔ)引擎中的檢查記錄數(shù)。
db:慢查詢語(yǔ)句執(zhí)行時(shí)的默認(rèn)庫(kù)名。
last_insert_id:通常為0。
insert_id:通常為0。
server_id:產(chǎn)生慢查詢語(yǔ)句的server id。
sql_text:慢查詢?nèi)罩镜恼Z(yǔ)句文本。
thread_id:產(chǎn)生慢查詢?nèi)罩镜木€程process_id。
慢查詢?nèi)罩景藞?zhí)行時(shí)間超過(guò)long_query_time系統(tǒng)變量設(shè)置的秒數(shù)的SQL語(yǔ)句,并且包含了需要檢查行數(shù)超過(guò)min_examined_row_limit系統(tǒng)變量設(shè)置的值的SQL語(yǔ)句(默認(rèn)情況下該變量為0,表示不限制檢查行數(shù))。long_query_time的最小值和默認(rèn)值分別為0和10(單位秒)。該值可以指定為微秒(使用小數(shù)),但微秒單位只對(duì)記錄到文件有效。對(duì)于記錄到表中的慢查詢語(yǔ)句,不支持微秒,微秒部分被忽略。
默認(rèn)情況下,慢查詢?nèi)罩静粫?huì)記錄管理語(yǔ)句,也不會(huì)記錄未使用索引的語(yǔ)句,但可以使用log_slow_admin_statements和log_queries_not_using_indexes系統(tǒng)變量更改默認(rèn)行為,使MySQL Server把管理語(yǔ)句和未使用索引的語(yǔ)句也一并計(jì)入慢查詢?nèi)罩尽?/p>
慢查詢?nèi)罩局姓Z(yǔ)句獲取初始鎖的時(shí)間不計(jì)入執(zhí)行時(shí)間,包含時(shí)間范圍為:獲取鎖之后,并在語(yǔ)句執(zhí)行完成之后,將鎖釋放之前。然后將慢查詢語(yǔ)句寫(xiě)入慢查詢?nèi)罩局小K裕诼樵內(nèi)罩局杏涗浀捻樞蚩赡芘cMySQL Server接收到的語(yǔ)句順序(執(zhí)行順序)并不相同,因?yàn)榭赡苡械南葓?zhí)行的語(yǔ)句最后才釋放完所有的鎖,有的后執(zhí)行的語(yǔ)句先釋放完所有的鎖。
默認(rèn)情況下,慢查詢?nèi)罩静粏⒂谩R獑⒂每梢允褂?-slow_query_log =1進(jìn)行設(shè)置,要指定慢查詢?nèi)罩疚募Q,可以使用--slow_query_log_file = file_name進(jìn)行設(shè)置,要指定慢查詢?nèi)罩据敵瞿繕?biāo),可以使用--log-output=FILE|TABLE|NONE 進(jìn)行設(shè)置。
如果啟用了慢查詢?nèi)罩居涗浌δ埽俏粗付Q,則默認(rèn)在datadir下命名為host_name-slow.log,如果使用--log-output=TABLE 設(shè)置了報(bào)錯(cuò)在表中,則slow_query_log_file = file_name 設(shè)置的路徑無(wú)效。
要?jiǎng)討B(tài)修改慢查詢?nèi)罩疚募Q,可以使用slow_query_log=0先關(guān)閉慢查詢?nèi)罩疚募缓笫褂胹low_query_log_file=new_file_name指定新的慢查詢?nèi)罩疚募缓笫褂胹low_query_log=1重新啟用慢查詢?nèi)罩救罩疚募?/p>
如果mysqld在啟動(dòng)是使用了--log-short-format選項(xiàng),則MySQL Server會(huì)將較少的慢查詢信息寫(xiě)入慢查詢?nèi)罩局小?/p>
如果使用了log_slow_admin_statements=1 設(shè)置,則MySQL Server會(huì)在慢查詢?nèi)罩局杏涗浫缦鹿芾碚Z(yǔ)句:
ALTER TABLE,ANALYZE TABLE,CHECK TABLE,CREATE INDEX,DROP INDEX,OPTIMIZE TABLE和REPAIR TABLE
如果使用了log_queries_not_using_indexes=1 設(shè)置,則MySQL Server會(huì)把任何不使用索引的查詢語(yǔ)句記錄到慢查詢?nèi)罩局小?/p>
當(dāng)記錄這些查詢語(yǔ)句時(shí),慢查詢?nèi)罩究赡軙?huì)迅速增長(zhǎng)。此時(shí)可以通過(guò)設(shè)置log_throttle_queries_not_using_indexes系統(tǒng)變量來(lái)限制這些未使用索引的語(yǔ)句計(jì)入慢查詢?nèi)罩镜乃俾剩ㄗ⒁猓涸撟兞肯拗频氖?0秒內(nèi)的未使用索引的語(yǔ)句數(shù)量,不是限制時(shí)間)。默認(rèn)情況下,這個(gè)變量是0,表示沒(méi)有速率限制。當(dāng)啟用限制時(shí),第一個(gè)不使用索引的查詢執(zhí)行之后,將打開(kāi)一個(gè)60秒的時(shí)間窗口,在該窗口內(nèi),將禁止其他未使用索引的查詢記錄到慢查詢?nèi)罩局校却龝r(shí)間窗口結(jié)束之后,Server記錄一個(gè)摘要信息,表示有多少次以及在這些執(zhí)行次數(shù)總的花費(fèi)時(shí)間。然后進(jìn)入下一個(gè)60秒的窗口。
MySQL Server按照以下順序來(lái)判斷語(yǔ)句是否需要計(jì)入慢查詢:
判斷參數(shù) log_slow_admin_statements是否啟用,如果啟用,則判斷語(yǔ)句是否是管理語(yǔ)句,如果是 則計(jì)入慢查詢,不是則進(jìn)入下一輪判斷。如果參數(shù)未啟用,則進(jìn)入下一步判斷。
判斷查詢語(yǔ)句執(zhí)行時(shí)間是否超過(guò)long_query_time秒,如果超過(guò)則計(jì)入慢查詢,如果未超過(guò),則判斷l(xiāng)og_queries_not_using_indexes 參數(shù)是否啟用,如果啟用該參數(shù)且該語(yǔ)句未使用索引,則計(jì)入慢查詢,否則進(jìn)入下一步判斷。
如果min_examined_row_limit變量設(shè)置非零值,則判斷語(yǔ)句的檢查行數(shù)是否超過(guò)該變量設(shè)置的值,如果超過(guò)則計(jì)入慢查詢,如果未超過(guò)則不記錄慢查詢。
慢查詢?nèi)罩居涗浀臅r(shí)間戳由log_timestamps系統(tǒng)變量控制。
默認(rèn)情況下,復(fù)制架構(gòu)中的從庫(kù)不會(huì)將重放binlog產(chǎn)生的慢查詢寫(xiě)入自己的慢速查詢?nèi)罩局校绻枰涗洀膸?kù)重放binlog的慢查詢語(yǔ)句計(jì)入慢查詢?nèi)罩荆枰獑⒂米兞縧og_slow_slave_statements=1。
二、混雜表
由于本系列不介紹企業(yè)版認(rèn)證插件的audit_log_filter, audit_log_user表、防火墻插件的firewall_users, firewall_whitelis表,所以只剩下一個(gè)servers混雜表的篇幅不足夠另起一期,所有我們強(qiáng)塞到本期里,主要是federated引擎使用的信息,如無(wú)興趣可直接跳過(guò)本期后續(xù)內(nèi)容。
2.1. servers
該表提供查詢連接組合信息(遠(yuǎn)程實(shí)例的IP、端口、帳號(hào)、密碼、數(shù)據(jù)庫(kù)名稱等信息,詳見(jiàn)后續(xù)示例),這些連接組合信息通常用于federated引擎(當(dāng)然也可以作為在數(shù)據(jù)庫(kù)中保存連接組合的一種方式,維護(hù)也較為方便),該表中的信息需要使用create server方式創(chuàng)建。
在介紹別字段含義之前,先看看dederated引擎的兩種創(chuàng)建方式。
# 使用create server方式創(chuàng)建的連接組合 Syntax: CREATE SERVER server_name FOREIGN DATA WRAPPER wrapper_name OPTIONS (option [, option] ...) option: { HOST character-literal | DATABASE character-literal | USER character-literal | PASSWORD character-literal | SOCKET character-literal | OWNER character-literal | PORT numeric-literal } # 直接使用CONNECTION選項(xiàng)指定完整的連接組合 CONNECTION=scheme://user_name[:password]@host_name[:port_num]/db_name/tbl_name
下面是該表中存儲(chǔ)的信息內(nèi)容。
root@localhost Tue Jun 5 01:12:05 2018 01:12:05 [(none)]>CREATE SERVER fedlink_ip -> FOREIGN DATA WRAPPER mysql -> OPTIONS (USER 'test',PASSWORD 'test', HOST '127.0.0.1', PORT 3306, DATABASE 'test_table',Owner 'test_table1'); Query OK, 1 row affected (0.00 sec) root@localhost Tue Jun 5 01:12:10 2018 01:12:10 [(none)]>CREATE SERVER fedlink_socket -> FOREIGN DATA WRAPPER mysql -> OPTIONS (USER 'test',PASSWORD 'test', SOCKET '/data/mysql/mysql3306/data/mysql.sock', PORT 3306, DATABASE 'test_table',Owner 'test_table2'); Query OK, 1 row affected (0.00 sec) root@localhost Tue Jun 5 01:12:10 2018 01:12:10 [(none)]>CREATE SERVER fedlink_socket_ip -> FOREIGN DATA WRAPPER mysql -> OPTIONS (USER 'test',PASSWORD 'test', HOST '127.0.0.1',SOCKET '/data/mysql/mysql3306/data/mysql.sock', PORT 3306, DATABASE 'test_table',Owner 'test_table3'); Query OK, 1 row affected (0.00 sec) root@localhost Tue Jun 5 01:12:10 2018 01:12:10 [(none)]>select * from mysql.servers; +-------------------+-----------+------------+----------+----------+------+---------------------------------------+---------+-------------+ | Server_name | Host | Db | Username | Password | Port | Socket | Wrapper | Owner | +-------------------+-----------+------------+----------+----------+------+---------------------------------------+---------+-------------+ | fedlink_socket_ip | 127.0.0.1 | test_table | test | test | 3306 | /data/mysql/mysql3306/data/mysql.sock | mysql | test_table3 | | fedlink_socket | | test_table | test | test | 3306 | /data/mysql/mysql3306/data/mysql.sock | mysql | test_table2 | | fedlink_ip | 127.0.0.1 | test_table | test | test | 3306 | | mysql | test_table1 | +-------------------+-----------+------------+----------+----------+------+---------------------------------------+---------+-------------+ 3 rows in set (0.00 sec) # 如果要?jiǎng)h除連接組合記錄,可以使用如下語(yǔ)句 root@localhost Tue Jun 5 01:10:41 2018 01:10:41 [(none)]>drop SERVER fedlink; Query OK, 1 row affected (0.00 sec) root@localhost Tue Jun 5 01:11:30 2018 01:11:30 [(none)]>drop SERVER fedlink_socket ; Query OK, 1 row affected (0.00 sec) root@localhost Tue Jun 5 01:11:55 2018 01:11:55 [(none)]>drop SERVER fedlink_socket_ip; Query OK, 1 row affected (0.00 sec)
federated引擎的兩種使用方式讀寫(xiě)遠(yuǎn)程實(shí)例數(shù)據(jù)示例。
# 創(chuàng)建遠(yuǎn)程實(shí)例用戶 root@localhost Tue Jun 5 00:23:45 2018 00:23:45 [(none)]>grant all on *.* to test@'%' identified by 'test'; Query OK, 0 rows affected (0.00 sec) # 創(chuàng)建用于存放遠(yuǎn)程實(shí)例表的庫(kù) root@localhost Tue Jun 5 00:24:06 2018 00:24:06 [(none)]>create database test_table; Query OK, 1 row affected (0.00 sec) root@localhost Tue Jun 5 00:30:50 2018 00:30:50 [(none)]>use test_table Database changed # 創(chuàng)建遠(yuǎn)程實(shí)例表test_table1和test_table2 root@localhost Tue Jun 5 00:31:03 2018 00:31:03 [test_table]>CREATE TABLE test_table1 ( -> id INT(20) NOT NULL AUTO_INCREMENT, -> name VARCHAR(32) NOT NULL DEFAULT '', -> other INT(20) NOT NULL DEFAULT '0', -> PRIMARY KEY (id), -> INDEX name (name), -> INDEX other_key (other) -> ); Query OK, 0 rows affected (0.06 sec) root@localhost Tue Jun 5 00:31:09 2018 00:31:09 [test_table]>CREATE TABLE test_table2 ( -> id INT(20) NOT NULL AUTO_INCREMENT, -> name VARCHAR(32) NOT NULL DEFAULT '', -> other INT(20) NOT NULL DEFAULT '0', -> PRIMARY KEY (id), -> INDEX name (name), -> INDEX other_key (other) -> ); Query OK, 0 rows affected (0.00 sec) # 創(chuàng)建存放federated引擎表的庫(kù) root@localhost Tue Jun 5 00:31:16 2018 00:31:16 [test_table]>create database federated; Query OK, 1 row affected (0.00 sec) root@localhost Tue Jun 5 00:31:22 2018 00:31:22 [test_table]>use federated Database changed # 使用create server方式創(chuàng)建一個(gè)連接字符串組合,該記錄會(huì)保存到mysql.servers表中 root@localhost Tue Jun 5 00:31:25 2018 00:31:25 [federated]>CREATE SERVER fedlink -> FOREIGN DATA WRAPPER mysql -> OPTIONS (USER 'test',PASSWORD 'test', HOST '127.0.0.1', PORT 3306, DATABASE 'test_table'); Query OK, 1 row affected (0.03 sec) # 查看mysql.servers表中的記錄 root@localhost Tue Jun 5 00:31:37 2018 00:31:37 [federated]>select * from mysql.servers; +-------------+-----------+------------+----------+----------+------+--------+---------+-------+ | Server_name | Host | Db | Username | Password | Port | Socket | Wrapper | Owner | +-------------+-----------+------------+----------+----------+------+--------+---------+-------+ | fedlink | 127.0.0.1 | test_table | test | test | 3306 | | mysql | | +-------------+-----------+------------+----------+----------+------+--------+---------+-------+ 1 row in set (0.00 sec) # 使用create server連接字符串組合方式,創(chuàng)建federated引擎表 root@localhost Tue Jun 5 00:32:12 2018 00:32:12 [federated]>CREATE TABLE federated1 ( -> id INT(20) NOT NULL AUTO_INCREMENT, -> name VARCHAR(32) NOT NULL DEFAULT '', -> other INT(20) NOT NULL DEFAULT '0', -> PRIMARY KEY (id), -> INDEX name (name), -> INDEX other_key (other) -> ) -> ENGINE=FEDERATED -> CONNECTION='fedlink/test_table1'; Query OK, 0 rows affected (0.04 sec) root@localhost Tue Jun 5 00:32:17 2018 00:32:17 [federated]>show create table federated1; ... | Table | Create Table | ... | federated1 | CREATE TABLE `federated1` ( `id` int(20) NOT NULL AUTO_INCREMENT, `name` varchar(32) NOT NULL DEFAULT '', `other` int(20) NOT NULL DEFAULT '0', PRIMARY KEY (`id`), KEY `name` (`name`), KEY `other_key` (`other`) ) ENGINE=FEDERATED DEFAULT CHARSET=utf8 CONNECTION='fedlink/test_table1' | ... 1 row in set (0.00 sec) # 往federated引擎表federated1中插入數(shù)據(jù),然后可以在federated引擎表和遠(yuǎn)程實(shí)例表中都查詢到相同的數(shù)據(jù) root@localhost Tue Jun 5 00:32:58 2018 00:32:58 [federated]>insert into federated1(name) values('federated1'); Query OK, 1 row affected (0.00 sec) root@localhost Tue Jun 5 00:33:42 2018 00:33:42 [federated]>select * from federated1; +----+------------+-------+ | id | name | other | +----+------------+-------+ | 1 | federated1 | 0 | +----+------------+-------+ 1 row in set (0.00 sec) root@localhost Tue Jun 5 00:33:49 2018 00:33:49 [federated]>select * from test_table.test_table1; +----+------------+-------+ | id | name | other | +----+------------+-------+ | 1 | federated1 | 0 | +----+------------+-------+ 1 row in set (0.00 sec) # 使用CONNECTION方式完整的連接字符串創(chuàng)建federated引擎表 root@localhost Tue Jun 5 00:32:32 2018 00:32:32 [federated]>CREATE TABLE federated2 ( -> id INT(20) NOT NULL AUTO_INCREMENT, -> name VARCHAR(32) NOT NULL DEFAULT '', -> other INT(20) NOT NULL DEFAULT '0', -> PRIMARY KEY (id), -> INDEX name (name), -> INDEX other_key (other) -> ) -> ENGINE=FEDERATED -> CONNECTION='mysql://test:test@127.0.0.1:3306/test_table/test_table2'; Query OK, 0 rows affected (0.00 sec) # 往federated引擎表federated2中插入數(shù)據(jù),然后可以在federated引擎表和遠(yuǎn)程實(shí)例表中都查詢到相同的數(shù)據(jù) root@localhost Tue Jun 5 00:34:08 2018 00:34:08 [federated]>insert into federated2(name) values('federated2'); Query OK, 1 row affected (0.00 sec) root@localhost Tue Jun 5 00:34:16 2018 00:34:16 [federated]>select * from test_table.test_table2; +----+------------+-------+ | id | name | other | +----+------------+-------+ | 1 | federated2 | 0 | +----+------------+-------+ 1 row in set (0.00 sec) root@localhost Tue Jun 5 00:34:22 2018 00:34:22 [federated]>select * from federated2; +----+------------+-------+ | id | name | other | +----+------------+-------+ | 1 | federated2 | 0 | +----+------------+-------+ 1 row in set (0.00 sec) root@localhost Tue Jun 5 00:34:28 2018 00:34:28 [federated]>select * from mysql.servers; +-------------+-----------+------------+----------+----------+------+--------+---------+-------+ | Server_name | Host | Db | Username | Password | Port | Socket | Wrapper | Owner | +-------------+-----------+------------+----------+----------+------+--------+---------+-------+ | fedlink | 127.0.0.1 | test_table | test | test | 3306 | | mysql | | +-------------+-----------+------------+----------+----------+------+--------+---------+-------+ 1 row in set (0.00 sec) # 使用socket方式類(lèi)似,如果使用socket時(shí),create server連接組合創(chuàng)建方式參照"表記錄內(nèi)容示例"
表字段含義。
Server_name:連接組合唯一標(biāo)識(shí)(即名稱,使用drop server刪除連接組合記錄時(shí),直接指定該表中存在的server_name即可刪除組合記錄,如:drop server server_name;)。
Host:連接組合中的遠(yuǎn)程主機(jī)名(IP或域名),對(duì)應(yīng)create server中的HOST,對(duì)應(yīng)CONNECTION連接組合字符串中的host_name。
Db:連接組合中的遠(yuǎn)程實(shí)例的數(shù)據(jù)庫(kù)名稱,對(duì)應(yīng)create server中的DATABASE ,對(duì)應(yīng)CONNECTION連接組合字符串中的db_name。
Username:連接組合的遠(yuǎn)程實(shí)例用戶名,對(duì)應(yīng)create server中的USER ,對(duì)應(yīng)CONNECTION連接組合字符串中的user_name。
Password:連接組合的遠(yuǎn)程實(shí)例用戶密碼,對(duì)應(yīng)create server中的PASSWORD ,對(duì)應(yīng)CONNECTION連接組合字符串中的password。
Port:連接組合的遠(yuǎn)程實(shí)例端口,對(duì)應(yīng)create server中的PORT ,對(duì)應(yīng)CONNECTION連接組合字符串中的port_num。
Socket:連接組合的本地實(shí)例的socket路徑,對(duì)應(yīng)create server中的SOCKET ,對(duì)應(yīng)CONNECTION連接組合字符串中的host_name。
Wrapper:類(lèi)似一個(gè)協(xié)議名稱,對(duì)應(yīng)create server中的WRAPPER ,對(duì)應(yīng)CONNECTION連接組合字符串中的scheme。
PS:
CONNECTION字符串方式不會(huì)在mysql.servers表中添加記錄。
到此,關(guān)于“分析mysql系統(tǒng)庫(kù)日志信息記錄表”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!
標(biāo)題名稱:分析mysql系統(tǒng)庫(kù)日志信息記錄表
文章地址:http://m.newbst.com/article32/gdcgpc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供手機(jī)網(wǎng)站建設(shè)、品牌網(wǎng)站制作、網(wǎng)站策劃、網(wǎng)站導(dǎo)航、網(wǎng)站設(shè)計(jì)公司、企業(yè)網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)