Portál AbcLinuxu, 10. května 2025 13:54
Pouzivam script automysqlbackup.sh a jsem s nim maximalne spokojen. Posila reporty emailem, takze vidis co se delo. Nenasel jsem sice zadnou volbu pro automatickou opravu, ale kdyz budes kontrolovat reporty, tak to muzes obnovit sam.
Já zálohuji tak, že si v noci rsyncnu adresář /var/lib/mysql na jiný stroj.
Viz man rsync.
V noci je minimální provoz, takže že by se s nějakou tabulkou zrovna pracovalo je nepravděpodobné.
Pokud se tak přece stane, žádné fatální následky to nemá. Tabulku ze zálohy nechám jen opravit ....
Jinak oprava poškozených tabulek to je věc problematická, to bych raději dělal ručně, ne automaticky.
V prvé řadě je kladena otázka. Proč k poškození vůbec došlo? Nemělo by a pokud ano, je to podezřelé.
Buď vyply proud, mám vadný disk, nebo se databáze nějak pobláznila. Těžko ji věřit s obnovou tabulek, možná je to už úplný blázen, raději bych zálohoval před obnovou tabulek.
Já jsem ještě nikdy bezdůvodně žádnou tabulku poškozenou neměl.
Opravy větších tabulkem mohou trvat celé hodiny.....
Spíš by bylo záhodno se o tom brzy dozvědět.
Nejbezpecnejsi zpusob, ze kterym jsem se doposud setkal, je pouzit replikaci na jiny stroj, a ten pak zalohovat. Jedna aktivni zaloha je pak pripravena (v pripade hw havarie na prvnim stroji), v pripade omylneho smazani tabulky nebo databaze se stejny omyl zreplikuje i na druhy stroj, pak je pravy cas na to obnovit starsi zalohu vytvorenou na tom druhem stroji.
Ahoj,
dle meho nazoru: replikace je zbytecne slozite reseni na to co potrebujete a jsou k tomu potreba dva stroje. Ja bych pouzil mysqldump s volbou --force no a jeste bych myisamchckem (jestli sou to myisam tabulky) kontroloval, zda jsou tabulky ok a kdyz ne, tak to rucne zpravil
S pozdravem,
David
Na Vasem miste bych se v prvni rade zajimal kde nebo proc se Vam poskozuji tabulky v DB, nedochazi k havarii mysql demona/vypadky napajeni, nepouzivate nejak bugovou verzi mysql, proste trochu zkoumat pricinu, samo od sebe se to jiste nedeje.
Nasledne pak muzete zalohovat bez problemu at uz jednoduse pomoci
napr. "zjednodusene" takto
DATE=`date +%Y%m%d`
mysqldump -u root -p heslo --all-databases | gzip > backup_mysql_$DATE.gz
nebo pomoci jiz zminovaneho AutoMysqlBackup script a nebo si napsat nejake svoje vlastni reseni, nedoporucuji rsyncovat ani jinak manipulovat primo se soubory databazi
(/var/lib/mysql apod). Replikace cele DB je zrejme pro Vas jako kanon na vrabce.
/usr/bin/mysql --user=${MYSQL_USER} --password=${MYSQL_PASS} --host=${MYSQL_HOST} mysql << EOF | sed '1d' | while read LINE; SHOW DATABASES; EOF do echo " mysqldump (${LINE})"; /usr/bin/mysqldump -B "${LINE}" -c -e -l -Q --complete-insert --user=${MYSQL_USER} --password=${MYSQL_PASS} --host=${MYSQL_HOST}| gzip > "${out_dir}/${LINE}.gz"; done1x v noci spoustim skript, co dela gzip a nasledne rsync na jiny stroj. taky se priklanim, aby se nemanipulovalo s binarkama /var/lib/mysql - obcas to sice funguje, ale clovek MUSI vedet co dela.
Zálohuji do samostatných adresářů pro jednotlivé dny v týdnu a k tomu 2x měsíčně, eliminuji tím případné poškození tabulek, aby byla možná obnova z nejbližší verze, která byla ještě v pořádku.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.