Portál AbcLinuxu, 14. května 2025 05:51
zdravim,
muzete mi prosim pomoct ze scriptem pro zalohu? Ted mam jeden, ktery mi zalohuje jen db, ktere jsou ve scriptu napsane, ale potreboval bych, aby zalohoval vsechno - muzete mi prosim poradit
1) jak zazalohovat vse
2) jak zazalohovat jen db s prefixem "ahoj_"
script ktery pouzivam (zazalohuje pouze ty dve vybrane db):
DB_USER="user"
DB_PASSWORD="pass"
BACKUPDIR=/home/zaloha
JEDNA_DB="ahoj"
DRUHA_DB="nevim"
DATE=`date +%Y%m%d-%H%M`
[ -d ${BACKUPDIR} ] || mkdir -p ${BACKUPDIR}
echo -e '\E[31m'"Backupping JEDNA infos"'\E[0m'
mysqldump --user=$DB_USER --password="$DB_PASSWORD" --add-drop-table $JEDNA_DB \
> $BACKUPDIR/PRVNIBackup-$DATE.sql
echo -e '\E[31m'"Backupping DRUHA infos"'\E[0m'
mysqldump --user=$DB_USER --password="$DB_PASSWORD" --add-drop-table $DRUHA_DB \
> $BACKUPDIR/DRUHABackup-$DATE.sql
Dekuju za pomoc
ad 1)
viz man mysqldump, parametr --all-databases
ad 2)
Napr. si vypsat vsechny DB (show databases), vybrat z nich pozadovane a predat je mysqldump (pozor na parametr --databases). Prikazy lze snadno spojit rourami. Pokud pro kazdou DB vlastni dump soubor, pak pouzit for DB in ....
NOW=$(date +"%d-%m-%Y")
DBS="$(/usr/bin/mysql -u root -h localhost -pxxx -Bse 'show databases')"
for db in $DBS
do
FILE=/zaloha/mysql/mysql-$db.$NOW-$(date +"%T").gz
/usr/bin/mysqldump -u root -h localhost -pxxx $db | /bin/gzip -9 > $FILE
done
1) zkousel jsem ten jeden radek zmenit z
mysqldump --user=$DB_USER --password="$DB_PASSWORD" --add-drop-table
na
mysqldump --user=$DB_USER --password="$DB_PASSWORD" --add-drop-table --all-databases
- nejdrive se objevovalo hafo textu (sql export), a hned se to zmenilo na divne znaky -
␊ ⎽␊ ≥┴ýš␋┌▒ ␌␌▒ 4│.\┼S␊⎼┴␊⎼ ⎽␊ ⎽┼▒žÃ└ ┴é⎽├ ␌⎺ ┼␊┘┴Ã␌␊ ⎻⎺␍┌␊ ≥▒┴␊␍␊┼ý␌ ⎻⎼▒┴␋␍␊┌ ▒ ├▒┐ ▒␉≤ ⎼áÄů└ ⎻Å␋┼áš␊┌ ┴ž␍≤ ┼Ä␌⎺ ┼▒┴Ã␌, ┼▒⎻ÅÃ┐┌▒␍ ⎽⎻␊␌␋á┌┼à ␋├␊└≤, ┴┌▒⎽├┼à ─┤␊⎽├≤ ▒ ┴ ⎻⎺␍⎽├▒├Ä ␌⎺ ┼␊┘┌é⎻␊ °┤┼±┤┘Ã␌à ≥á≥␊└Ã. \┼\┼\┼\┼\┼\┼\┼\┼\┼========================================================\┼\'\'\'E─┤␋┌␋␉⎼␋┤└ - W⎺W ⎼▒├≤ 8│ (⎺ 800 ⎻⎼⎺␌␊┼├ ┴≤ššà ┼␊ž┌␋ ␉┌␋≥≥.)\'\
Myslim ze jsem to asi dal na spatne misto
Jak seda v tom automyqldump.sh udelat to, ze kdyz to spustim tak mi to vytvori komplet zalohu? -me to pri spusteni vytvori jen zalohohu vypsanych db... -existuje nejake *.* ?
Dik
Já používám automysqlbackup.sh - ke stažení na sourceforge.net - minimálně pro inspiraci.
pouzivam toto:
mysqldump -u user -password --all-databases | gzip > /path/mysql_`date '+%Y-%m-%d'`.sql.gz
cat /etc/cron.daily/zaloha_mysql.sh
#!/bin/bash
# Script na zalohovani databazi MySQL
# Obnova se provadi prikazem:
# mysql -udb_user -pdb_pass db_name < backup-file.sql
db_user=user
db_pass=password
db_host=localhost
host=$HOSTNAME
datum=$(date +%F)
if [ ! -e /var/backup/mysql ] ; then
mkdir /var/backup
mkdir /var/backup/mysql
fi
echo
echo zalohuji appsrv...
echo
mkdir /var/backup/mysql/$datum
cd /var/backup/mysql/$datum
for i in $( mysql -u$db_user -p$db_pass -h $db_host -s -e "show databases " );
do
echo Zálohuji $i
mysqldump -u$db_user -p$db_pass -h $db_host --opt --quick $i > $i.sql
done
cd ..
tar -cf - ./$datum/* |gzip -f9 > $host.$datum.tar.gz
rm -rf /var/backup/mysql/$datum
#echo
#echo zalohuji zalohy...
#echo
#scp /var/backup/router/router.$datum.tar.gz root@nejaky.server.ltd:/var/backup/router/
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.