how to mysqldump remote db from local machine

后端 未结 4 1123
野的像风
野的像风 2020-12-07 07:07

I need to do a mysqldump of a database on a remote server, but the server does not have mysqldump installed. I would like to use the mysqldump on my machine to connect to th

4条回答
  •  既然无缘
    2020-12-07 07:40

    Bassed on this page here:

    Compare two MySQL databases

    I modified it so you can use ddbb in diferent hosts.

    
    #!/bin/sh
    
    echo "Usage: dbdiff [user1:pass1@dbname1:host] [user2:pass2@dbname2:host] [ignore_table1:ignore_table2...]"
    
    dump () {
      up=${1%%@*}; down=${1##*@}; user=${up%%:*}; pass=${up##*:}; dbname=${down%%:*}; host=${down##*:};
      mysqldump --opt --compact --skip-extended-insert -u $user -p$pass $dbname -h $host $table > $2
    }
    
    rm -f /tmp/db.diff
    
    # Compare
    up=${1%%@*}; down=${1##*@}; user=${up%%:*}; pass=${up##*:}; dbname=${down%%:*}; host=${down##*:};
    for table in `mysql -u $user -p$pass $dbname -h $host -N -e "show tables" --batch`; do
      if [ "`echo $3 | grep $table`" = "" ]; then
        echo "Comparing '$table'..."
        dump $1 /tmp/file1.sql
        dump $2 /tmp/file2.sql
        diff -up /tmp/file1.sql /tmp/file2.sql >> /tmp/db.diff
      else
        echo "Ignored '$table'..."
      fi
    done
    less /tmp/db.diff
    rm -f /tmp/file1.sql /tmp/file2.sql
    

提交回复
热议问题