Skip to main content

MySQL backup using shell script mysqldump utility

#!/bin/bash

# Error handling
function error()
{
 echo -e "[ `date` ] $(tput setaf 1)$@$(tput sgr0)"
 exit $2
}


### Set Bins Path ###
RM=/bin/rm
GZIP=/bin/gzip
GREP=/bin/grep
MKDIR=/bin/mkdir
MYSQL=/usr/bin/mysql
MYSQLDUMP=/usr/bin/mysqldump
MYSQLADMIN=/usr/bin/mysqladmin

### Enable Log = 1 ###
LOGS=1

### Default Time Format ###
TIME_FORMAT='%d%b%Y%H%M%S'
 
### Setup Dump And Log Directory ###
MYSQLDUMPPATH=/var/www/mysqldump
MYSQLDUMPLOG=/var/log/mysqldump.log
EXTRA_PARAMS=$1

#####################################
### ----[ No Editing below ]------###
#####################################

[ -f ~/.my.cnf ] || error "Error: ~/.my.cnf not found"

### Make Sure Bins Exists ###
verify_bins(){
 [ ! -x $GZIP ] && error "File $GZIP does not exists. Make sure correct path is set in $0."
 [ ! -x $MYSQL ] && error "File $MYSQL does not exists. Make sure correct path is set in $0."
 [ ! -x $MYSQLDUMP ] && error "File $MYSQLDUMP does not exists. Make sure correct path is set in $0."
 [ ! -x $RM ] && error "File $RM does not exists. Make sure correct path is set in $0."
 [ ! -x $MKDIR ] && error "File $MKDIR does not exists. Make sure correct path is set in $0."
 [ ! -x $MYSQLADMIN ] && error "File $MYSQLADMIN does not exists. Make sure correct path is set in $0."
 [ ! -x $GREP ] && error "File $GREP does not exists. Make sure correct path is set in $0."
}


### Make Sure We Can Connect To The Server ###
verify_mysql_connection(){
 $MYSQLADMIN  ping | $GREP 'alive' > /dev/null
 [ $? -eq 0 ] || error "Error: Cannot connect to MySQL Server. Make sure username and password are set correctly in $0"
}


### Make A Backup ###
backup_mysql_rsnapshot
backup_mysql_rsnapshot(){ local DBS="$($MYSQL -Bse 'show databases')" local db=""; [ ! -d $MYSQLDUMPLOG ] && $MKDIR -p $MYSQLDUMPLOG [ ! -d $MYSQLDUMPPATH ] && $MKDIR -p $MYSQLDUMPPATH $RM -f $MYSQLDUMPPATH/* > /dev/null 2>&1 [ $LOGS -eq 1 ] && echo "" &>> $MYSQLDUMPLOG/rsnap-mysql.log [ $LOGS -eq 1 ] && echo "*** Dumping MySQL Database At $(date) ***" &>> $MYSQLDUMPLOG/rsnap-mysql.log [ $LOGS -eq 1 ] && echo "Database >> " &>> $MYSQLDUMPLOG/rsnap-mysql.log for db in $DBS do local TIME=$(date +"$TIME_FORMAT") local FILE="$MYSQLDUMPPATH/$db.$TIME.gz" [ $LOGS -eq 1 ] && echo -e \\t "$db" &>> $MYSQLDUMPLOG/rsnap-mysql.log if [ $db = "mysql" ] then $MYSQLDUMP --events --single-transaction $EXTRA_PARAMS $db | $GZIP -9 > $FILE || echo -e \\t \\t "MySQLDump Failed $db" else $MYSQLDUMP --single-transaction $db $EXTRA_PARAMS | $GZIP -9 > $FILE || echo -e \\t \\t "MySQLDump Failed $db" fi done [ $LOGS -eq 1 ] && echo "*** Backup Finished At $(date) [ files wrote to $MYSQLDUMPPATH] ***" &>> $MYSQLDUMPLOG/rsnap-mysql.log } ### Main #### verify_bins
verify_mysql_connection

Comments

Popular posts from this blog

Mongodb online Training course Agenda

  Goal:   In this module, you will get an understanding of NoSQL databases, design goals, requirement of NoSQL database/ MongoDB, MongoDB® architecture and introduction to JSON and BSON among others. This module will also cover the installation of MongoDB® and associated tools. Skills Understand NoSQL databases and  advantages Install MongoDB on Windows and Linux platform Security Enable and high availability Objectives After completing this module, you will  be able knowledge ed on SQL and noSQL Database usages and difference between these MongoDB design and architecture  MongoDB GUI tools Describe JSON and BSON Install MongoDB on Windows, Linux, MAC OS etc.  Setup MongoDB environment Topics • Understanding the basic concepts of a Database • Database categories: What is NoSQL? Why NoSQL? Benefit over RDBMS  • Types of NoSQL Database, and NoSQL vs. SQL Comparison, ACID & Base Property • CAP Theorem, implementing NoSQL and what is MongoDB?  • O...

MySQL Architecture -Client Server Architecture

Client/Server Overview The MySQL database system operates using a client/server architecture. The server is a central program that manages database contents, and client programs connect to the server to retrieve or modify the data. MySQL also includes non-client utility programs and scripts. MySQL Server:   This is the mysqld program that manages database and tables. Most users choose binary MySQL distribution that includes a server ready to run with the capabilities they need, but it's also possible to compile MySQL from source. Client Programs:  These are programs that communicate with the server by sending requests to it over a network connection. The server acts on each request and returns a response to the client. For example you can use the mysql client to send queries to the server, and the server returns the query results. A client program can connect locally to a server running on the same machine or remotely to a server running on a different mac...

Load test Monitor script

 #!/bin/bash # Define logfile and other variables LOGFILE="/path/to/mongod.log"    # Path to MongoDB log file OUTPUT_FILE="/path/to/output.log" # Path where the output will be saved # Record the date echo "===== Date: $(date) =====" >> $OUTPUT_FILE # Record just the first line of w output (system uptime, users, and load average) echo "===== System Uptime, Users, and Load Average (w command) =====" >> $OUTPUT_FILE w | head -n 1 >> $OUTPUT_FILE # Record only the %user value from iostat echo "===== I/O Statistics (%user from iostat command) =====" >> $OUTPUT_FILE iostat | awk '/^ / {getline; print "User CPU: " $1 "%"}' >> $OUTPUT_FILE # Capture top processes, filtering for MongoDB (mongod) echo "===== Top Processes (top command) - Filter for mongod =====" >> $OUTPUT_FILE top -b -n 1 | grep mongod >> $OUTPUT_FILE # Filter MongoDB log for specific information (e....