mysql 进阶方向_mysql数据库入门、进阶和提升(续二)
第十章 創建計算字段
將表中不同列中的數據字段通過拼接、加減乘除運算計算出結果并單獨顯示出來。
10.2拼接字段
將不同字段的值連接在一起并構成單個值。使用函數concat(),如果要將此值獨立出來需要使用AS來進行別名定義。
mysql> select concat(user_name,':',password) from user;
+-----------------------------------------+
| concat(user_name,':',password)? ? ? ? ? |
+-----------------------------------------+
| system: ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? |
| admin:286c39c4042493717b7e916eab48eab6? |
| master:cfbf20d7d12069ed501c10cc47f6b788 |
| dtedu:261a07079db097c15150d9a07ba066f8? |
+-----------------------------------------+
4 rows in set (0.00 sec)
將計算字段進行別名設置,使其可以獨立出來便于調用。
mysql> select concat(user_name,'(',password,')') as user_passwd from user;
+------------------------------------------+
| user_passwd? ? ? ? ? ? ? ? ? ? ? ? ? ? ? |
+------------------------------------------+
| system() ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? |
| admin(286c39c4042493717b7e916eab48eab6)? |
| master(cfbf20d7d12069ed501c10cc47f6b788) |
| dtedu(261a07079db097c15150d9a07ba066f8)? |
+------------------------------------------+
4 rows in set (0.00 sec)
如果字段中包含空格,可以刪除指定字段中的空格,再進行計算。RTrim:刪除右邊空格,LTrim:刪除左邊空格,Trim:刪除左右兩邊空格。
mysql> select concat (rtrim(user_name),'(',ltrim(password),')',trim(status)) as new_user from user;
+------------------------------------------------+
| new_user ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? |
+------------------------------------------------+
| system()disabled ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? |
| admin(286c39c4042493717b7e916eab48eab6)active? |
| master(cfbf20d7d12069ed501c10cc47f6b788)active |
| dtedu(261a07079db097c15150d9a07ba066f8)active? |
+------------------------------------------------+
4 rows in set (0.00 sec)
select同樣提供了用于測試計算語句是否正確的方法。
mysql> select 4+5
-> ;
+-----+
| 4+5 |
+-----+
| ? 9 |
+-----+
1 row in set (0.00 sec)
mysql> select rtrim(? gong ? );
ERROR 1054 (42S22): Unknown column 'gong' in 'field list'
mysql> select rtrim('? gong ? ');
+--------------------+
| rtrim('? gong ? ') |
+--------------------+
| ? gong ? ? ? ? ? ? |
+--------------------+
1 row in set (0.00 sec)
算術計算字段之間的數值。常用的有加減乘除。
mysql> select user_name+password as new from user;
+-----+
| new |
+-----+
| ? 0 |
| 286 |
| ? 0 |
| 261 |
+-----+
4 rows in set, 7 warnings (0.00 sec)
第十一章 使用數據處理函數
函數可以處理很多復雜的計算問題,但是函數的可移植性差,不同DBMS之間的函數差異很大,所以建議在編寫腳本的時候對函數的功能進行注釋說明。
函數類型:
1、文本處理函數
用于處理文本內容的刪除、編輯、轉換大小寫等功能。
常用的文本處理函數
函數說明
left()right()返回串左邊的字符
length()返回串的長度
locate()找出串的一個子串
lower()upper()將串轉化為小寫
sounded()返回串的soundex值
substring()返回子串的字符
Trim、LTrim、RTrim()刪除串旁邊的空格
2、算術處理函數
處理數值數據的算術操作,比如返回絕對值、代數運算等功能。
3、處理日期和時間的函數
對日期或者時間進行特定內容的提取。
常用日期處理函數函數說明
adddate()增加一個日期
additive()增加一個時間
curate()返回當前日期
curtime()返回當前時間
date()返回日期時間的日期部分
datediff()計算兩個日期的差
date_add()
date_format()高度靈活的日期運算函數
返回一個格式化的日期或時間串day()返回一個日期的天數部分
day0fweek()返回星期幾
hour()返回小時部分
minute()返回分鐘部分
now()返回當前時間和日期
second()返回秒數
time()返回一個時間部分
year()返回年份部分
數值處理函數函數說明
abs()返回一個數的絕對值
cos()返回一個角的余弦
exp()返回一個數的指數值
mod()返回操作數的余數
pi()返回圓周率rand()返回一個 隨機數
sin()返回一個角的正弦
sqrt()返回一個數的平方根
tan()返回一個角度的正切
4、DBMS系統信息提取函數。
第十二章 匯總數據
應用場景:
1、確定表中的行數,或者滿足某一個條件的特定行數。
2、獲得表中行組的和。
3、找出表列的最大值、最小值、平均值。
12.1聚集函數函數說明
avg()返回某列的平均值
count()返回某列的行數
max()返回某列的最大值
min()返回某列的最小值
sum()返回某列值的和
count()函數的兩種用法:
1、count(*):對表中行的數目進行計數(不管表列中是否有空值)
2、count(column)對特定的列中具有值的行進行計數,忽略null值。
第十三章分組數據
應用場合:常規檢索方式為全部表內容、通過where來指定具體值、范圍的方法。而分組容許把數據分為多個邏輯組,以便能夠對每個組進行聚集計算(對行求平均、最大、最小)
比如:mysql> select vend_id, count(*) as num_prods from products group by vend_id;
二、group by
重要規定:
1、group by子句可以包括任意多個列,實現嵌套功能。
mysql> select user_name,count(*) from user group by status;
+-----------+----------+
| user_name | count(*) |
+-----------+----------+
| gongbing? |? ? ? ? 6 |
| system? ? |? ? ? ? 1 |
+-----------+----------+
2 rows in set (0.00 sec)
2、實現嵌套后,數據會在規定的最后一個分組實現匯總。
mysql> select user_name,status from user group by status,user_name;
3、group by子句中列出的可以是表達式、檢索列,但不能是聚集函數,也不能使用別名。
4、null在分組中單獨存在。
5、group by出現位置是在order by之前,where之后。
三、過濾分組having
第十四章 子查詢語句
第十五章 聯接表
一、什么是聯接
利用sql的select查詢語句將多個表的不同列連起來并輸出。
關系表
依據某種關系存在的多個表,稱為關系表。
外鍵
一個表中的主鍵在另一個表中出現,它定義了兩個表之間的關系。
聯接
就是將不同表中的列抽取出來,并通過select查詢語句整理成一個完整的信息。此操作依據的就是關系型數據庫中的表的關系完成的。
MySQL事務日志
1、特性
事務日志的并發性
為了實現事務日志并發性,需要對數據進行保護,保證數據不會混亂,這里就使用到了“鎖”這個功能。
鎖的類型:表鎖、頁鎖、行鎖,共享鎖(讀鎖)、獨占鎖(寫鎖)。
myISAM引擎支持表鎖
innoDB引擎執行行鎖
根據鎖的施加方式:
顯示鎖(通常不使用此方法,只有在備份的時候使用會非常有用。)
lock tables tbname (read|write)
設置讀鎖:
mysql>?lock?tables?students?read;
Query?OK,?0?rows?affected?(0.00?sec)
解除鎖:
mysql>?unlock?tables;
Query?OK,?0?rows?affected?(0.00?sec)
隱式鎖
事務僅在innoDB引擎中支持,在myISAM引擎并不支持,所以要修改引擎才支持事務功能。
默認情況下,mysql將每一條語句都當成一個事務,并在語句執行后提交,可以通過修改變量“autocommit”來改變。
1、查看狀態(當前為自動提交)
mysql>?show?global?variables?like?'autocommit';
+---------------+-------+
|?Variable_name?|?Value?|
+---------------+-------+
|?autocommit????|?ON????|
+---------------+-------+
1?row?in?set?(0.00?sec)
2、通常在使用innoDB的事務功能時,關閉autocommit的功能,并手動實現提交。可以提供數據庫性能。
啟動事務
mysql>?start?transaction;
Query?OK,?0?rows?affected?(0.00?sec)
提交事務,提交后是不可以在回滾回去。
mysql>?commit;
Query?OK,?0?rows?affected?(0.00?sec)
回滾,就是撤銷上一條操作
mysql>?rollback;
Query?OK,?0?rows?affected?(0.00?sec)
創建回滾點(類似windows的還原點),必要時恢復到還原點之前的狀態。
mysql>?savepoint?del1;
Query?OK,?0?rows?affected?(0.00?sec)
滾回到以前的某一個回滾點:rollback to pointname
mysql的隔離性(變量名:tx_isolation)
通常是為了事務的并發性而存在的。
隔離級別:
1級、read-uncommitted(讀取未提交內容,所有事務都可以看到其他未提交事務的執行結果)
2級、read-committed(讀取提交內容,一個事務只能看到已經提交的結果。大多數數據庫默認級別)
3級、 repeatable-read (可重讀,會產生“幻讀”,mysql默認級別)
4級、serializable(可串行化)
1、隔離級別只能在會話模式下進行設置。
mysql>?set?session?tx_isolation='read-uncommitted';
Query?OK,?0?rows?affected?(0.00?sec)
將mysql的隔離級別設置為readcommited可以提高數據庫的并發能力。
數據庫存儲引擎篇
由于mysql被oracle收購,存在收費及被oracle冷處理的可能,mysql原創始人有開發了一個新的數據庫maria,其實這個數據庫在使用上和mysql非常相似,甚至命令很多都是一樣的。
maria數據庫的引擎自身集成并優化了innoDB。
存儲引擎本身是屬于表級別的,就是說是建立在表的基礎上的。
查看表的存儲引擎,實際就是查看表的狀態信息。
show table status
Name:?toc ? ? ? ? ? ? ? ? ? ? ? ?名稱
Engine:?MyISAM ? ? ? ? ? ? ? 引擎
Version:?10 ? ? ? ? ? ? ? ? ? ? ? ? ?版本
Row_format:?Fixed ? ? ? ? ? ? ? ? 行格式
Rows:?0 ? ? ? ? ? ? ? ? ? ? ? ? ? ? 表中已有行數
Avg_row_length:?0 ? ? ? ? ? ? ? ? ? ? 平均行長度
Data_length:?0 ? ? ? ? ? ? ? ? ? ? ? ? 已經存儲的數據量
Max_data_length:?2533274790395903 ? ? ? ? ? ? ? ? ? ?最大存儲數據量
Index_length:?1024 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?索引長度
Data_free:?0 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 已經分配出去并使用然后又刪除的存儲空間
Auto_increment:?1 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?自動增長步長值
Create_time:?2016-07-28?15:59:16 ? ? ? ? ? ? ? ? ? ? ? ? 表的創建時間
Update_time:?2016-07-28?15:59:16 ? ? ? ? ? ? ? ? ? ? ? 上次修改記錄的時間
Check_time:?NULL ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 上次使用check命令檢查表的時間
Collation:?latin1_swedish_ci ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?排序規則
Checksum:?NULL ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 表的校驗和,默認未啟用
Create_options: ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 創建表時使用的其他選項
Comment: ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 注釋,對于myISAM表,存儲的是創建表時的commment選項指定的信息。對于innoDB來講,存儲對應的表空間剩余的表空間信息。
早起mysql的默認存儲引擎是myISAM,但是他不支持事務,所以出現了innoDB引擎,后來又出現了BDB引擎,innoDB的出現完成了mysql成為完整的關系型數據庫。
innoDB:
事務:事務日志
外鍵:
mvcc:多版本并發控制,類似快照。
支持聚簇索引
支持輔助索引
支持自適應hash索引
支持熱備:需要myql enterprise backup,percona xtrabackup
行級鎖
myISAM:
全文索引
壓縮
空間索引
表級鎖
不支持事務和行級鎖
崩潰后無法安全恢復
其他引擎介紹:
archive:
僅僅執行insert和select,支持壓縮功能。
適用于存儲日志信息,或其他按時間序列實現的數據采集類應用
csv:
將數據保存為.csv格式,不支持索引,適用于數據交換。
blackhole:
沒有存儲機制,任何數據都會被丟失,但會記錄二進制日志
federated:
訪問遠程服務器上的數據的存儲引擎:federatedx
memory:
內存存儲引擎,比ISAM至少快一個數量級,適用于實現臨時表。
mrg myISAM:
可以將多個myISAM表合并成一個ISAM表,實際自身并不存儲數據。
第三方存儲引擎:
OLTP類:
xtraDB:是innoDB的增強版
PBXT:已經不再繼續有人開發維護了。
TokuDB:開源、支持圖數據,分形樹、執行索引結構。
列式存儲引擎:
infobright:最著名的列式存儲。
monetDB:
infiniDB:
lucidDB:
社區存儲引擎:
aria:
groona:全文索引引擎
qqgraph:支持圖,有open query研發
sphinx:
spider:支持分片
VPforMYsql:支持垂直分區
查看服務器中mysql數據庫支持的引擎有哪些?
[root@localhost?~]#?ll?/usr/local/dtedu/mysql/lib/plugin/
總用量?292
-rwxr-xr-x.?1?mysql?mysql??7734?6月??28?2013?adt_null.so
-rwxr-xr-x.?1?mysql?mysql?10123?6月??28?2013?auth.so
-rwxr-xr-x.?1?mysql?mysql??7420?6月??28?2013?auth_socket.so
-rwxr-xr-x.?1?mysql?mysql??9545?6月??28?2013?auth_test_plugin.so
-rw-r--r--.?1?mysql?mysql???227?7月???2?2012?daemon_example.ini
drwxr-xr-x.?2?mysql?mysql??4096?6月??28?2013?debug
-rwxr-xr-x.?1?mysql?mysql?46737?6月??28?2013?ha_example.so
-rwxr-xr-x.?1?mysql?mysql?75366?6月??28?2013?ha_federated.so
-rwxr-xr-x.?1?mysql?mysql?10836?6月??28?2013?libdaemon_example.so
-rwxr-xr-x.?1?mysql?mysql?10163?6月??28?2013?mypluglib.so
-rwxr-xr-x.?1?mysql?mysql??6663?6月??28?2013?qa_auth_client.so
-rwxr-xr-x.?1?mysql?mysql??9334?6月??28?2013?qa_auth_interface.so
-rwxr-xr-x.?1?mysql?mysql??7078?6月??28?2013?qa_auth_server.so
-rwxr-xr-x.?1?mysql?mysql?45592?6月??28?2013?semisync_master.so
-rwxr-xr-x.?1?mysql?mysql?17754?6月??28?2013?semisync_slave.so
選擇數據引擎的方法和標準有哪些?
1、是否需要事務
2、備份
3、崩潰恢復
1、查看數據庫支持的存儲引擎有哪些?
mysql>?show?engines;
+------------+---------+------------------------------------------------------------+--------------+------+------------+
|?Engine?????|?Support?|?Comment????????????????????????????????????????????????????|?Transactions?|?XA???|?Savepoints?|
+------------+---------+------------------------------------------------------------+--------------+------+------------+
|?MRG_MYISAM?|?YES?????|?Collection?of?identical?MyISAM?tables??????????????????????|?NO???????????|?NO???|?NO?????????|
|?CSV????????|?YES?????|?CSV?storage?engine?????????????????????????????????????????|?NO???????????|?NO???|?NO?????????|
|?MyISAM?????|?DEFAULT?|?Default?engine?as?of?MySQL?3.23?with?great?performance?????|?NO???????????|?NO???|?NO?????????|
|?InnoDB?????|?YES?????|?Supports?transactions,?row-level?locking,?and?foreign?keys?|?YES??????????|?YES??|?YES????????|
|?MEMORY?????|?YES?????|?Hash?based,?stored?in?memory,?useful?for?temporary?tables??|?NO???????????|?NO???|?NO?????????|
+------------+---------+------------------------------------------------------------+--------------+------+------------+
5?rows?in?set?(0.00?sec)
日志、備份和恢復篇
日志種類
錯誤日志
查詢日志
二進制日志
事務日志
中繼日志
慢查詢日志
一、錯誤日志
默認存放位置:--datadir 選項設置的目錄,也可通過my.cnf來進行設置。其中
1、log-error
服務器啟動和關閉過程中的信息
服務器運行中的錯誤信息
事件調度器運行一個事件時產生的信息
啟動從服務器進程時產生的信息
查看詳細錯誤日志
mysql>?show?global?variables?like?'%log%';
+-----------------------------------------+---------------------------------+
|?Variable_name???????????????????????????|?Value???????????????????????????|
+-----------------------------------------+---------------------------------+
|?back_log????????????????????????????????|?50??????????????????????????????|
|?binlog_cache_size???????????????????????|?32768???????????????????????????|
|?binlog_direct_non_transactional_updates?|?OFF?????????????????????????????|
|?binlog_format???????????????????????????|?MIXED???????????????????????????|
|?expire_logs_days????????????????????????|?0???????????????????????????????|
|?general_log?????????????????????????????|?OFF?????????????????????????????|是否開啟查詢日志功能
|?general_log_file????????????????????????|?/data/log/mysql/mysqld.log??????|查詢日志以文件形式輸出的位置
|?innodb_flush_log_at_trx_commit??????????|?1 ? ? ? ? ? ? ? ? ? ?|是否緩存中有內容就同步到磁盤上,
0:每秒同步,并執行磁盤flush操作
1:每事務同步,并執行磁盤flush操作
2:每事務同步,并不執行磁盤flush操作
|?innodb_locks_unsafe_for_binlog??????????|?OFF?????????????????????????????|
|?innodb_log_buffer_size??????????????????|?1048576?????????????????????????|緩存大小
|?innodb_log_file_size????????????????????|?5242880?????????????????????????|事務日志文件大小
|?innodb_log_files_in_group???????????????|?2???????????????????????????????|緩存文件個數
|?innodb_log_group_home_dir???????????????|?./??????????????????????????????|事務日志組的位置
|?innodb_mirrored_log_groups??????????????|?1???????????????????????????????|
|?log?????????????????????????????????????|?OFF?????????????????????????????|
|?log_bin?????????????????????????????????|?ON??????????????????????????????|
|?log_bin_trust_function_creators?????????|?OFF?????????????????????????????|
|?log_bin_trust_routine_creators??????????|?OFF?????????????????????????????|
|?log_error???????????????????????????????|?/data/log/mysql/mysqld.log??????|
|?log_output??????????????????????????????|?FILE????????????????????????????|查詢日志輸出的=位置
|?log_queries_not_using_indexes???????????|?OFF?????????????????????????????|
|?log_slave_updates???????????????????????|?OFF?????????????????????????????|
|?log_slow_queries????????????????????????|?OFF?????????????????????????????|
|?log_warnings????????????????????????????|?1???????????????????????????????|
|?max_binlog_cache_size???????????????????|?18446744073709547520????????????|
|?max_binlog_size?????????????????????????|?1073741824??????????????????????|
|?max_relay_log_size??????????????????????|?0???????????????????????????????|
|?relay_log???????????????????????????????|?????????????????????????????????|
|?relay_log_index?????????????????????????|?????????????????????????????????|
|?relay_log_info_file?????????????????????|?relay-log.info??????????????????|
|?relay_log_purge?????????????????????????|?ON??????????????????????????????|
|?relay_log_space_limit???????????????????|?0???????????????????????????????|
|?slow_query_log??????????????????????????|?OFF?????????????????????????????|是否開啟慢查詢
|?slow_query_log_file?????????????????????|?/data/log/mysql/mysqld-slow.log?|定義日志位置
|?sql_log_bin?????????????????????????????|?ON??????????????????????????????|
|?sql_log_off?????????????????????????????|?OFF?????????????????????????????|
|?sql_log_update??????????????????????????|?ON??????????????????????????????|
|?sync_binlog?????????????????????????????|?0???????????????????????????????|
+-----------------------------------------+---------------------------------+
38?rows?in?set?(0.00?sec)
2、log-warning(0|1)
二、查詢日志
默認情況下,查詢日志是關閉的,為了是提高IO效率。
默認情況下,日志的輸出位置是到general_log_file=指定的位置。如果是以table的形式輸出的話將存放在mysql中的mysql數據庫中的general_log表。
三、慢查詢日志
建議開啟,對性能影響很小。
參數:slow_query_log
slow_query_log_file
慢查詢的時長通常是10s,long_query_time設置。
四、事務日志
事務日志的緩存空間一般有2個,當一個填滿后就寫入下一個,并報寫滿的緩存導入的磁盤上的文件中。
|?general_log?????????????????????????????|?OFF?????????????????????????????|是否開啟查詢日志功能
|?general_log_file????????????????????????|?/data/log/mysql/mysqld.log??????|查詢日志以文件形式輸出的位置
|?innodb_flush_log_at_trx_commit??????????|?1 ? ? ? ? ? ? ? ? ? ?|是否緩存中有內容就同步到磁盤上,建議設置為2
|?innodb_locks_unsafe_for_binlog??????????|?OFF?????????????????????????????|
|?innodb_log_buffer_size??????????????????|?1048576?????????????????????????|緩存大小
|?innodb_log_file_size????????????????????|?5242880?????????????????????????|事務日志文件大小
|?innodb_log_files_in_group???????????????|?2???????????????????????????????|緩存文件個數
五、二進制日志
用途:記錄修改數據或者有可能改變數據的mysql語句。在主從mysql的數據庫進行同步時,使用的同步方法也就是讀取二進制日志,所以對于同步來說,二進制日志很重要。
常用參數:
log_bin ? ? ?設置是否啟用二進制日志,默認存儲位置/data/mysql/,文件名稱通常是mysql-bin.0001的形式,可以自己直接設置存儲位置,注意這里的文件名不要加后綴,系統自動添加比如:/path/to/filename
binlog_cache_size ? ? ? ? ? ? ? ? ? ? ?32768 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?二進制日志的緩存大小
binlog_direct_non_transactional_updates ?OFF
binlog_format ? ? ? ? ? ? ? ? ? ? ? ? ? MIXED ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?二進制格式
bin_stmt_cache_size ? ? ? ? ? ? ? ? ? ?523121 ? ? ? ? ? ? ? ? ? ? ? ? ? ?基于語句格式的緩存大小(三種格式之一)
expire_logs_days ? ? ? ? ? ? ? ? ? ? ? ? ? ?0 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?日志過期時間,0表示不過期。
sql_log_bin ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?on ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?會話級別的開啟、關閉二進制日志,備份時重要
sync_binlog ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?0 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 是否立即同步緩存的日志到磁盤上。
max_binlog_cache_size ? ? ? ? ? ? ? ?13123141312 ? ? ? ? ? ? ? ?最大緩存大小
max_binlog_size ? ? ? ? ? ? ? ? ? ? ? ? ? ?141231 ? ? ? ? ? ? ? ? ? ? ? ? ?日志文件的大小
max_stmt_cache_size ? ? ? ? ? ? ? ? ? ?131314 ? ? ? ? ? ? ? ? ? ? ? ? ? 基于語句格式的緩存大小
日志格式:
sql語句(statement)
修改行的數據內容(row):數據量相對大,但是會比較精確。
混合格式(交替使用語句和行)mixed
查看二進制日志命令
show binary logs:顯示二進制文件數量和大小
查看當前使用的二進制日志文件
mysql>?show?master?status;
+------------------+----------+--------------+------------------+
|?File?????????????|?Position?|?Binlog_Do_DB?|?Binlog_Ignore_DB?|
+------------------+----------+--------------+------------------+
|?mysql-bin.000016?|??????106 (所處位置為多少字節數)|??????????????|??????????????????|
+------------------+----------+--------------+------------------+
1?row?in?set?(0.00?sec)
查看二進制日志文件中記錄的事件內容。
mysql>?show?binlog?events?in?'mysql-bin.000001'?from?24238?limit?2;
+------------------+-------+------------+-----------+-------------+----------------------------------------------------+
|?Log_name?????????|?Pos???|?Event_type?|?Server_id?|?End_log_pos?|?Info???????????????????????????????????????????????|
+------------------+-------+------------+-----------+-------------+----------------------------------------------------+
|?mysql-bin.000001?|?24238?|?Query??????|?????????1?|???????24339?|?use?`mysql`;?CREATE?TEMPORARY?TABLE?tmp_db?LIKE?db?|
|?mysql-bin.000001?|?24339?|?Query??????|?????????1?|???????24408?|?BEGIN??????????????????????????????????????????????|
+------------------+-------+------------+-----------+-------------+----------------------------------------------------+
2?rows?in?set?(0.00?sec)
mysqlbinlog
linux自身也有有一個命令,可以查看二進制日志文件內容cd /data/mysql/ ? ? mysqlbinlog mysql-bin.00001
這個命令也可以用來恢復數據庫內容,能夠找回丟失的數據。
1、導出二進制日志文件
mysqlbinlog ?--star-position=123 ?-stop-position=241 mysql-bin.00003 >123.sql
2、恢復數據
mysql -u root -p testdb<123.sql
刪除二進制日志文件的安全方法:
1、建議在做完備份之后刪除
2、建議確定后刪除
刪除:
mysql>?purge?binary?logs?to?'mysql-bin.000003'; ? ? ? //刪除000003之前的日志文件
Query?OK,?0?rows?affected?(0.00?sec)
日志文件滾動,意義就是使用新的二進制日志文件比如現在使用的是mysql-bin.0000011,flush logs 滾動后變成mysql-bin.0000012了。
六、中繼日志
主要用于同步場景。
總結
以上是生活随笔為你收集整理的mysql 进阶方向_mysql数据库入门、进阶和提升(续二)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python局部变量含义_Python的
- 下一篇: mysql event 变量_mysql