~jorge/charms/precise/mysql/fix-metadata

« back to all changes in this revision

Viewing changes to formulas/mysql/hooks/slave-relation-changed

  • Committer: Clint Byrum
  • Date: 2011-03-17 20:43:05 UTC
  • mto: This revision was merged to the branch mainline in revision 38.
  • Revision ID: clint@ubuntu.com-20110317204305-8mfbh9bto61lndcs
- adding master/slave replication
- setting default storage engine to innodb to make replication snaps faster and provide better data integrity

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#!/bin/sh -e
 
2
 
 
3
ROOTARGS="-uroot -p`cat /var/lib/ensemble/mysql.passwd`"
 
4
 
 
5
case "$ENSEMBLE_CHANGE" in
 
6
joined)
 
7
  local_ip=`ifconfig  | grep 'inet addr:'| grep -v '127.0.0.1' | cut -d: -f2 | awk '{ print $1}'|head -n 1`
 
8
  relation-set ip=$local_ip
 
9
  ;;
 
10
modified)
 
11
  master=`relation-list | head -1`
 
12
  if [ "$ENSEMBLE_REMOTE_UNIT" != "$master" ] ; then
 
13
    exit 0;
 
14
  fi
 
15
  echo master=$master
 
16
  relation-list
 
17
  dumpurl=http://`relation-get ip`/`relation-get dumpurl`
 
18
  curl $dumpurl | mysql $ROOTARGS
 
19
  user=`relation-get user`
 
20
  pass=`relation-get psasword`
 
21
  remote_ip=`relation-get ip`
 
22
  port=`relation-get port`
 
23
  serverid=`augtool ls /files/etc/mysql/my.cnf/target[3]/server_id`
 
24
  if [ $serverid -lt 100000 ] ; then
 
25
    # add 100000 to server_id to avoid conflicts w/ masters
 
26
    let serverid=$serverid+100000
 
27
    echo -e "set /files/etc/mysql/my.cnf/target[3]/server_id $serverid\nsave" | augtool -b
 
28
    service mysql stop
 
29
    # clear binlogs
 
30
    binlog=`augtool get /files/etc/mysql/my.cnf/target[3]/log_bin|cut -d' ' -f3`
 
31
    backupdir=/var/backups/binlogs-`date +%Y%m%d%H%M%S`
 
32
    mkdir -p $backupdir
 
33
    mv $binlog* $backupdir
 
34
    service mysql start
 
35
  fi
 
36
  mysql $ROOTARGS -e "CHANGE MASTER TO MASTER_HOST=\`$remote_ip\`, MASTER_USER=\`$user\`, MASTER_PASSWORD='$pass', MASTER_PORT=$port"
 
37
  mysql $ROOTARGS -e "START SLAVE"
 
38
  mysql $ROOTARGS -e "SHOW SLAVE STATUS"
 
39
  ;;
 
40
departed)
 
41
  echo $ENSEMBLE_REMOTE_UNIT master departed, doing nothing.
 
42
  # TODO re-init to another master automatically
 
43
  ;;
 
44
esac