Guest User

Untitled

a guest
Jan 26th, 2017
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.57 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3. DBUSER="root";
  4. DBPASS="";
  5. DBHOST="localhost";
  6.  
  7. DB_OLD=mydatabase
  8. DB_NEW=clone_mydatabase
  9.  
  10. DBCONN="--host=${DBHOST} --user=${DBUSER} --password=${DBPASS}";
  11.  
  12. MYSQL_CREATE='set foreign_key_checks = 0';
  13. MYSQL_INSERT='set foreign_key_checks = 0';
  14.  
  15. echo "Begin database clone (may take a while)";
  16. echo "-- Create destination database";
  17. echo "DROP DATABASE IF EXISTS ${DB_NEW}; CREATE DATABASE ${DB_NEW}" | mysql ${DBCONN};
  18.  
  19. [ $? -ne 0 ] && exit $?;
  20.  
  21. echo "-- Select source table schemas";
  22. MYSQL_TABLES=$(echo "SHOW TABLES" | mysql $DBCONN $DB_OLD | tail -n +2);
  23.  
  24. [ $? -ne 0 ] && exit $?;
  25. COUNT=1
  26. for TABLE in $MYSQL_TABLES; do
  27. MYSQL_INSERT="${MYSQL_INSERT}; ALTER TABLE ${DB_NEW}.${TABLE} DISABLE KEYS";
  28. MYSQL_INSERT="${MYSQL_INSERT}; INSERT INTO ${DB_NEW}.${TABLE} SELECT * FROM ${DB_OLD}.${TABLE}";
  29. MYSQL_INSERT="${MYSQL_INSERT}; ALTER TABLE ${DB_NEW}.${TABLE} ENABLE KEYS";
  30. MYSQL_CREATE="${MYSQL_CREATE}; $(echo SHOW CREATE TABLE ${TABLE}|mysql -B -r ${DBCONN} ${DB_OLD}|tail -n +2|cut -f 2-)";
  31.  
  32. [ $? -ne 0 ] && echo && exit $?;
  33.  
  34. [ $COUNT -le 1 ] && echo -n " [ ";
  35. echo -n ".";
  36. [ $COUNT -ge 65 ] && echo " ]" && COUNT=0;
  37.  
  38. COUNT=$((COUNT+1))
  39. done;
  40.  
  41. MYSQL_CREATE="${MYSQL_CREATE}; set foreign_key_checks = 1";
  42. MYSQL_INSERT="${MYSQL_INSERT}; set foreign_key_checks = 1";
  43.  
  44. [ $COUNT -gt 1 ] && echo " ]";
  45.  
  46. echo "-- Create destination table schemas";
  47. echo "${MYSQL_CREATE};" | mysql $DBCONN $DB_NEW
  48.  
  49. [ $? -ne 0 ] && exit $?;
  50.  
  51. echo "-- Insert source data into destination tables";
  52. echo "${MYSQL_INSERT};" | mysql $DBCONN $DB_NEW
  53.  
  54. [ $? -ne 0 ] && exit $?;
  55.  
  56. echo "Done.";
Add Comment
Please, Sign In to add comment