No seu script
echo "SET autocommit=0" | mysql ${conn}
echo "SET unique_checks=0" | mysql ${conn}
echo "SET foreign_key_checks=0" | mysql ${conn}
Cada vez que um comando é executado, ele é imediatamente desfeito porque a conexão com o banco de dados é encerrada. Se você tivesse colocado todos os seus comandos em um único arquivo e executado o arquivo único, todas as opções que você está desabilitando ficariam desligadas durante a sessão.
Eu reescrevi o script para colocar todos os comandos em um único arquivo, assim como um mysqldump teria. Eu também mudei a forma como as tabelas são escritas como comandos. Então, eu rodaria o arquivo único:
dbs=( analytics auth logs users )
server=localhost
conn="-h ${server} -u ${username} --password=${password}"
PREFIX=whatever
DUMPFILE=MySQLDataToClone.sql
echo "STOP SLAVE;" > ${DUMPFILE}
echo "SET autocommit=0;" >> ${DUMPFILE}
echo "SET unique_checks=0;" >> ${DUMPFILE}
echo "SET foreign_key_checks=0;" >> ${DUMPFILE}
for SRCDB in ${dbs[*]}
do
echo "DROP DATABASE IF EXISTS ${PREFIX}${SRCDB};" >> ${DUMPFILE}
echo "CREATE DATABASE ${PREFIX}${SRCDB};" >> ${DUMPFILE}
done
for SRCDB in ${dbs[*]}
do
SQLTOGETTABLES="SELECT CONCAT('CREATE TABLE ${PREFIX}',dbtb,' LIKE ',dbtb,'; INSERT INTO ${PREFIX}',dbtb,' SELECT * FROM dbtb;') FROM (SELECT CONCAT(table_schema,'.',table_name) dbtb FROM information_schema.tables WHERE table_schema='${SRCDB}' AND engine IS NOT NULL) A;"
mysql $conn -ANe"${SQLTOGETTABLES}" >> ${DUMPFILE}
done
echo "START SLAVE;" >> ${DUMPFILE}
mysql ${conn} < ${DUMPFILE}
Experimente!