Mayroon akong problema sa Zabbix database upgrade sa Release 2.0, dahil ako ay sira ang db ( https://support.zabbix.com/browse/ZBX-4729 ). Zabbix Hindi ako isang dalubhasa, kaya ako ay hindi mananagot sa mga pinsala mo. Dapat mong malaman kung ano ang iyong ginagawa. Dapat mong patakbuhin ang mga hakbang sa production server. Ginawa ko ito nang maraming beses sa pagsubok ng server.
Narito ang aking mga hakbang na ito:
- Lumikha ng backup ng DB (+ data structure).
Lumikha ako ng maliit na script Aling taasan ang bilis ng mga backup na, dahil ito ay gumagamit ng higit pang mga core CPU. Huwag patakbuhin ang script na ito kung mayroon kang single core o lamang ng isang CPU. Ang script na ito ay gagana lamang sa MySQL user na walang password. Kung gumamit ka ng MySQL may user password, dapat kang magdagdag <user>-u at-p <password> sa mysqldump linya.
#!/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 - Dump lamang ang data mula sa sira ang DB.
Gamit ang hakbang na ito ko lamang dumped data, walang kaayusan. Muli, maaari mong gamitin ang script sa itaas, ngunit dapat mong baguhin linya
mysqldump --single-transaction --master-data $db $table > $table.sql&
upang ito
mysqldump --single-transaction --master-data --no-create-db --no-create-info $db $table > $table.sql&
Huwag kalimutan para sa MySQL user na may password. Kailangan mong magdagdag <user>-u at-p <password> sa mysqldump linya. - Lumikha ng bagong database
<database_name> baguhin sa iyong bagong database ng pangalan
mysql -u<user> -p<password> -e 'create database <database_name> character set utf8 collate utf8_general_ci;' - Mag-upload ng bagong data ng sample DB mula sa pag-install
Kailangan mong mag-upload ng database ng istraktura mula sa huling matatag 1.8.x bersyon. MySQL file ay nasa Zabbix source file sa paglikha / schema direktoryo. Baguhin <database_name> sa iyong bagong database ng pangalan
mysql -u<user> -p<password> <database_name> < mysql.sql
Hindi mo kailangang mag-upload ng mga file mula sa paglikha / direktoryo ng data (data.sql, images_mysql.sql), dahil ang mga ito ay nasa iyong database. - Upload dumped data mula sa nasira DB
Upang mag-upload Mayroon akong Katulad na script, whith parallel na mag-upload ng mga talahanayan sa MySQL database. Kailangan mong baguhin ang FILES parameter. Muli, kung gumamit ka ng MySQL may user password, dapat mong idagdag-p MySQL <password> linyang ito.
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 - I-clear ang ini-index
Bago mag-upgrade, kailangan mong i-drop ang ini-index. Mga hakbang ay nakasulat sa Zabbix upgrade dokumentasyon.
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 sa 2.0
Ang huling hakbang na kailangan ng maraming oras. Mag-upgrade ay tumatakbo lamang 1 thread, kaya ito ay tumatagal ng masyadong mahaba. Aking 13 gigabytes database ay na-convert pagkatapos 19h 30 m sa 2x Xeon 2.8GHz, 8GB RAM, RAID10, MySQL InnoDB +. Kaya maging mapagpasensya.
Ngayon ay maaari mong patakbuhin ang pag-upgrade patch mula zabbix-1.9.x (o 2.0) / upgrades/dbpatches/2.0/mysql direktoryo.
./upgrade <database_name>
Maaari mong subaybayan ang pag-unlad sa
mysql -u<user> -p<password> -e 'show processlist;'
Matapos ang mga hakbang na ito na iyong repaired database, patched sa bersyon 2.0 at maaari mo na ngayong i-install Zabbix binaries, at PHP GUI.











































Kaugnay na mga Artikulo
3 mga user tumugon sa ang post na ito
Depende sa setup ng iyong MySQL database, ito ay poibssle Iyon Maaari mo pa ring mag-log in gamit ang username na root at walang password. Ito ay massively hindi secure na, ngunit tila na maging default para sa maraming mga pag-install.
Uy,
salamat para sa Paano Gawin at mga script.
Hulaan ko may isang typo sa unang script sa Line 10 Sa halip ng
" for table in 'mysql $db -e 'show tables' | egrep -v 'Tables_in_' `; do "ito ay kailangang maging
" for table in `mysql $db -e 'show tables' | egrep -v 'Tables_in_' `; do "kung hindi makakakuha ka ng hindi inaasahang at EOL error.
mga pagbati,
alexx
oo, may typo, repaired, thx.
Magbilin
Mangyaring Tandaan: Ang pag-moderate ng Komento siguro aktibo kaya hindi na kailangan upang muling isumite ang iyong komento