Zabbix 數據庫遷移

背景:ZABBIX的環境是LNMP,MySQL的架構是M-M主備模式,單臺服務器SSD硬盤800G。監控主機日漸增多,空間不足,遷移到一樣架構下的SAS盤2T空間。mysql

架構:A 192.168.0.100 -> B 192.168.0.101 -> C 192.168.0.102 -> D 192.168.0.103
步驟
一、搭建級聯從庫
二、修改zabbix server配置,加讀鎖,切庫
三、驗證sql

 

一、搭建級聯從庫
1> 檢查開啓B上的兩個參數 log_bin  log_slave_updates數據庫

mysql> show variables like 'log_bin';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_bin       | ON    |
+---------------+-------+
mysql> show variables like 'log_slave_updates';    --log_slave_updates是隻讀參數,修改該參數須要重啓數據庫
+-------------------+-------+
| Variable_name     | Value |
+-------------------+-------+
| log_slave_updates | ON    |
+-------------------+-------+

2> 配置環境
  1) B C安裝lz4
    yum install -y lz4
  2) 配置B到C的SSH免認證登錄緩存

  3) 關閉C的mysql服務,並清空data目錄下文件服務器

    service mysqld stop
  
4) 熱備B上數據
架構

nohup /usr/bin/innobackupex --user=root \
--password=xxx \
--parallel=4 \
--socket=/tmp/mysql.sock \
--slave-info --safe-slave-backup \
--no-timestamp \
--stream=xbstream . |\
lz4 -B4 |\
ssh root@192.168.0.102 \
"cat - | lz4 -d -B7 | xbstream -x -C /data/mysql/data" &

  5) 到C備份的文件目錄下,將數據恢復到一致性位點,對應 FTWRL 時間點app

innobackupex --apply-log /data/mysql/data

  6) 啓動C的mysql服務ssh

chown -R mysql:mysql /data/mysql/
service mysqld start

3> 搭建 B -> C 從庫socket

  1) 打開備份目錄中xtrabackup_binlog_info文件,替換MASTER_LOG_FILE,MASTER_LOG_POSspa

CHANGE MASTER TO
  MASTER_HOST='192.168.0.101',
  MASTER_USER='replication',
  MASTER_PASSWORD='XXX',
  MASTER_PORT=3306,
  MASTER_LOG_FILE='mysql-bin.000312',
  MASTER_LOG_POS=149457383,
  MASTER_AUTO_POSITION=0

  2) C上啓動slave

reset master;      --從新搭建主從的時候要執行
reset slave;
start slave;
show slave status\G

  C -> D 的主從搭建,同 B -> C,要注意的是,切換後,若是要搭建 C-D 雙主架構,須要關閉D上log_slave_update參數。 

 

二、修改zabbix server配置,切庫

1> 中止zabbix server服務

service zabbix-server stop

2> 修改 zabbix_server.conf

DBHost=192.168.0.102

3> C上中止salve

stop slave

4> 啓動zabbix server服務

service zabbix-server start

  數據庫切換啓動後,zabbix會從新同步緩存數據,此時查看數據庫processlist,會發現有與StartDBSyncers參數設置個數相同的線程在查詢發送數據。時刻關注zabbix_server日誌,若是出現下面的問題,同步時間會異常緩慢,要終止同步須要先中止server進程,而後 kill 掉數據庫中的鏈接。問題解決方案,可參考下面記錄。

 

問題記錄:

一、zabbix server後臺日誌出現defunct狀態,而且日誌中有out of memory報錯

 1 查看zabbix server 進程
 2 bestpay  29745 28549  0 23:34 ?        00:00:00 [zabbix_server] <defunct>
 3 bestpay  29746 28549  0 23:34 ?        00:00:00 [zabbix_server] <defunct>
 4 bestpay  29747 28549  0 23:34 ?        00:00:00 [zabbix_server] <defunct>
 5 root     29817 25359  0 23:37 pts/2    00:00:00 tail -f /data/dataLogs/zabbix_server/zabbix_server.log
 6 root     29819 27235  0 23:37 pts/5    00:00:00 grep zabbix_server
 7 查看zabbix_server.log
 8   28972:20180605:233508.259 Zabbix agent item "pyora[{$USERNAME},{$PASSWORD},{$ADDRESS},{$DATABASE},sga_shared_pool]" on host "yfkdbrsh-sh-159-33" failed: first network error, wait for 15 seconds
 9  29706:20180605:233510.358 __mem_malloc: skipped 8 asked 755232 skip_min 4488 skip_max 722096
10  29706:20180605:233510.358 [file:dbcache.c,line:2805] zbx_mem_realloc(): out of memory (requested 755232 bytes) 11  29706:20180605:233510.358 [file:dbcache.c,line:2805] zbx_mem_realloc(): please increase HistoryIndexCacheSize configuration parameter 12  29549:20180605:233510.359 __mem_malloc: skipped 8 asked 755232 skip_min 4488 skip_max 722096
13  29549:20180605:233510.359 [file:dbcache.c,line:2805] zbx_mem_realloc(): out of memory (requested 755232 bytes)
14  29549:20180605:233510.359 [file:dbcache.c,line:2805] zbx_mem_realloc(): please increase HistoryIndexCacheSize configuration parameter
15  28549:20180605:233510.359 One child process died (PID:29706,exitcode/signal:1). Exiting ...
16  28549:20180605:233512.381 syncing history data...
17  28549:20180605:233534.219 slow query: 21.830923 sec, "update items set lastlogsize=3833923,mtime=0 where itemid=285141;

解決方案:

zabbix 參數調整:
HistoryIndexCacheSize=2048M --原來沒有,建議根據內存大小設置一個緩存值,取值範圍128K-2G,默認4M,zabbix3.0.0後版本支持
StartDBSyncers=16    --sync 數據的時候啓動幾個進程來幹活,根據數據庫壓力負載來進行設置,值過大會形成數據庫阻塞,取值範圍1-100,默認值4
系統內核參數調整:
#kernel.shmall = 4294967296  --原有參數值過大,不合理,致使out of memory的根本緣由
kernel.shmall =  16252928  --正確的值是按照物理內存除以OS block size的值

  

 參考資料:

一、https://www.zabbix.com/documentation/3.4/manual/appendix/config/zabbix_server?s[]=historyindexcachesize

 

做者:zero_gg
出處:http://www.cnblogs.com/zero-gg/

若是你真心以爲文章寫得不錯,並且對你有所幫助,那就不妨小小打賞一下吧,若是囊中羞澀,不妨幫忙「推薦"一下,您的「推薦」和」打賞「將是我最大的寫做動力!

本文版權歸做者全部,歡迎轉載,但未經做者贊成必須保留此段聲明,且在文章頁面明顯位置給出原文鏈接.

相關文章
相關標籤/搜索