diff --git a/backup_db.sh b/backup_db.sh index da0a04a..d956ca3 100755 --- a/backup_db.sh +++ b/backup_db.sh @@ -126,9 +126,16 @@ backup() if [ $(echo $data_tables_exclude_expression| grep $TABLE) ]; then f_log "Exclude data from table $TABLE" - mysqldump --defaults-file=$CONFIG_FILE --no-data --add-drop-table --tab=$DST/$DATABASE/ $DATABASE $TABLE 2>> $DST/$DATABASE/error.log + mysqldump --defaults-file=$CONFIG_FILE --no-data --add-drop-table --tab=$DST/$DATABASE/ $DATABASE $TABLE 2>> $DST/$DATABASE/error.log else - mysqldump --defaults-file=$CONFIG_FILE --default-character-set=utf8 --add-drop-table --quick --tab=$DST/$DATABASE/ $DATABASE $TABLE 2>> $DST/$DATABASE/error.log + # If fields has geospatial types + checkGeo="mysql --defaults-extra-file=$CONFIG_FILE -B $DATABASE -e \"SHOW COLUMNS FROM $TABLE WHERE Type IN ('point', 'polygon', 'geometry', 'linestring')\"" + hasGeo=$(eval $checkGeo) + if [ ! -z "$hasGeo" ]; then + mysqldump --defaults-file=$CONFIG_FILE --flush-logs --default-character-set=utf8 --add-drop-table --quick --result-file=$DST/$DATABASE/$TABLE.sql $DATABASE $TABLE 2>> $DST/$DATABASE/error.log + else + mysqldump --defaults-file=$CONFIG_FILE --flush-logs --default-character-set=utf8 --add-drop-table --quick --tab=$DST/$DATABASE/ $DATABASE $TABLE 2>> $DST/$DATABASE/error.log + fi fi if [ -f "$DST/$DATABASE/$TABLE.sql" ]; then