利用虛擬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##設定的時間