Last active
December 17, 2015 15:59
-
-
Save schaary/5635357 to your computer and use it in GitHub Desktop.
Synchronisieren einer MySQL-Datenbank
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/bin/bash | |
| # Die Absoluten Pfade zu den Kommandos | |
| MYSQL='/usr/bin/mysql' | |
| MYSQLDUMP='/usr/bin/mysqldump' | |
| # Die Datenbanken | |
| SOURCE_DB='a6afd_blogs' | |
| TARGET_DB='a6afd_blogs_daily' | |
| # Die Zugangsdaten. Ich wuerde empfehlen, die Zugangsdaten im | |
| # environment zu setzen, z.B. in der .bashrc des Nutzers, der | |
| # den cronjob ausfuehren soll: | |
| # | |
| # export MYSQL_USER='foo' | |
| # export MYSQL_PASSWORD='bar' | |
| # export MYSQL_HOST='baz' | |
| MYSQL_USER='' | |
| MYSQL_PASSWORD='' | |
| MYSQL_HOST='' | |
| # Aufraeumen in der TARGET_DB | |
| # | |
| # Da der Nutzer keine Rechte zum Loeschen oder Anlegen von Datenbanken hat, | |
| # muss das Aufraeumen "zu Fuss" erfolgen. Dazu holt der Nutzer die Namen | |
| # der Tabellen aus dem information_schema und loescht dann die Tabellen | |
| COMMAND="select table_name from information_schema.tables where table_schema='${TARGET_DB}';" | |
| TABLES=$(\ | |
| echo ${COMMAND} | \ | |
| ${MYSQL} \ | |
| --user=${MYSQL_USER} \ | |
| --password=${MYSQL_PASSWORD} \ | |
| --host=${MYSQL_HOST} \ | |
| --skip-column-names) | |
| for TABLE in ${TABLES[@]} | |
| do | |
| ${MYSQL} \ | |
| --user=${MYSQL_USER} \ | |
| --password=${MYSQL_PASSWORD} \ | |
| --host=${MYSQL_HOST} \ | |
| ${TARGET_DB} -e "drop table ${TABLE}" | |
| done | |
| # Kopieren der Tabellen von SOURCE_DB nach TARGET_DB | |
| # | |
| # Klassisch mit mysqldump ausgeben und durch eine pipe | |
| # wieder in die Datenbank schicken. | |
| ${MYSQLDUMP} \ | |
| --single-transaction \ | |
| --user=${MYSQL_USER} \ | |
| --password=${MYSQL_PASSWORD} \ | |
| --host=${MYSQL_HOST} ${SOURCE_DB} | \ | |
| ${MYSQL} \ | |
| --user=${MYSQL_USER} \ | |
| --password=${MYSQL_PASSWORD} \ | |
| --host=${MYSQL_HOST} ${TARGET_DB} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment