S4Y vServer SuSe 9.0 --> 9.3 Walkthrough

  • Thread starter Thread starter Flow
  • Start date Start date
F

Flow

Guest
Tagchen! Ich möchte gerne demnächst meinen vServer auf SuSe 9.3 upgraden. Ich hab von Linux immer noch wenig bis gar keine Ahnung (bitte nicht schlagen). Deshalb wollte ich Euch bitten, doch die folgende Vorgehensweise zu überprüfen und ggf. zu korrigieren:

A. Sicherung der Daten

1. Als Confixx Administrator die Daten der einzelnen User per "Backup" in .zip- Files verpacken lassen. Diese aus dem Verzeichnis "/usr/local/confixx/backup/web" downloaden.

2. Per Putty einloggen und alle MySQL- Datenbanken folgendermassen dumpen:

mysqldump --user=root --pass=meinrootpasswort --all-databases



B. Von S4Y Neuinstallation beantragen

Sollte automatisch alles erledigen


C. Rückspielen der Daten

1. Die MySQL- DBs wieder einspielen mit:

- mysql --user=root --password=meinrootpasswort database < /pfad/dumpfile.sql

2. Unter Confixx einen neuen User anlegen, damit es erkennt, dass bereits User existieren und entsprechende Ordner anlegt.

3. Die .zip- Files nach "/srv/www/" uploaden und entpacken:

"unzip dateiname.zip"



Fragen:

Erste und wichtigste Frage ist natürlich: Wird das so funktionieren?

Des weiteren: Ich habe gehört, dass man nicht alle Datenbanken zusammen dumpen sollte, da sich MYSQL aufhängen kann. Ich habe über hundert Benutzer, deswegen würde mich das an******. Ich kann es schon probieren, oder?

Und schliesslich: Wie kann ich mehrere .zip- Files mit einem Befehl entpacken?


Thx für Eure Hlfe! ;)
 
Last edited by a moderator:
Geht so. Allerdings werden so alle Kunden Ihre Mailaccounts verlieren.

Ich mach sowas mit den folgenden Scripten.
Allerdings geh ich von der selben OS Version aus.
Keine Ahnung was passiert, wenn die OS VERsion dann höher ist.
Kannst ja aber die Scripte anpassen, wenn nötig.

Als erstes führst du folgendes Script aus.
Alle Scripte müssen dazu in /backup liegen

Code:
#!/bin/bash

# config
ftp_upload="no"
ftp_user=""
ftp_pass=""
ftp_ip=""
ftp_dir="/"

/backup/backup.sh mail logs

/bin/tar -C /backup -c -z -f /backup/full_backup.tar.gz *.tar.gz

if [ "${ftp_upload}" = yes ]; then
    /usr/bin/ncftpput -V -u ${ftp_user} -p ${ftp_pass} ${ftp_ip} ${ftp_dir} /backup/full_backup.tar.gz
fi

rm /backup/web*.tar.gz /backup/system.tar.gz

Code:
#!/bin/bash

# config
web_dir="/srv/www/htdocs"
mail_dir="/var/spool/mail"
backup_group="backup"
#mysql_opt="--opt --allow-keywords --compatible=mysql40"    #bei mysql 4.1 db
mysql_opt="--opt --allow-keywords"
mysql_pass="mysql password"
sql_backup="yes"
mail_backup="no"
ftp_upload="no"
ftp_user="ftp user"
ftp_pass="ftp password"
ftp_ip="ftp ip"
ftp_dir="/"

test -d /backup || /bin/mkdir /backup
test -d /backup/excludes || /bin/mkdir /backup/excludes

if [ ! -n "`cat /etc/group | grep ${backup_group}`" ]; then 
groupadd ${backup_group}
fi

