Advertisement
Guest User

Untitled

a guest
Oct 12th, 2016
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.09 KB | None | 0 0
  1. #!/bin/bash -x
  2. set -e
  3.  
  4. RSERVER="remote_server_ip"
  5. RSRV_USER="root"
  6.  
  7. RHOST="remote_database_ip"
  8. RPORT="3306"
  9. RUSER="some_user"
  10. RPASS="some_pass"
  11. RDB="some_database"
  12.  
  13. echo -e "\n###################################################"
  14. echo -e "### Setting up tunnel to remote database server"
  15. echo -e "###################################################\n"
  16.  
  17. ssh -A -l "${RSRV_USER}" -L "10009:${RHOST}:${RPORT}" -N &
  18. sleep 1
  19.  
  20. echo -e "\n###################################################"
  21. echo "### Testing database connection"
  22. echo -e "###################################################\n"
  23.  
  24. if ! test -z "$( mysql "${RDB}" --host 127.0.0.1 -P 10009 -u "${RUSER}" -p"${RPASS}" --execute 'select 1 limit 0;' )" ; then
  25. echo "Failed to connect through local tunnel"
  26. exit 1
  27. fi
  28.  
  29. echo -e "\n###################################################"
  30. echo -e "### Creating sed database script!"
  31. echo -e "###################################################\n"
  32.  
  33. cat <<EOF > sql.sed
  34.  
  35. #!/bin/sed -f
  36. s/DEFINER=.*[\*]/DEFINER=\`$RUSER\`@\`%\`*\/ \/\*/g
  37. 1s/^/\/\*\!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 \*\/;\\n/
  38. 1s/^/\/\*\!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 \*\/;\\n/
  39. 1s/^/\/\*\!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' \*\/;\\n/
  40. \$s/$/\\n\/\*\!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS \*\/;/
  41. \$s/$/\\n\/\*\!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS \*\/;/
  42. \$s/$/\\n\/\*\!40014 SET SQL_MODE=@OLD_SQL_MODE \*\/;/
  43. EOF
  44.  
  45.  
  46. echo -e "\n###################################################"
  47. echo -e "### Dumping database $RDB schema!"
  48. echo -e "###################################################\n"
  49.  
  50. mysqldump --host "${RHOST}" -P 10009 \
  51. --opt \
  52. --force \
  53. --single-transaction \
  54. --insert-ignore \
  55. --quote-names "$RDB" \
  56. --ignore-table="${DRB}.innodb_monitor" \
  57. -u "$RUSER" \
  58. -p"$RPASS" \
  59. --no-data 2> >(grep -v "Using a password" 1>&2) | sed -f sql.sed | mysql
  60.  
  61. if [ "$?" -ne 0 ] ; then
  62. echo "Failed to create schema!"
  63. exit 1
  64. fi
  65.  
  66. echo -e "\n###################################################"
  67. echo -e "### Dumping database $DRB data"
  68. echo -e "###################################################\n"
  69.  
  70. mysqldump --host "${RHOST}" -P 10009 -u "$RUSER" -p"$RPASS" \
  71. --opt \
  72. --single-transaction \
  73. --force \
  74. --insert-ignore \
  75. --quote-names "$DRB" \
  76. --ignore-table="${DRB}.innodb_monitor" \
  77. --ignore-table="${DRB}.log_url" \
  78. --ignore-table="${DRB}.log_url_info" \
  79. --ignore-table="${DRB}.log_customer" \
  80. --ignore-table="${DRB}.log_quote" \
  81. --ignore-table="${DRB}.report_event" \
  82. --ignore-table="${DRB}.dataflow_batch_export" \
  83. --ignore-table="${DRB}.dataflow_batch_import" \
  84. --ignore-table="${DRB}.core_file_storage" \
  85. --ignore-table="${DRB}.log_visitor_info" \
  86. --ignore-table="${DRB}.log_visitor" \
  87. --ignore-table="${DRB}.ecomdev_stock_import_tmp" 2> >(grep -v "Using a password" 1>&2) | sed -f sql.sed | mysql
  88.  
  89. [ -f sql.sed ] && rm sql.sed
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement