mysql-migration-test.sh 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. TMPDIR=`mktemp -d 2>/dev/null || mktemp -d -t 'tmpConfigDir'`
  2. DUMPDIR=`mktemp -d 2>/dev/null || mktemp -d -t 'dumpDir'`
  3. cp config/config.json $TMPDIR
  4. echo "Creating databases"
  5. docker exec mattermost-mysql mysql -uroot -pmostest -e "CREATE DATABASE migrated; CREATE DATABASE latest; GRANT ALL PRIVILEGES ON migrated.* TO mmuser; GRANT ALL PRIVILEGES ON latest.* TO mmuser"
  6. echo "Importing mysql dump from version 5.0"
  7. docker exec -i mattermost-mysql mysql -D migrated -uroot -pmostest < $(pwd)/scripts/mattermost-mysql-5.0.sql
  8. echo "Setting up config for db migration"
  9. make ARGS="config set SqlSettings.DataSource 'mmuser:mostest@tcp(localhost:3306)/migrated?charset=utf8mb4,utf8&readTimeout=30s&writeTimeout=30s' --config $TMPDIR/config.json" run-cli
  10. make ARGS="config set SqlSettings.DriverName 'mysql' --config $TMPDIR/config.json" run-cli
  11. echo "Running the migration"
  12. make ARGS="version --config $TMPDIR/config.json" run-cli
  13. echo "Setting up config for fresh db setup"
  14. make ARGS="config set SqlSettings.DataSource 'mmuser:mostest@tcp(localhost:3306)/latest?charset=utf8mb4,utf8&readTimeout=30s&writeTimeout=30s' --config $TMPDIR/config.json" run-cli
  15. echo "Setting up fresh db"
  16. make ARGS="version --config $TMPDIR/config.json" run-cli
  17. echo "Ignoring known MySQL mismatch: ChannelMembers.SchemeGuest"
  18. docker exec mattermost-mysql mysql -D migrated -uroot -pmostest -e "ALTER TABLE ChannelMembers DROP COLUMN SchemeGuest;"
  19. docker exec mattermost-mysql mysql -D latest -uroot -pmostest -e "ALTER TABLE ChannelMembers DROP COLUMN SchemeGuest;"
  20. echo "Generating dump"
  21. docker exec mattermost-mysql mysqldump --skip-opt --no-data --compact -u root -pmostest migrated > $DUMPDIR/migrated.sql
  22. docker exec mattermost-mysql mysqldump --skip-opt --no-data --compact -u root -pmostest latest > $DUMPDIR/latest.sql
  23. echo "Removing databases created for db comparison"
  24. docker exec mattermost-mysql mysql -uroot -pmostest -e "DROP DATABASE migrated; DROP DATABASE latest"
  25. echo "Generating diff"
  26. diff $DUMPDIR/migrated.sql $DUMPDIR/latest.sql > $DUMPDIR/diff.txt
  27. diffErrorCode=$?
  28. if [ $diffErrorCode -eq 0 ]; then
  29. echo "Both schemas are same"
  30. else
  31. echo "Schema mismatch"
  32. cat $DUMPDIR/diff.txt
  33. fi
  34. rm -rf $TMPDIR $DUMPDIR
  35. exit $diffErrorCode