# system
/bin/tar cfz /backup/etc.tar.gz /etc
/bin/tar cfz /backup/confixx.tar.gz /srv/www/htdocs/confixx /usr/local/confixx
/etc/init.d/mysql stop 
/bin/tar cfz /backup/mysql.tar.gz /var/lib/mysql/confixx /var/lib/mysql/mysql
/etc/init.d/mysql start
/bin/tar -C /backup -c -z -f system.tar.gz mysql.tar.gz etc.tar.gz confixx.tar.gz *.sh excludes
/bin/rm /backup/etc.tar.gz /backup/mysql.tar.gz /backup/confixx.tar.gz
if [ "${ftp_upload}" = yes ]; then
    /usr/bin/ncftpput -V -u ${ftp_user} -p ${ftp_pass} ${ftp_ip} ${ftp_dir} /backup/system.tar.gz
fi

# users
for nr in `ls ${web_dir} | grep web\[0-9\] | sed 's/web//'`
do   
    	test -d /backup/web${nr} || /bin/mkdir /backup/web${nr}
	test -e /backup/excludes/exclude_${nr}.list || /bin/touch /backup/excludes/exclude_${nr}.list
	/bin/tar -X /backup/excludes/exclude_${nr}.list -C ${web_dir}/web${nr}/html -c -z -f /backup/web${nr}/web${nr}_html.tar.gz .
	if [ "${sql_backup}" = yes ]; then
	    for db in `echo show databases | mysql -u root -p${mysql_pass} | grep usr_web${nr}_ | sed 's/usr_web[0-9]\{1,3\}_//'`
	    do
    		/usr/bin/mysqldump ${mysql_opt} -uroot -p${mysql_pass} -hlocalhost usr_web${nr}_${db} > /backup/web${nr}/web${nr}_db${db}.sql
	    done
	    if [ "`ls /backup/web${nr} | grep web${nr}_db | wc -w`" -gt 0 ]; then
		ls /backup/web${nr} | grep web${nr}_db | xargs tar -C /backup/web${nr} -c -z -f /backup/web${nr}/web${nr}_sql.tar.gz
		/bin/rm /backup/web${nr}/web${nr}_db*.sql
	    fi
	fi
	if [ "${mail_backup}" = yes ] && [ "`ls ${mail_dir} | grep web${nr}p | wc -w`" -gt 0 ] || [ "${1}" = mail ] && [ "`ls ${mail_dir} | grep web${nr}p | wc -w`" -gt 0 ]; then
	    ls /var/spool/mail | grep web${nr}p | xargs tar -C /var/spool/mail -c -z -f /backup/web${nr}/web${nr}_mail.tar.gz
	fi
	if [ "${2}" = logs ]; then
	/bin/tar cfz /backup/web${nr}/web${nr}_logs.tar.gz ${web_dir}/web${nr}/log ${web_dir}/web${nr}/.configs
	fi
	    /bin/tar -C /backup/web${nr} -c -z -f /backup/web${nr}.tar.gz .
	    /bin/rm -r /backup/web${nr}
	if [ "`groups web${nr} | grep ${backup_group} | sed 's/web[0-9]\{1,3\}.:.ftponly.//'`" = ${backup_group} ] && [ "${1}" != mail ]; then
	    /bin/cp /backup/web${nr}.tar.gz ${web_dir}/web${nr}/files/web${nr}.tar.gz
	    /bin/chown web${nr}:ftponly ${web_dir}/web${nr}/files/web${nr}.tar.gz
	    if [ "${ftp_upload}" = yes ]; then
    		/usr/bin/ncftpput -V -u ${ftp_user} -p ${ftp_pass} ${ftp_ip} ${ftp_dir} /backup/web${nr}.tar.gz
    	    fi
	fi    
done


Zum Wiederherstellen folgendes Script verwenden:
Code:
#!/bin/bash

echo All Data will be lost!
echo Press CTRL + C to abort!
sleep 10

# config
restore_dir="/backup/restore"
web_dir="/srv/www/htdocs"
mail_dir="/var/spool/mail"
root_dir="/"
mysql_pass="mysql root passwort"

