Am avut probleme cu upgrade-ul de baze de date Zabbix la versiunea 2.0, pentru că am corupt dB ( https://support.zabbix.com/browse/ZBX-4729 ). Zabbix Eu nu sunt un expert, deci eu nu sunt responsabil pentru daunele tine. Ar trebui să știi ce faci. Ar trebui să rulați acest pași pe serverul de producție. Am făcut acest lucru de mai multe ori pe serverul de testare.
Aici sunt pașii mei:
- Crearea de backup de DB (date + structură).
Am creat scenariul mic, care crește viteza de rezervă, deoarece foloseste mai multe nuclee CPU. Nu rula acest script, dacă aveți un singur nucleu sau un singur procesor. Acest script funcționează doar cu utilizatorul MySQL, fără parolă. Dacă utilizați MySQL cu parola de utilizator, trebuie să adăugați <utilizator>-u și-p <parola> la mysqldump linie.
#!/bin/bash
db=$1
if [ "$db" = "" ]; then
echo "Usage: $0 db_name"
exit 1
fi
mkdir $$
cd $$
clear
for table in `mysql $db -e 'show tables' | egrep -v 'Tables_in_' `; do
echo "Dumping $table"
mysqldump --single-transaction --master-data $db $table > $table.sql&
done
if [ "$table" = "" ]; then
echo "No tables found in db: $db"
fi - Arunca doar date din DB corupt.
Cu acest pas am aruncat doar date, nici o structură. Din nou, aveți posibilitatea să utilizați mai sus script-ul, dar trebuie să se schimbe linie
mysqldump --single-transaction --master-data $db $table > $table.sql&
la această
mysqldump --single-transaction --master-data --no-create-db --no-create-info $db $table > $table.sql&
Nu uita de utilizator MySQL cu parolă. Trebuie să adăugați <utilizator>-u și-p <parola> la mysqldump linie. - Creați o nouă bază de date
<nume_bazădedate> schimba la noul tău nume de baze de date
mysql -u<user> -p<password> -e 'create database <database_name> character set utf8 collate utf8_general_ci;' - Încărcați un nou date eșantion de la instalare DB
Aveți nevoie încărcați structura bazei de date de la ultima versiune stabilă 1.8.x. Fișierele MySQL sunt în Zabbix fișierul sursă în crea directorul / schemă. Schimba <nume_bazădedate> pentru noul tău nume de baze de date
mysql -u<user> -p<password> <database_name> < mysql.sql
Nu aveți nevoie încărca fișiere de director creați / date (data.sql, images_mysql.sql), deoarece acestea sunt deja în baza de date. - Incarcare date fac obiectul unui dumping din DB corupt
Pentru a încărca am scenariu similar, scutiți încărca paralel tabele de baze de date MySQL. Ai nevoie de a modifica fișierele parametru. Din nou, dacă utilizați MySQL cu parola de utilizator, trebuie să adăugați-p mysql <parola> această linie.
FILES=./db/*
db=$1
if [ "$db" = "" ]; then
echo "Usage: $0 db_name"
exit 1
fi
for f in $FILES
do
echo "Processing $f file..."
# take action on each file. $f store current file name
mysql $db < $f&
done - Indicii clare
Înainte de upgrade, trebuie să renunțe la indici. Pași sunt scrise în documentația de upgrade Zabbix.
mysql -u<user> -p<password> -e 'DROP INDEX node_cksum_1 ON node_cksum;'
mysql -u<user> -p<password> -e 'DROP INDEX node_cksum_cksum_1 ON node_cksum;' - Patch dB și 2.0
Acest etapelor finale nevoie de o mulțime de timp. Upgrade-ul se execută numai un fir, astfel încât este nevoie de prea mult timp. Meu de 13 de gigabytes de date a fost transformată după 19h de 30 m pe 2x Xeon 2,8 GHz, 8 GB RAM, RAID10, MySQL + InnoDB. Astfel încât să fie pacient.
Acum puteți rula patch-uri de upgrade de la zabbix-1.9.x (sau 2.0) / director upgrades/dbpatches/2.0/mysql.
./upgrade <database_name>
Puteți monitoriza progresul cu
mysql -u<user> -p<password> -e 'show processlist;'
Dupa acesti pasi ai reparat baza de date, patch-uri pentru versiunea 2.0, iar acum puteți instala Zabbix binare, și PHP GUI.











































Articole pe aceeași temă
3 utilizatori au răspuns în acest post
În funcție de configurare a bazei de date MySQL, este poibssle că ați putea fi în continuare posibilitatea de a conecta cu rădăcină numele de utilizator și o parolă. Este masiv nesigur, dar pare a fi implicit pentru multe instalări.
Hei,
mulțumiri pentru ghid și script-uri.
Cred că există o greșeală de scriere în primul scenariu în linia 10 În loc de
" for table in 'mysql $db -e 'show tables' | egrep -v 'Tables_in_' `; do "ar trebui să fie
" for table in `mysql $db -e 'show tables' | egrep -v 'Tables_in_' `; do "altfel vei avea eroare neașteptată și EOL.
Salutări,
Alexx
Da, există o greșeală de tipar, reparat, thx.
Lăsați un mesaj
Vă rugăm să Notă: moderarea comentariilor poate activa astfel încât nu este nevoie să retrimiteți comentariile dvs.