1. 程式人生 > >利用虛擬ip實現資料庫的高可用與資料庫的慢查詢

利用虛擬ip實現資料庫的高可用與資料庫的慢查詢

這是在主從複製高可用的基礎上做的,基於上篇部落格 ####分別開啟server1,2,3的mysql /etc/init.d/mysqld  start mysql  -p show  slave   status\G;   ###分別做下列操作,主要是看誰是主,誰是從 ####在排程器裡面進行下列操作 cd  /etc/masterha ls cat   app1.cnf   ##檢視自己以前的設定,將指令碼的註釋開啟,才能讀這兩個指令碼 cd cd  MHA ls cp  master_ip_*  /usr/local/bin cd   /usr/local/bin ls   ###有兩個複製過來的檔案

ll    ##這是兩個指令碼檔案,需要加執行許可權 chmod  +x   *

vim   master_ip_online_change #!/usr/bin/env perl use strict; use warnings FATAL =>'all';

use Getopt::Long;

my $vip = '172.25.254.100/24';    #虛擬vip my $key = "1"; my $ssh_start_vip = "/sbin/ip  addr  add $vip  dev  eth0"; my $ssh_stop_vip = "/sbin/ip  addr  del $vip  dev  eth0"; my $exit_code = 0;

ll  /sbin/ip     ##顯示路徑對不對 ###在主master裡面做 ip  addr  add  172.25.17.100/24  dev  eth0

####在真物理機裡面做 mysql  -h  172.25.17.100  -u repl  -p   ###登陸虛擬ip,觀看能不能登上去 show    databases;

####在排程器裡面做_ masterha_master_switch   --conf=/etc/masterha/app1.cnf  --master_state=alive  --new_master_host=172.25.17.2 --new_master_port=3306  --orig_master_is_new_slave  --running_updates_limit=100000    ###master進行轉換

####在原來主master裡面 ip  addr  ##觀看虛擬ip有沒有漂 mysql  -p show  slave  status\G;   ##掛看master有沒有轉換到自己設定的ip裡面

####在新設定的主master裡面 ip  addr  ##觀看虛擬ip有沒有漂過來 mysql  -p show  slave  status\G;   ###應該不顯示,因為他就是master

2、慢查詢日誌    慢查詢日誌是將mysql伺服器中影響資料庫效能的相關SQL語句記錄到日誌檔案,通過對這些特殊的SQL語句分析,改進以達到提高資料庫效能的目的。    通過使用--slow_query_log[={0|1}]選項來啟用慢查詢日誌。所有執行時間超過long_query_time秒的SQL語句都會被記錄到慢查詢日值,可以使用mysqldumpslow命令獲得日誌中顯示的查詢摘要來處理慢查詢日誌。

3、慢查詢日誌演示

long_query_time     :  設定慢查詢的閥值,超出次設定值的SQL即被記錄到慢查詢日誌,預設值為10s
slow_query_log      :  指定是否開啟慢查詢日誌
log_slow_queries    :  指定是否開啟慢查詢日誌(該引數要被slow_query_log取代,做相容性保留)
slow_query_log_file :  指定慢日誌檔案存放位置,可以為空,系統會給一個預設的檔案host_name-slow.log
min_examined_row_limit:查詢檢查返回少於該引數指定行的SQL不被記錄到慢查詢日誌
log_queries_not_using_indexes: 不使用索引的慢查詢日誌是否記錄到索引

在主master裡面做 mysql  -p show  variables  like  '%low%';   ###slow_query_log   off

set   global  slow_query_log=1;    ###開啟慢查詢 show  variables  like  '%low%';  ###slow_query_log   on 日至檔案為  /var/lib/mysql/server2-slow

cd  /var/lib/mysql ls ###有server2-slow.log 這個檔案

mysql  -p show   variables  like '%long%';   ###可以看見他的延長時間為10s,可以對他進行設定時間

set   global  long_query_time=1;     ##設定全域性的 set     long_query_time=1;           ##設定臨時的

show   variables  like '%long%';   ####時間改為1秒 select  sleep(2); select  sleep(3); select  sleep(4);

cat  server3-slow.log    ##檢視日誌

4、格式化慢查詢日誌

結構化慢查詢日誌就是把慢查詢日誌中的重要資訊按照便於閱讀以及按照特定的排序方式來提取SQL。
這種方式有點類似於Oracle中有個tkprof來格式化oracle的trace檔案。
對於前面的慢查詢日誌我們使用mysqldumpslow來提取如下:

mysqldumpslow    -s  t  -t  5 server3-slow.log    #-t    顯示top前幾的  t##設定的時間