# restore
test -d ${mail_dir} || /bin/mkdir -p ${mail_dir}
test -d ${restore_dir} || /bin/mkdir -p ${restore_dir}
/bin/tar -C /backup/restore -x -z -f full_backup.tar.gz
/etc/init.d/mysql stop 
/bin/tar -C ${restore_dir} -x -p -z -f ${restore_dir}/system.tar.gz
/bin/tar -C ${root_dir} -x -p -z -f ${restore_dir}/mysql.tar.gz
/bin/tar -C ${root_dir} -x -p -z -f ${restore_dir}/etc.tar.gz
/bin/tar -C ${root_dir} -x -p -z -f ${restore_dir}/confixx.tar.gz
/etc/init.d/mysql start
for nr in `ls ${restore_dir} | grep web\[0-9\] | sed 's/web//' | sed 's/.tar.gz//'`
do
test -d ${restore_dir}/web${nr} || /bin/mkdir ${restore_dir}/web${nr}
/bin/tar -C ${restore_dir}/web${nr} -x -z -f ${restore_dir}/web${nr}.tar.gz
/bin/tar -C ${root_dir} -x -p -z -f ${restore_dir}/web${nr}/web${nr}_logs.tar.gz
test -d ${web_dir}/web${nr}/files || /bin/mkdir -p ${web_dir}/web${nr}/files
chown -c web${nr}:ftponly ${web_dir}/web${nr}/files
chmod 0755 ${web_dir}/web${nr}/files
test -d ${web_dir}/web${nr}/phptmp || /bin/mkdir -p ${web_dir}/web${nr}/phptmp
chown -c web${nr}:ftponly ${web_dir}/web${nr}/phptmp
chmod 0777 ${web_dir}/web${nr}/phptmp
test -d ${restore_dir}/web${nr}/html || /bin/mkdir ${restore_dir}/web${nr}/html
/bin/tar -C ${restore_dir}/web${nr}/html -x -p -z -f ${restore_dir}/web${nr}/web${nr}_html.tar.gz
/bin/cp -r -p ${restore_dir}/web${nr}/html ${web_dir}/web${nr}
if [ -e ${restore_dir}/web${nr}/web${nr}_mail.tar.gz ]; then
test -d ${restore_dir}/web${nr}/mail || /bin/mkdir ${restore_dir}/web${nr}/mail
/bin/tar -C ${restore_dir}/web${nr}/mail -x -p -z -f ${restore_dir}/web${nr}/web${nr}_mail.tar.gz
/bin/cp -p ${restore_dir}/web${nr}/mail/* ${mail_dir}
fi
if [ -e ${restore_dir}/web${nr}/web${nr}_sql.tar.gz ]; then
test -d ${restore_dir}/web${nr}/sql || /bin/mkdir ${restore_dir}/web${nr}/sql
/bin/tar -C ${restore_dir}/web${nr}/sql -x -p -z -f ${restore_dir}/web${nr}/web${nr}_sql.tar.gz
for db in `ls ${restore_dir}/web${nr}/sql | grep web | sed 's/web[0-9]\{1,3\}_db//' | sed 's/.sql//'`
do
echo CREATE DATABASE usr_web${nr}_${db} | mysql -u root -p${mysql_pass}
echo SOURCE ${restore_dir}/web${nr}/sql/web${nr}_db${db}.sql | mysql -uroot -p${mysql_pass} usr_web${nr}_${db}
done
fi
done
 
Last edited by a moderator:
Flow said:
2. Per Putty einloggen und alle MySQL- Datenbanken folgendermassen dumpen:

mysqldump --user=root --pass=meinrootpasswort --all-databases
Wird so vermutlich nicht funktionieren.

SUSE 9.0 verwendet MySQL 4.0.x, SUSE 9.3 verwendet MySQL 4.1.x. Bei meiner Migration von 9.0 zu 9.3 konnte ich meine mit mysqldump angelegten MySQL-Backups teilweise nicht zum Restore verwenden. Glücklicherweise hatte ich mit phpMyAdmin ebenfalls von allen Backups gemacht, welche - im Gegensatz zu den Dumps - funktionierten.

mysqldump funktioniert gut und schön, solange man nach dem Backup auf der gleichen MySQL-Version das Restore durchführt. Zum Versionswechsel (wie im Falle eines Upgrades von SUSE 9.0 auf 9.3) würde ich es nicht empfehlen.
 
Du musst so nen Dump auch mit den Optionen --opt --allow-keywords machen.
 
Danke für die Antworten... Mail- Accounts verwende ich keine, das Problem bin ich also schon mal los...

Elegantly said:
SUSE 9.0 verwendet MySQL 4.0.x, SUSE 9.3 verwendet MySQL 4.1.x. Bei meiner Migration von 9.0 zu 9.3 konnte ich meine mit mysqldump angelegten MySQL-Backups teilweise nicht zum Restore verwenden. Glücklicherweise hatte ich mit phpMyAdmin ebenfalls von allen Backups gemacht, welche - im Gegensatz zu den Dumps - funktionierten.

Oha... Wusste ich nicht. Ich dachte, wenn man eine Datenbank per phpMyAdmin speichert, dann sei das im Ergebnis dasselbe wie mit diesem Kommando... OK, dann zur Sicherheit die DBs per MyAdmin...

1. Einloggen per PHPmyAdmin als root
2. "Exportieren" klicken
3. Alle Datenbanken auswählen
4. Alle Einstellungen lassen, wie sie sind, "Senden" aktivuieren
5. Fertig

Richtig so?

@ monotek: Was bewirkt denn "--opt --allow-keywords"??

@ all: Was mich wundert ist, dass ich phpMyAdmin benutzen soll... Gibt es denn keine "direkte" Möglichkeit? Müsste es doch, oder?
 
Mit PHPmyadmin bekommst du aber nur kleienre Dumps hin. Nimm einfach die richtigen Optionen beim Dump, dann kanste das später auch Problemlos in ne andere Mysql Version einspielen...

Wenn du z.B. von ner 4.1 auf 4.0 willst machst du es wie folgt:

mysqldump --opt --allow-keywords --compatible=mysql40 -uroot -pPASSWORT -hlocalhost DATENBANK > backup.sql

Bei nem Dump was in ne höhere Version eingespielt werden soll, gibst eigentlich keine Probleme...

http://dev.mysql.com/doc/mysql/de/mysqldump.html
 
monotek said:
Bei nem Dump was in ne höhere Version eingespielt werden soll, gibst eigentlich keine Probleme...


Elegantly said:
SUSE 9.0 verwendet MySQL 4.0.x, SUSE 9.3 verwendet MySQL 4.1.x. Bei meiner Migration von 9.0 zu 9.3 konnte ich meine mit mysqldump angelegten MySQL-Backups teilweise nicht zum Restore verwenden.


Was denn nun?? :confused:
 
Flow said:
Was denn nun?? :confused:
Versuche ruhig das, was monotek dir empfohlen hat. Ich bin kein MySQL-Freak, und die Option "--compatible=mysql40" (Kompatibilität zu 4.0.x) kannte ich z.B. gar nicht. :)
 
Oh mein Gott, was für ein Desaster! Ich hab mich heute drangesetzt und versucht, alles wie oben beschrieben durchzuziehen. Hier eine kleine Aufstellung der Pannen:

1. Der Befehl, welcher für den Dump besser gewesen wäre: "mysqldump --result-file=/xyz/xyzump.sql --user=root --pass=passwort --all-databases". Wird übrigens völlig problemlos ausgeführt. Bei obigem Befehl scheint alles zuerst in den Speicher geladen, sowie in der Shell ausgegeben zu werden, was viel zu lange dauert.

2. Im Befehl zum wieder Einlesen des Dumps sollte man "database" durch den entsprechenden Namen ersetzen. Ist mir nicht ganz klar, wie das gemeint ist, denn der "all-databases" Dump hat dort einen leeren Wert. Mit " " an der entsprechenden Stelle geht's aber.

3. Und hier wird's ganz extremst seltsam: Als ich die DBs wieder einlesen wollte, wimmelte es nur so von Fehlermeldungen, dass die entsprechenden Daten bereits bestünden. Dies veranlsste mich, einen Blick auf den Speicherort zu werfen und oh Wunder:

Suse 9.3 ist installiert (das sagt zumindest cat /etc/SuSE-release). Wie man es erwarten würde, sind sämtliche Dateien gelöscht, vor allem natürlich die Daten der Confixx- Kunden. Allerdings: Die Daten der Kunden (Name, Konten, etc.), sowie sämtliche Datenbanken sind erhalten geblieben!!

Dazu mal die ganz simple Frage: WTF?????

4. Confixx liess sich nicht dazu überreden, die Kunden- Ordner wieder anzulegen. Das Hinzufügen eines neuen Kunden, wie oben beschrieben, bringt gar nix, ebensowenig das manuelle Ausführen des Updatescripts. Wie es gegangen wäre? Wer weiss? So jedenfalls nicht... Schliesslich habe ich die über 100 Kunden gelöscht und neu erstellt --> :mad: :mad: :mad:


So, dies meine kleine Geschichte der grossen Pannen, nur der Vollständigkeit halber, damit nicht jemand, der auch so ahnungslos wie ich ist, auf die blöde Idee kommt, sich auf diesen Thread zu verlassen :D



Ich werde mir sowas so bald jedenfalls nicht mehr antun, was mich zu abschliessenden Frage bringt: Kann man solche Updates eigentlich von Server4You oder ev. sonstwo (entgeltlich) durchführen lassen? Wäre mir verdammt was wert...
 
Was für Fehlermeldungen hast du denn genau bekommen?
Was hattest du eingegeben?
 
monotek said:
Was für Fehlermeldungen hast du denn genau bekommen?
Was hattest du eingegeben?

Ich nehme an, Du meinst beim Importieren der Datenbanken...

Eingegeben habe ich
Code:
mysql --user=root --password=meinrootpasswort   < /pfad/dumpfile.sql

Den genauen Laut der Meldungen habe ich nicht mehr, halt die Meldung, dass die entsprechenden Daten nicht erstellt wurden, weil sie bereits bestanden...
 
Achso. Ich dachte du hast eins meiner Scripte verwendet.

Bei dem Befehl zum Einspielen ist keine Datenbank angegeben.
Würde mich wundern, wenn das so funktionieren würde...
 
Doch, es hätte aber imo so funktioniert, wenn die Datenbanken nicht bereits existiert hätten (das ist es ja was mich wundert), denn als Datenbank ist " " angegeben...


Anyway, das ist es ja nicht, was mich verwirrt, ich Frage mich, wie es möglich ist, dass die Datenbanken eine Neuinstallation überlebt haben...
 
Bist du sicher das du neu installiert hast? *g*
Hast du das script vielleicht vorher schon mal versehentlich ausgeführt?
 
Nun, ich habe eine Bestätigungsmail von S4Y bekommen, dass nun Suse 9.3 drauf ist, und das wird auch von "cat /etc/SuSE-release" angezeigt. Ausserdem ist da noch die Tatsache, dass ansonsten tatsächlich alles von der Platte verschwunden ist.

Eigentlich bin ich mir auch 100% sicher, dass ich nicht vorher "versehentlich" schon die DBs importiert hatte... Das Ganze ist mir völlig unerklärlich, wäre jedoch nicht das erste Mal, das mir etwas Übernatürliches begegnet... :D
 
Back
Top