2019年4月15日星期一

簡單的KeepaliveD設置

因此,keepalived已經存在了很長一段時間......但是對許多人來說這仍然是一個謎。
所以這是一個非常簡單的例子,說明keepalived如何與MySQL一起工作。 希望這可以幫助那些有疑問的人。

我們將有一個簡單的主設備到奴隸設置。 意思是..我們寫一個,除非我們故障轉移到第二個事件。

1 - 安裝keepalived


#yum搜索keepalived
keepalived .x86_64:負載均衡器和高可用性服務

  僅限名稱和摘要匹配,對所有內容使用“全部搜索”。
#yum -y install keepalived

你現在應該有一個配置文件

#ls -ltr /etc/keepalived/keepalived.conf  

保留原件,因為你總是備份..右....
#cp /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.orig

因此,您需要找出可用於虛擬IP的ipaddress。 我為這個例子選擇了192.168.0.123。

接下來,我們將設置一個腳本用於我們的新配置文件。

我在這裡做的一些事情......
我在/ etc / keepalived中留下了一個.cnf文件,用於keepalived和一個日誌。
這使得示例變得簡單,因此您可以執行此操作或使用您自己的cnf文件。

一個腳本:

cat /etc/keepalived/keepalived_check.sh  
#!/斌/慶典

#monitor mysql status

#如果這個節點mysql死了

#並且它的奴隸還活著,然後停止它的keepalived。 另一個節點將綁定IP。



export MYSQL_HOME = / etc / keepalived /

export PATH = $ MYSQL_HOME / bin:$ PATH



的MySQL =“/ USR / bin中/ MySQL的”

中mysqladmin =“的/ usr /斌/中mysqladmin”

delay_file =“$ MYSQL_HOME / slave_delay_second.log”

slave_host = $ 1





ALIVE = $($ mysqladmin --defaults-file = $ MYSQL_HOME / .my.localhost.cnf   ping | grep alive | wc -l);

REMOTEALIVE = $($ mysqladmin --defaults-file = $ MYSQL_HOME / .my.remotehost.cnf   ping | grep alive | wc -l);



如果[[$ ALIVE -ne 1]]

然後

#echo“MySQL已關閉”

        如果[[$ REMOTEALIVE -eq 1]]

        然後

        迴聲“關機保持活力”

            systemctl停止keepalived  

      echo“keepalived stop”

        科幻

#其他

#echo“MySQL正在上升”

#日期

科幻



退出0 #all done

新的配置文件

cat /etc/keepalived/keepalived.conf
global_defs {



      notification_email {

        anothermysqldba@gmail.com  

      }



      notification_email_from anothermysqldba@gmail.com  

      smtp_server localhost

      smtp_connect_timeout 30



      }







vrrp_script check_mysql {

   腳本“/etc/keepalived/keepalived_check.sh”

   間隔2

   重量2

}







vrrp_instance VI_1 {



      國家MASTER

      接口enp0s8   #<---什麼界面名稱包含您的真實IP / sbin / ifconfig

        #在ip link show中找到

      virtual_router_id 51

      優先級101

      advert_int 1

      nopreempt不同   #僅在較高優先級節點上需要

      認證{

        auth_type PASS

        auth_pass 1111

      }





      track_script {

        check_mysql

      }



      virtual_ipaddress {

        192.168.0.123  

      }




}



這一切都很棒但是有效嗎......

所以我們有2個主機

[root @ centosa keepalived] #hostname

centosa

[root @ centosb keepalived] #hostname
centosb

啟動keepalived

[root @ centosa keepalived] #systemctl status keepalived
●keepalived.service - LVS和VRRP高可用性監視器
   已加載:已加載(/usr/lib/systemd/system/keepalived.service;已禁用;供應商預設:已禁用)
   活動:不活動(死機)
[root @ centosa keepalived] #systemctl restart keepalived
[root @ centosa keepalived] #systemctl status keepalived
keepalived.service - LVS和VRRP高可用性監視器
   已加載:已加載(/usr/lib/systemd/system/keepalived.service;已禁用;供應商預設:已禁用)
    活動: 活動(運行)

