Time of Update: 2017-02-27
微博上討論MySQL在刪除大表engine=innodb(30G+)時,如何減少MySQL hang的時間,現做一下簡單總結:(微博地址:http://weibo.com/1642466057/yuPz2guYJ)當buffer_pool很大的時候(30G+),由於刪除表時,會遍曆整個buffer pool來清理資料,會導致MySQL
Time of Update: 2017-02-27
MySQL的效能從查看日誌開始。硬體設定低常常導致這樣的問題,但事實上大多數情況並不在這裡。某些“慢"SQL阻塞了其他語句的執行,最佳化查詢是第一步需要做的。“工欲善其事必先利其器”,MySQL自身的一款mysqldumpslow 查詢日誌分析器,該工具不但陳舊,驗證規範不準確。今天要說的是Percona
Time of Update: 2017-02-27
測試庫中有將近300張表,其中有278張表的fid,uid欄位需要作出修改。解決辦法是自動產生修改欄位屬性的SQL語句。用於產生SQL的語句:select CONCAT('alter table ',TABLE_NAME,' modify ',COLUMN_NAME,' varchar(50) ;') from information_schema.COLUMNS where TABLE_SCHEMA='castle' and COLUMN_NAME in (
Time of Update: 2017-02-27
MySQL基於行的複製可以最大化保證主從複製的一致性,對於RBR(基於行複製) 和SBR(基於語句複製),相信大家已經很熟知,下面記錄的是行複製在二進位日誌總記錄的情況。基於行的複製是與位置相關的,binlog裡面只記錄相關表發生改變的列的資料。其中引入了四個新的事件: Table_map, Write_rows,Delete_rows,Update_rows.一條語句執行後,在binlog裡面,Table_map事件中包含表ID,和列的類型(沒有列名,slave
Time of Update: 2017-02-27
在保證資料庫效能的前提下,怎麼保證資料的一致性呢?在MySQL 5.5版本中即支援非同步複製又支援半同步複製。1、當slave 串連master的時候,它會指出它是否支援半同步複製。2、當master啟用 semisynchronous
Time of Update: 2017-02-27
在MySQL主從複製過程中,常常需要對某些重要的表進行一致性檢查。由於主從資料在同步時存在一定的延遲,因此直接讀取伺服器資料的方式無法嚴格保證資訊的一致性。在資料在同步完全結束之前,一直處於不斷變化且並不完整的狀態下。鎖表的可能實現這個問題,但是效能又是需要考慮的。能對資料驗證是最好的。MySQL的CHECKSUM
Time of Update: 2017-02-27
今天要介紹的是Percona中的pt-stalk工具。有些問題間歇性的發生,監控資訊也許根本來不及採集資訊,MySQL的鎖定或活動的高峰通常沒有留下任何資料來分析。這個是pt-stalk存在的意義,Pt-stalk 會監測一個觸發條件,然後收集相關資訊,該工具會將資訊寫入到 指定的記錄檔,預設以時間格式區分。對於show global status中的資訊,往往用Threads_running文法:pt-stalk [OPTIONS] [-- MYSQL
Time of Update: 2017-02-27
主從複寫延遲的監測,我以前的做法是通過比較show slave status\G中的兩個變數的差值(Read_Master_Log_Pos,Exec_Master_Log_Pos),將差值設定為一個自己認為合理的範圍,Seconds_Behind_Master 沒有適用過,今天做一次解析:Seconds_Behind_Master 是通過比較 SQL THREAD 接受 events事件的時間戳記(timestamp) 與IO THREAD 執行事件
Time of Update: 2017-02-27
記錄工作的點點滴滴:今天遇到case 1:在測試機上,start slave 出現“假死”現象,資料庫能夠串連,show processlist;顯示:隊列等待master從錯誤記錄檔裡面看到: 120831 16:20:59 [ERROR] /usr/local/mysql3307/libexec/mysqld: Disk is full writing './mysqld-relay-bin.~rec~' (Errcode: 28). Waiting for
Time of Update: 2017-02-27
當實體記憶體的數量不能容納資料的時候,os會把虛擬記憶體中的資料寫到磁碟上,此時的交換對於運行在作業系統中的進程是透明的。交換對與MySQL效能有很大的影響,對於Innodb儲存引擎它對記憶體中的資料鎖住全域互斥量,如果此時導致了磁碟的IO,那麼所有的動作都會等到IO完成之後才能進行。我們可以通過vmstat 命令。檢查s1,s0攔的IO變化狀態。如果完全禁止檔案交換,極端情況下,系統核心強制進行交換,這樣會降低os的效能。拷貝一個大檔案,用mysqldump
Time of Update: 2017-02-27
MySQL準備語句(Prepared Statements), 使用增強二進位用戶端/伺服器協議在用戶端和伺服器之間高效的發送資料,可以通過支援這種行協議的編程庫來訪問準備語句。建立準備語句時,用戶端庫會像伺服器發送一個實際查詢的原型,然後伺服器對該原型進行解析和處理,將部分最佳化過的原型儲存起來,並且給用戶端返回一個狀態控制代碼(State Handle)
Time of Update: 2017-02-27
innodb_flush_log_at_trx_commit 決定了交易記錄何時write,flushinnodb_flush_method確定了日誌及資料檔案如何write、flush。“show variables”顯示該變數為空白,那說明被設定了預設值(fdatasync)下面我們先從Linux
Time of Update: 2017-02-27
在mysql的複製中,相對於主主複製,主從架構的穩定性更好,而主主總是會有些問題存在,故不推薦。在大型架構中建議使用基於讀寫分離的主從複製本文不涉及讀寫分離的內容,只是簡單實現mysql的主從複製的實現。整個過程在理解複製的原理後就非常的簡單,所以先簡單介紹下原理。mysql的主從複製的基本原理:在主伺服器上傳送二進位日誌到從伺服器,在從伺服器上讀取收到的中繼日誌,執行日誌中的sql語句,實現資料同步。整個實現過程如下圖所示,通過圖片能很容易的看出整個流程對於主從之間使用非同步傳輸還是同步傳輸,
Time of Update: 2017-02-27
作業環境主:192.168.1.124從:192.168.1.125mysql-5.0.56.tar.gz 、centos5.2資料庫1:/data/3306/ 資料庫2:/data/3307/1、修改主庫my.cnf============================# vi /etc/my.cnfserver-id = 1log-bin============================2、重啟主庫生效=======================#/data/3306/
Time of Update: 2017-02-27
環境:Navicatfor Mysql 8.2 + MySQL Sever 5.1問題:通過MySQL命令列不能串連,輸入密碼後 無反應,過一段時間出現系統提示音,命令列視窗一閃而過,而且通過Navicat for Mysql 8.2也連不上,出 現如下錯誤:2003 - can's connect to MySQL server on 'localhost' 10060解決:關閉防火牆, 重新串連即可。如果出現10061錯誤,可以參考此文:Navicat for Mysql 出現2003 -
Time of Update: 2017-02-27
Navicat 軟體介紹Navicat是一個強大的MySQL資料庫管理和開發工具。Navicat為專業開發人員提供了一套強大的足夠尖端的工具,但它對於新使用者仍然是易於學習。Navicat,使用了極好的圖形化使用者介面(GUI),可以讓你用一種安全和更為容易的方式快速和容易地建立、組織、存取和共用資訊。 使用者可完全控制 MySQL 資料庫和顯示不同的管理資料,包括一個多功能的圖形化系統管理使用者和存取權限的管理工具,方便將資料從一個資料庫移轉到另一個資料庫中(Local to
Time of Update: 2017-02-27
做DBA三年多,接觸過很多主流資料庫產品,但唯獨沒機會碰觸MySQL,今天開始決定自學MySQL,給自己 沖沖電,先從MySQL的體系架構開始學起。MySQL資料庫的體系架構如下圖所示:從上 圖中可以看出,MySQL主要分為以下幾個組件:串連池組件管理服務和工具組件SQL介面組件分析器組件最佳化器組件緩衝組件外掛程式式儲存引擎物理檔案有其它資料庫基礎的人可以馬上發現,MySQL最大的特色是其可插拔的外掛程式式儲存引擎,儲存引擎是底層 物理架構的實現,每個儲存引擎開發人員都可以按照自己的意願開發。
Time of Update: 2017-02-27
環境:NavicatforMysql 8.2 + MySQL Sever 5.1問題:NavicatforMysql中添加外鍵解 決:方法一:使用SQL語句建立外鍵:alter table 外鍵表 add constraint 約束名 foreign key(欄位名) references 參照表(外鍵欄位名) on delete restrict/set null/cascade on update restrict/set null/
Time of Update: 2017-02-27
這裡介紹的記錄檔都是MySQL資料庫本身的檔案,和具體用什麼儲存引擎無關。錯誤記錄檔MySQL的錯誤記錄檔類似於Oracle的alert.log,預設情況下以.err結尾,DBA在遇到問題時,首先應該查詢 該日誌獲得錯誤資訊。查詢日誌查詢日誌記錄了所有的資料庫請求,即時這些請求沒有得到正確 的執行。慢查詢日誌慢查詢日誌用於記錄已耗用時間比較長的SQL語句,可以通過參數
Time of Update: 2017-02-27
InnoDB是事務安全的儲存引擎,設計上借鑒了很多Oracle的架構思想,一般而言,在OLTP應用中,InnoDB 應該作為核心應用表的首先儲存引擎。InnoDB是由第三方的Innobase Oy公司開發,現已被Oracle收購,創始 人是Heikki Tuuri,芬蘭赫爾辛基人,和著名的Linux創始人Linus是校友。InnoDB體系架構上面是InnoDB的一個簡圖,簡單來說,InnoDB是由一系列後台線程和一大塊記憶體組成。後台線程預設情況下,InnoDB的後台線程有7個 —&