Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

mysqldump via SSH tunnel

I have a server setup as follows:

  • webserver (gateway machine, accessible from the Internet via SSH)
  • dbserver (database server, not accessible from the web)

My goal is to use mysqldump to pull a backup from dbserver to my laptop via the web. Up to this point, the question is a duplicate of this question, except that webserver does not have mysqldump installed, and I don't have the rights to install it. So I'm trying to use mysqldump on my laptop to pull from a server behind a gateway that I don't have SSH rights to.

Following the discussions here and here, I'm trying to do something like this to set up the tunnel:

ssh -f -L 3306:dbserver:3306 user@webserver -N

followed by:

mysqldump -P 3306 -h localhost -u dbuser -p db

but I run into the same trouble this person did, and am not quite sure what's going on with the tunneling or how to fix it (and adding an entry to my laptop's hosts file doesn't seem to fix it like it did for him).

like image 697
SigmaX Avatar asked Aug 20 '12 00:08

SigmaX


People also ask

How do I backup my SSH database?

By using SSH, it is very easy to create a backup (dump) of your entire database. Once at the shell prompt, type in the following command and press [enter]: mysqldump -h 127.0. 0.1 -u db_user -p db_name > db_backup.


1 Answers

Dump databases daily to the gateway machine then fetch from there

#!/bin/sh
# Backup the mysql Databases
 for database in $(mysql -u b4ckup -pd1psh1t --host server.database.net -e "show databases" | awk '{print $1}' | grep -v Database)
do
        mysqldump -u user -p password --lock-tables=false --host server.database.net $database > /storage/backups/`date +\%Y-\%m-\%d`-`date +\%A`/server/$database.sql
done 
like image 199
Paperghost Avatar answered Oct 16 '22 11:10

Paperghost