[root @ centosa keepalived] #ssh 192.168.0.123'hostname'
root@192.168.0.123的密碼:  

centosa

證明連接工作已經完成

[root @ centosa keepalived] #mysql --defaults-file = .my.remotehost.cnf --host = 192.168.0.101   -e“select @@ hostname”
+ ------------ +
| @@ hostname |
+ ------------ +
| centosb     |
+ ------------ +
[root @ centosa keepalived] #mysql --defaults-file = .my.remotehost.cnf --host = 192.168.0.102   -e“select @@ hostname”
+ ------------ +
| @@ hostname |
+ ------------ +
| centosa     |
+ ------------ +

仔細檢查它是否正在運行......

[root @ centosa keepalived] #systemctl status keepalived | grep活躍
    活動: 活躍  

[root @ centosb keepalived] #systemctl status keepalived | grep活躍
    活動: 活躍  

測試當前VIP ..停止mysql並觀看相同的VIP更改主機...

[root @ centosa keepalived] #mysql --defaults-file = .my.remotehost.cnf --host = 192.168.0.123   -e“select @@ hostname”
+ ------------ +
| @@ hostname |
+ ------------ +
| centosa     |
+ ------------ +
[root @ centosa keepalived] #systemctl stop mysqld  
[root @ centosa keepalived] #mysql --defaults-file = .my.remotehost.cnf --host = 192.168.0.123   -e“select @@ hostname”
+ ------------ +
| @@ hostname |
+ ------------ +
| centosb     |
+ ------------ +

2019年4月10日星期三

有時慢速數據庫..不是數據庫......

所以我最近被要求調查為什麼更新的MySQL 5 .6比舊的5.5慢

所以我開始尋找標準變量和緩存等等。

測試用例是一個簡單的例程,在5.6上運行的時間比在5.5上運行時長兩倍。

添加到混合.. 5.6版本有兩倍Innodb_buffer_pool_size,當然更多ram整體。

所以我用MySQLslap開始了一些測試......

Mysqlslap測試顯示它在5.6上較慢

5.6:
mysqlslap --defaults-file =。/。my.cnf --concurrency = 150 --iterations = 130 -query = / test.sql --create-schema = applicationdata --verbose
基準
運行所有查詢的平均秒數:0.028秒
運行所有查詢的最小秒數:0.019秒
運行所有查詢的最大秒數:0.071秒
運行查詢的客戶端數量:150
每個客戶端的平均查詢數:1

5.5:
mysqlslap --defaults-file =。/。my.cnf --concurrency = 150 --iterations = 130 --query = / test.sql --create-schema = applicationdata --verbose
基準
運行所有查詢的平均秒數:0.015秒
運行所有查詢的最小秒數:0.011秒
運行所有查詢的最大秒數:0.024秒
運行查詢的客戶端數量:150
每個客戶端的平均查詢數:1


所有這些都違背了公共基準
http://dimitrik.free.fr/blog/archives/2013/02/mysql-performance-mysql-56-ga-vs-mysql-55-32cores.html

所以我檢查了磁盤級別 -

5.6:
#dd if = / dev / zero of = test bs = 1048576 count = 2048
2048 + 0條記錄
2048 + 0記錄了
複製2147483648字節(2.1 GB),25.7401 s,83.4 MB / s

#dd if = test of = / dev / null bs = 1048576
2048 + 0條記錄
2048 + 0記錄了
複製2147483648字節(2.1 GB),29.1527 s,73.7 MB / s

5.5:
#dd if = / dev / zero of = test bs = 1048576 count = 2048
2048 + 0條記錄
2048 + 0記錄了
複製2147483648字節(2.1 GB),19.9214秒,108 MB / s

#dd if = test of = / dev / null bs = 1048576
2048 + 0條記錄
2048 + 0記錄了
複製2147483648字節(2.1 GB),20.0243秒,107 MB / s



無論MySQL如何,5.5的磁盤都比較慢。 所以在這種情況下....看看修復磁盤速度.. MySQL運行正常,並將。