#!/usr/local/bin/bash case "`hostname`" in 'naked.workshop.bii') RAW_DEV="/dev/vinum/raw:185G" ;; 'toronto.workshop.bii') RAW_DEV="/dev/da0s1a:185G" ;; *) echo "Unknown host. Please specifid RAW_DEV." exit 1 ;; esac # Check using "ulimit" and "sysctl hw.usermem" to see how much memory # we can use. Lower one wins. ULIM_MAX_KB_MEM=`ulimit -d` USER_MAX_KB_MEM=$((`sysctl hw.usermem | cut -f 2 -d ' '` / 1024)) if [ $ULIM_MAX_KB_MEM -lt $USER_MAX_KB_MEM ] ; then MAX_KB_MEM=$ULIM_MAX_KB_MEM else MAX_KB_MEM=$USER_MAX_KB_MEM fi INNODB_MEM="--innodb_buffer_pool_size=$(($MAX_KB_MEM / 1250))M" # 80% max mem KEY_MEM="--key_buffer_size=$((MAX_KB_MEM / 6667))M" # 15% max mem MYSQLD="/opt/packages/mysql-4.1.8a/libexec/mysqld" DATA_DIR="/mnt/mysql" # database dir BACKUP_FREQ="1800" # backup freq PID="--pid-file=$DATA_DIR/mysqld.pid" SOCK="--socket=$DATA_DIR/socket" OPTS="$INNODB_MEM $KEY_MEM --skip-grant-tables --tmpdir=/tmp" INNODB="--innodb_data_home_dir= --innodb_data_file_path=$RAW_DEV" # Check that DATA_DIR is mounted. mount | grep "$DATA_DIR" >/dev/null 2>/dev/null if [ "$?" != "0" ] ; then echo "FATAL! $DATA_DIR is not mounted." exit 1 fi # fire off MySQLd. if [ "$1" = "init" ] ; then rm -f $DATA_DIR/ib* cmd="$MYSQLD $OPTS --datadir=$DATA_DIR $PID $SOCK ${INNODB}newraw" echo $cmd $cmd exit $? fi cmd="$MYSQLD $OPTS --datadir=$DATA_DIR $PID $SOCK ${INNODB}raw" echo $cmd $cmd & # Finally, for safety, do backups of our table schema every so often. ( cd $DATA_DIR while [ true ] ; do sleep $BACKUP_FREQ if [ -f /tmp/plogger.tar ] ; then mv /tmp/plogger.tar /tmp/plogger.tar.old fi tar -cvpf /tmp/plogger.tar plogger >/dev/null done ) &