Alterando o caminho em aws

0

Eu tenho um script que faz o backup do banco de dados mysql no aws. Eu preciso adicionar um código ao script que exclua os bancos de dados depois que o backup for bem-sucedido no aws. Alguém pode me guiar com o código? Aqui está o script

#!/bin/bash

# Basic variables
mysqlpass="mysql"
bucket="s3://akshaysolutionbackup/orbit/"

# Timestamp (sortable AND readable)
stamp='date +"%d-%m-%Y"'

# List all the databases
databases='mysql -u root -pmysql -e "SHOW DATABASES;" | tr -d "| " | grep -v "\(Database\|information_schema\|performance_schema\)"'

# Feedback
echo -e "Dumping to \e[1;32m$bucket/$stamp/\e[00m"

# Loop the databases
for db in $databases; do

# Define our filenames
filename="$stamp - $db.sql.gz"
tmpfile="/tmp/$filename"
object="$bucket/$stamp/$filename"

# Feedback
echo -e "\e[1;34m$db\e[00m"

# Dump and zip
echo -e "  creating \e[0;35m$tmpfile\e[00m"
mysqldump -u root -pmysql --force --opt --databases "$db" | gzip -c > $tmpfile"

# Upload
echo -e "  uploading..."
s3cmd put "$tmpfile" "$object"

# Delete
rm -f "$tmpfile"
done;

# Jobs a goodun
echo -e "\e[1;32mJobs a goodun\e[00m"
    
por darshan krishnaiah 28.07.2016 / 13:01

1 resposta

1

A maneira mais fácil de excluir um banco de dados de um script é:

echo "drop database dbname" | mysql -u username -ppassword

Isso iniciará o cliente da linha de comando mysql e executará a instrução SQL que foi canalizada para ele pelo comando echo . No seu script, você pode excluir o banco de dados assim que tiver feito o backup:

echo "drop database $db" | mysql -u username -ppassword

(dentro do loop do / done ), ou aguarde até o final do script, quando todo o backup for concluído e, em seguida, faça outro loop pelos bancos de dados e elimine todos eles:

for db in databases; do
  echo "drop database $db" | mysql -u username -ppassword
done;
    
por Jos 28.07.2016 / 14:10