Zabbix-server遷移資料庫

來源:互聯網
上載者:User

標籤:my.cnf   zabbix   mysql   掛載   資料庫遷移   

今天登陸zabbix,發現zabbix-server磁碟已經到達了80%,發出了警示,

650) this.width=650;" src="https://s1.51cto.com/oss/201711/20/4bb3b3971c3d830bbf9fa09978c17de8.png" title="1.png" alt="4bb3b3971c3d830bbf9fa09978c17de8.png" />


650) this.width=650;" src="https://s1.51cto.com/oss/201711/20/96be50916b6449b67d120bfc74f25950.png" title="1.png" alt="96be50916b6449b67d120bfc74f25950.png" />


登入伺服器一看,使用#ll -Shil發現以下幾個表太大了,佔用了磁碟空間:

650) this.width=650;" src="https://s1.51cto.com/oss/201711/20/c9ffa5361b2d200616b1f5d90b8176a2.png" title="1.png" alt="c9ffa5361b2d200616b1f5d90b8176a2.png" />


在mysql裡查看也是這樣(zabbix的databases就叫zabbix):

mysql> select table_name, (data_length+index_length)/1024/1024 as total_mb, table_rows from information_schema.tables where table_schema=‘zabbix‘;+----------------------------+---------------+------------+| table_name                 | total_mb      | table_rows |+----------------------------+---------------+------------+| events                     | 2876.00000000 |   23659702 || history                    | 3005.60937500 |   36816179 || history_uint               | 2762.26562500 |   35895354 || trends_uint                | 1189.60937500 |   16612396 || trends                     |  831.59375000 |   11548652 |+----------------------------+---------------+------------+113 rows in set (0.08 sec)


上面幾個就是資料比較大的表,那麼我們重點就是對他們開刀。由於資料量太大,按照普通的方式delete資料的話基本上不太可能。所以決定直接採用truncate table的方式來快速清空這些表的資料,再使用mysqldump匯出資料,刪除共用資料表空間資料檔案,重新匯入資料。


於是我們先停止zabbxi-server。

 systemctl stop zabbix-server systemctl stop httpd


然後登陸mysql,清除曆史資料:

[[email protected] ~] # mysql -uroot -pmysql > use zabbix;Database changedmysql > truncate table history;Query OK, 123981681 rows affected (0.23 sec)mysql > optimize table history;1 row in set (0.02 sec)mysql > truncate table history_uint;Query OK, 57990562 rows affected (0.12 sec)mysql > optimize table history_uint;1 row in set (0.03 sec)


然後對原有的資料庫進行備份,#mysqldump -uroot -p密碼 zabbix > /home/zabbix_db.sql


備份完畢之後,就可以# systecmtl stop mariadb關閉掉mysql,同時刪除掉共用資料表空間資料檔案,#rm -rf /var/lib/mysql/ib*


然後準備一個空間比較大的盤,比如這個新磁碟就叫ZabbixDB,然後在裡面建立一個DB檔案夾。然後將/ZabbixDB/DB的所屬組和使用者都改成mysql,語句是:# chown -vR mysql:mysql /ZabbixDB/DB


改完了之後再給予700許可權:# chmod -vR 700 /etc/ZabbixDB/DB


然後就把整個/var/lib/mysql*的內容都匯入到ZabbixDB/DB裡:#cp -av /var/lib/mysql* /ZabbixDB/DB


修改my.cnf,在[mysqld]添加一句:innodb_file_per_table=1,這是修改InnoDB為獨立資料表空間模式,每個資料庫的每個表都會產生一個資料空間。同時也要修改資料庫存放目錄:

650) this.width=650;" src="https://s4.51cto.com/oss/201711/20/10109693859979ee599849948a269afd.png" title="1.png" alt="10109693859979ee599849948a269afd.png" />


這個時候就可以# systemctl start mariadb重啟mysql服務,啟動完後查看一下剛剛在my.cnf裡設定的“獨立資料表空間”功能是否OK,檢查語句是 show variables like ‘%per_table%‘;,如果看到“ON”,就是說明已經開啟了:

650) this.width=650;" src="https://s2.51cto.com/oss/201711/20/07f6c768b6590694105a9040b5edd929.png" title="1.png" alt="07f6c768b6590694105a9040b5edd929.png" />


然後就可以還原資料庫了:

[[email protected] zabbix]# mysql -uroot zabbix < /home/zabbix_db.sql


如果這個時候報錯,出現類似這樣的錯誤:

650) this.width=650;" src="https://s2.51cto.com/oss/201711/20/4e1b2903d176a7b8792e58600012a67c.png" title="1.png" alt="4e1b2903d176a7b8792e58600012a67c.png" />

這個可能是資料庫緩衝造成的,這個時候可以在資料庫裡使用#FLUSH TABLES; ,不過這多半會不好使。


那麼這個時候,就去新的mysql目錄夾,即/ZabbixDB/DB,然後進入資料庫zabbix,發現這個檔案夾有很多檔案,但是每一個檔案都是既有一個.ibd又有一個.frm的,而這個“globalmacro”是只有ibd而沒有.frm的,所以這個時候我們可以先把這個globalmacro.ibd轉移到別的地方去,然後重新執行

# mysql -uroot zabbix < /home/zabbix_db.sql

還原資料庫即可。


最後啟動zabbix-server: 

systemctl start zabbix-serversystemctl start httpd


最後查看一下磁碟空間情況:

650) this.width=650;" src="https://s2.51cto.com/oss/201711/20/8dd602ef3980638dbb38e3be1310bd94.png" title="1.png" alt="8dd602ef3980638dbb38e3be1310bd94.png" />


發現整個磁碟運行情況都OK了~,至此整個zabbix的資料庫遷移完成。


[參考資料]https://stackoverflow.com/questions/17914446/mysqldump-problems-with-restore-error-please-discard-the-tablespace-before-imp

本文出自 “生活就是等待戈多” 部落格,請務必保留此出處http://chenx1242.blog.51cto.com/10430133/1983612

Zabbix-server遷移資料庫

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.