Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- if [[-z which docker]]; then
- apt-get install docker.io
- fi
- read -p "Nome do docker com o BD master?" NAMEDOCKERMASTER
- read -p "Nome do docker com o BD slave?" NAMEDOCKERSLAVE
- read -p "Diretório de espelho para os BD(s) ?" DIRDOCKER
- read -p "URL para o BD [ $NAMEDOCKERMASTER ] ?" URLMASTER
- read -p "URL para o BD [ $NAMEDOCKERSLAVE ] ?" URLSLAVE
- # read -p "Senha do Usuário [ $NAMEUSER ] para o Banco de Dados [ $NAMEDATABASE ] ?" PASSUSER
- mkdir -p $DIRDOCKER/$NAMEDOCKERMASTER/data $DIRDOCKER/$NAMEDOCKERMASTER/cnf
- mkdir -p $DIRDOCKER/$NAMEDOCKERSLAVE/data $DIRDOCKER/$NAMEDOCKERSLAVE/cnf
- cat > $DIRDOCKER/$NAMEDOCKERMASTER/cnf/config-file.cnf << EOF
- # Config Settings:
- [mysqld]
- server-id=1
- binlog_format=ROW
- log-bin
- EOF
- cat > $DIRDOCKER/$NAMEDOCKERSLAVE/cnf/config-file.cnf << EOF
- # Config Settings:
- [mysqld]
- server-id=2
- EOF
- ## MASTER
- # Launch master instance
- docker run --name ${NAMEDOCKERMASTER} -v ${DIRDOCKER}/${NAMEDOCKERMASTER}/cnf:/etc/mysql/conf.d -v ${DIRDOCKER}/${NAMEDOCKERMASTER}/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7
- echo "[$NAMEDOCKERMASTER] - Create OK"
- sleep 35
- # Create replication user
- docker exec ${NAMEDOCKERMASTER} 'mysql' -uroot -proot -vvv -e"GRANT REPLICATION SLAVE ON *.* TO repl@'%' IDENTIFIED BY 'slavepass'"
- echo "[$NAMEDOCKERMASTER] - User para Replicar OK"
- #list vars of (master_log_file and master_log_pos)
- docker exec -ti $NAMEDOCKERMASTER 'mysql' -uroot -proot -e"SHOW MASTER STATUS"
- BINMASTER=$(docker exec -ti $NAMEDOCKERMASTER 'mysql' -uroot -proot -e"SHOW MASTER STATUS" | grep -Eoh "([A-Za-z0-9]*)-bin.[0-9]{6}")
- BINSIZE=$(docker exec -ti $NAMEDOCKERMASTER 'mysql' -uroot -proot -e"SHOW MASTER STATUS" | grep -Eoh "[[:space:]]([0-9]+)[[:space:]]")
- BINSIZE=${BINSIZE//[[:space:]]/}
- echo "[$NAMEDOCKERMASTER] - BIN FILE [$BINMASTER] BIN SIZE [$BINSIZE]"
- ##SLAVE
- docker run --name $NAMEDOCKERSLAVE -d -v $DIRDOCKER/$NAMEDOCKERSLAVE/cnf:/etc/mysql/conf.d -v $DIRDOCKER/$NAMEDOCKERSLAVE/data:/var/lib/mysql --link $NAMEDOCKERMASTER:mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7
- echo "[$NAMEDOCKERSLAVE] - Create OK"
- sleep 35
- # (in command SHOW MASTER STATUS in $NAMEDOCKERMASTER) master_log_file="4a85a85e7662-bin.000003",master_log_pos=437
- docker exec -ti $NAMEDOCKERSLAVE 'mysql' -uroot -proot -e"change master to master_host='mysql',master_user='repl',master_password='slavepass',master_log_file='${BINMASTER}',master_log_pos=${BINSIZE};" -vvv
- echo "[$NAMEDOCKERSLAVE] - ACESSO PARA O MASTER"
- sleep 35
- # Start replication
- docker exec -ti $NAMEDOCKERSLAVE 'mysql' -uroot -proot -e"START SLAVE;" -vvv
- # Verify replication is running OK
- #docker exec -ti $NAMEDOCKERSLAVE 'mysql' -uroot -proot -e"SHOW SLAVE STATUS" -vvv
- read -p "Arquivo de dump ?" DUMP
- IPMASTER=$(docker inspect ${NAMEDOCKERMASTER} | grep "\"IPAddress\"" | grep -Eoh -m 1 '([0-9.]*)')
- IPSLAVE=$(docker inspect ${NAMEDOCKERSLAVE} | grep "\"IPAddress\"" | grep -Eoh -m 1 '([0-9.]*)')
- if [[ -z "$URLMASTER" ]]; then
- echo "[$NAMEDOCKERMASTER] IP = ${IPMASTER}"
- else
- echo "${IPMASTER} ${URLMASTER}" >> /etc/hosts
- fi
- if [[ -z "$URLSLAVE" ]]; then
- echo "[$NAMEDOCKERSLAVE] IP = ${IPSLAVE}"
- else
- echo "${IPSLAVE} ${URLSLAVE}" >> /etc/hosts
- fi
- if [[ -f $DUMP ]]; then
- docker exec ${NAMEDOCKERMASTER} 'mysql' -uroot -proot < ${DUMP}
- else
- echo "[$DUMP] não é um arquivo!"
- exit 1
- fi
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement