日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql 进阶方向_mysql数据库入门、进阶和提升(续二)

發布時間:2024/9/27 数据库 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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数据库入门、进阶和提升(续二)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。