| 
					
				 | 
			
			
				@@ -0,0 +1,50 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#!/bin/bash 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# Simple script to backup MySQL databases 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# Parent backup directory 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+backup_parent_dir="/var/backups/mysql" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# MySQL settings 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+mysql_user="root" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+mysql_password="ROOTPASSWD" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# Read MySQL password from stdin if empty 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# if [ -z "${mysql_password}" ]; then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#   echo -n "Enter MySQL ${mysql_user} password: " 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#   read -s mysql_password 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#   echo 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# fi 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# Check MySQL password 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+echo exit | mysql --user=${mysql_user} --password=${mysql_password} -B 2>/dev/null 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+if [ "$?" -gt 0 ]; then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  echo "MySQL ${mysql_user} password incorrect" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  exit 1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  echo "MySQL ${mysql_user} password correct." 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+fi 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# TODO rotate backups 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# Create backup directory and set permissions 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+backup_date=`date +%Y_%m_%d_%H_%M` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+backup_dir="${backup_parent_dir}/${backup_date}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+echo "Backup directory: ${backup_dir}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+mkdir -p "${backup_dir}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+chmod 700 "${backup_dir}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# Get MySQL databases 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+mysql_databases=`echo 'show databases' | mysql --user=${mysql_user} --password=${mysql_password} -B | sed /^Database$/d` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# Backup and compress each database 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+for database in $mysql_databases 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+do 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  if [ "${database}" == "information_schema" ] || [ "${database}" == "performance_schema" ]; then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        additional_mysqldump_params="--skip-lock-tables" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        additional_mysqldump_params="" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  fi 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  echo "Creating backup of \"${database}\" database" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  mysqldump ${additional_mysqldump_params} --user=${mysql_user} --password=${mysql_password} ${database} | gzip > "${backup_dir}/${database}.gz" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  chmod 600 "${backup_dir}/${database}.gz" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+done 
			 |