Advertisement
Guest User

Untitled

a guest
Apr 19th, 2017
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.26 KB | None | 0 0
  1. if [[-z which docker]]; then
  2. apt-get install docker.io
  3. fi
  4.  
  5. read -p "Nome do docker com o BD master?" NAMEDOCKERMASTER
  6. read -p "Nome do docker com o BD slave?" NAMEDOCKERSLAVE
  7. read -p "Diretório de espelho para os BD(s) ?" DIRDOCKER
  8. read -p "URL para o BD [ $NAMEDOCKERMASTER ] ?" URLMASTER
  9. read -p "URL para o BD [ $NAMEDOCKERSLAVE ] ?" URLSLAVE
  10.  
  11. # read -p "Senha do Usuário [ $NAMEUSER ] para o Banco de Dados [ $NAMEDATABASE ] ?" PASSUSER
  12.  
  13. mkdir -p $DIRDOCKER/$NAMEDOCKERMASTER/data $DIRDOCKER/$NAMEDOCKERMASTER/cnf
  14. mkdir -p $DIRDOCKER/$NAMEDOCKERSLAVE/data $DIRDOCKER/$NAMEDOCKERSLAVE/cnf
  15.  
  16. cat > $DIRDOCKER/$NAMEDOCKERMASTER/cnf/config-file.cnf << EOF
  17. # Config Settings:
  18. [mysqld]
  19. server-id=1
  20. binlog_format=ROW
  21. log-bin
  22. EOF
  23.  
  24. cat > $DIRDOCKER/$NAMEDOCKERSLAVE/cnf/config-file.cnf << EOF
  25. # Config Settings:
  26. [mysqld]
  27. server-id=2
  28. EOF
  29.  
  30. ## MASTER
  31. # Launch master instance
  32. 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
  33. echo "[$NAMEDOCKERMASTER] - Create OK"
  34. sleep 35
  35.  
  36. # Create replication user
  37. docker exec ${NAMEDOCKERMASTER} 'mysql' -uroot -proot -vvv -e"GRANT REPLICATION SLAVE ON *.* TO repl@'%' IDENTIFIED BY 'slavepass'"
  38. echo "[$NAMEDOCKERMASTER] - User para Replicar OK"
  39.  
  40. #list vars of (master_log_file and master_log_pos)
  41. docker exec -ti $NAMEDOCKERMASTER 'mysql' -uroot -proot -e"SHOW MASTER STATUS"
  42. BINMASTER=$(docker exec -ti $NAMEDOCKERMASTER 'mysql' -uroot -proot -e"SHOW MASTER STATUS" | grep -Eoh "([A-Za-z0-9]*)-bin.[0-9]{6}")
  43. BINSIZE=$(docker exec -ti $NAMEDOCKERMASTER 'mysql' -uroot -proot -e"SHOW MASTER STATUS" | grep -Eoh "[[:space:]]([0-9]+)[[:space:]]")
  44. BINSIZE=${BINSIZE//[[:space:]]/}
  45.  
  46. echo "[$NAMEDOCKERMASTER] - BIN FILE [$BINMASTER] BIN SIZE [$BINSIZE]"
  47.  
  48. ##SLAVE
  49. 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
  50. echo "[$NAMEDOCKERSLAVE] - Create OK"
  51. sleep 35
  52.  
  53. # (in command SHOW MASTER STATUS in $NAMEDOCKERMASTER) master_log_file="4a85a85e7662-bin.000003",master_log_pos=437
  54. 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
  55. echo "[$NAMEDOCKERSLAVE] - ACESSO PARA O MASTER"
  56.  
  57. sleep 35
  58.  
  59. # Start replication
  60. docker exec -ti $NAMEDOCKERSLAVE 'mysql' -uroot -proot -e"START SLAVE;" -vvv
  61.  
  62. # Verify replication is running OK
  63. #docker exec -ti $NAMEDOCKERSLAVE 'mysql' -uroot -proot -e"SHOW SLAVE STATUS" -vvv
  64.  
  65. read -p "Arquivo de dump ?" DUMP
  66.  
  67. IPMASTER=$(docker inspect ${NAMEDOCKERMASTER} | grep "\"IPAddress\"" | grep -Eoh -m 1 '([0-9.]*)')
  68. IPSLAVE=$(docker inspect ${NAMEDOCKERSLAVE} | grep "\"IPAddress\"" | grep -Eoh -m 1 '([0-9.]*)')
  69.  
  70. if [[ -z "$URLMASTER" ]]; then
  71. echo "[$NAMEDOCKERMASTER] IP = ${IPMASTER}"
  72. else
  73. echo "${IPMASTER} ${URLMASTER}" >> /etc/hosts
  74. fi
  75.  
  76. if [[ -z "$URLSLAVE" ]]; then
  77. echo "[$NAMEDOCKERSLAVE] IP = ${IPSLAVE}"
  78. else
  79. echo "${IPSLAVE} ${URLSLAVE}" >> /etc/hosts
  80. fi
  81.  
  82. if [[ -f $DUMP ]]; then
  83. docker exec ${NAMEDOCKERMASTER} 'mysql' -uroot -proot < ${DUMP}
  84. else
  85. echo "[$DUMP] não é um arquivo!"
  86. exit 1
  87. fi
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement