mirror of
https://github.com/MariaDB/server.git
synced 2025-01-31 19:11:46 +01:00
Merge mysql.com:/home/jonas/src/mysql-4.1
into mysql.com:/home/jonas/src/mysql-5.0
This commit is contained in:
commit
a5629a7ac7
2 changed files with 81 additions and 448 deletions
|
@ -1,465 +1,95 @@
|
|||
#!/bin/sh
|
||||
# NAME
|
||||
# make-config.sh - Makes a config file for mgm server
|
||||
#
|
||||
# SYNOPSIS
|
||||
# make-config.sh [ -t <template> ] [-s] [ -m <machine conf> [ -d <directory> ]
|
||||
#
|
||||
# DESCRIPTION
|
||||
#
|
||||
# OPTIONS
|
||||
#
|
||||
# EXAMPLES
|
||||
#
|
||||
#
|
||||
# ENVIRONMENT
|
||||
# NDB_PROJ_HOME Home dir for ndb
|
||||
#
|
||||
# FILES
|
||||
# $NDB_PROJ_HOME/lib/funcs.sh general shell script functions
|
||||
#
|
||||
#
|
||||
# SEE ALSO
|
||||
#
|
||||
# DIAGNOSTICTS
|
||||
#
|
||||
# VERSION
|
||||
# 1.0
|
||||
# 1.1 021112 epesson: Adapted for new mgmt server in NDB 2.00
|
||||
#
|
||||
# AUTHOR
|
||||
# Jonas Oreland
|
||||
#
|
||||
# CHANGES
|
||||
# also generate ndbnet config
|
||||
#
|
||||
|
||||
progname=`basename $0`
|
||||
synopsis="make-config.sh [ -t template ] [ -m <machine conf> ] [ -d <dst directory> ][-s] [<mgm host>]"
|
||||
baseport=""
|
||||
basedir=""
|
||||
proc_no=1
|
||||
node_id=1
|
||||
|
||||
#: ${NDB_PROJ_HOME:?} # If undefined, exit with error message
|
||||
dir_file=/tmp/dirs.$$
|
||||
config_file=/tmp/config.$$
|
||||
cluster_file=/tmp/cluster.$$
|
||||
|
||||
#: ${NDB_LOCAL_BUILD_OPTIONS:=--} # If undef, set to --. Keeps getopts happy.
|
||||
# You may have to experiment a bit
|
||||
# to get quoting right (if you need it).
|
||||
|
||||
|
||||
#. $NDB_PROJ_HOME/lib/funcs.sh # Load some good stuff
|
||||
trace() {
|
||||
echo $* 1>&2
|
||||
}
|
||||
syndie() {
|
||||
trace $*
|
||||
exit 1
|
||||
}
|
||||
|
||||
# defaults for options related variables
|
||||
#
|
||||
|
||||
mgm_nodes=0
|
||||
ndb_nodes=0
|
||||
api_nodes=0
|
||||
uniq_id=$$.$$
|
||||
own_host=`hostname`
|
||||
dst_dir=""
|
||||
template=/dev/null
|
||||
machines=/dev/null
|
||||
verbose=yes
|
||||
|
||||
# used if error when parsing the options environment variable
|
||||
#
|
||||
env_opterr="options environment variable: <<$options>>"
|
||||
|
||||
# Option parsing, for the options variable as well as the command line.
|
||||
#
|
||||
# We want to be able to set options in an environment variable,
|
||||
# as well as on the command line. In order not to have to repeat
|
||||
# the same getopts information twice, we loop two times over the
|
||||
# getopts while loop. The first time, we process options from
|
||||
# the options environment variable, the second time we process
|
||||
# options from the command line.
|
||||
#
|
||||
# The things to change are the actual options and what they do.
|
||||
#
|
||||
add_node(){
|
||||
no=$1; shift
|
||||
add_procs(){
|
||||
type=$1; shift
|
||||
echo $* | awk 'BEGIN{FS=":";}{h=$1; if(h=="localhost") h="'$own_host'";
|
||||
printf("%s_%d_host=%s\n", "'$type'", "'$no'", h);
|
||||
if(NF>1 && $2!="") printf("%s_%d_port=%d\n",
|
||||
"'$type'", "'$no'", $2);
|
||||
if(NF>2 && $3!="") printf("%s_%d_dir=%s\n",
|
||||
"'$type'", "'$no'", $3);
|
||||
}'
|
||||
while [ $# -ne 0 ]
|
||||
do
|
||||
add_proc $type $1
|
||||
shift
|
||||
done
|
||||
}
|
||||
|
||||
|
||||
add_mgm_node(){
|
||||
mgm_nodes=`cat /tmp/mgm_nodes.$uniq_id | grep "_host=" | wc -l`
|
||||
mgm_nodes=`expr $mgm_nodes + 1`
|
||||
while [ $# -gt 0 ]
|
||||
do
|
||||
add_node ${mgm_nodes} mgm_node $1 >> /tmp/mgm_nodes.$uniq_id
|
||||
shift
|
||||
mgm_nodes=`expr $mgm_nodes + 1`
|
||||
done
|
||||
}
|
||||
|
||||
add_ndb_node(){
|
||||
ndb_nodes=`cat /tmp/ndb_nodes.$uniq_id | grep "_host=" | wc -l`
|
||||
ndb_nodes=`expr $ndb_nodes + 1`
|
||||
while [ $# -gt 0 ]
|
||||
do
|
||||
add_node ${ndb_nodes} ndb_node $1 >> /tmp/ndb_nodes.$uniq_id
|
||||
shift
|
||||
ndb_nodes=`expr $ndb_nodes + 1`
|
||||
done
|
||||
}
|
||||
|
||||
add_api_node(){
|
||||
api_nodes=`cat /tmp/api_nodes.$uniq_id | grep "_host=" |wc -l`
|
||||
api_nodes=`expr $api_nodes + 1`
|
||||
while [ $# -gt 0 ]
|
||||
do
|
||||
add_node ${api_nodes} api_node $1 >> /tmp/api_nodes.$uniq_id
|
||||
shift
|
||||
api_nodes=`expr $api_nodes + 1`
|
||||
done
|
||||
}
|
||||
|
||||
rm -rf /tmp/mgm_nodes.$uniq_id ; touch /tmp/mgm_nodes.$uniq_id
|
||||
rm -rf /tmp/ndb_nodes.$uniq_id ; touch /tmp/ndb_nodes.$uniq_id
|
||||
rm -rf /tmp/api_nodes.$uniq_id ; touch /tmp/api_nodes.$uniq_id
|
||||
|
||||
for optstring in "$options" "" # 1. options variable 2. cmd line
|
||||
do
|
||||
|
||||
while getopts d:m:t:n:o:a:b:p:s i $optstring # optstring empty => no arg => cmd line
|
||||
do
|
||||
case $i in
|
||||
|
||||
q) verbose="";; # echo important things
|
||||
t) template=$OPTARG;; # Template
|
||||
d) dst_dir=$OPTARG;; # Destination directory
|
||||
m) machines=$OPTARG;; # Machine configuration
|
||||
s) mgm_start=yes;; # Make mgm start script
|
||||
\?) syndie $env_opterr;; # print synopsis and exit
|
||||
|
||||
add_proc (){
|
||||
dir=""
|
||||
conf=""
|
||||
case $type in
|
||||
mgm)
|
||||
dir="ndb_mgmd"
|
||||
conf="[ndb_mgmd]\nId: $node_id\nHostName: $2\n"
|
||||
node_id=`expr $node_id + 1`
|
||||
;;
|
||||
api)
|
||||
dir="ndb_api"
|
||||
conf="[api]\nId: $node_id\nHostName: $2\n"
|
||||
node_id=`expr $node_id + 1`
|
||||
;;
|
||||
ndb)
|
||||
dir="ndb"
|
||||
conf="[ndbd]\nId: $node_id\nHostName: $2\n"
|
||||
node_id=`expr $node_id + 1`
|
||||
;;
|
||||
mysqld)
|
||||
dir="mysqld"
|
||||
conf="[mysqld]\nId: $node_id\nHostName: $2\n"
|
||||
node_id=`expr $node_id + 1`
|
||||
;;
|
||||
mysql)
|
||||
dir="mysql"
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
[ -n "$optstring" ] && OPTIND=1 # Reset for round 2, cmdline options
|
||||
|
||||
env_opterr= # Round 2 should not use the value
|
||||
|
||||
done
|
||||
shift `expr $OPTIND - 1`
|
||||
|
||||
if [ -z "$dst_dir" ]
|
||||
then
|
||||
verbose=
|
||||
fi
|
||||
|
||||
skip(){
|
||||
no=$1; shift
|
||||
shift $no
|
||||
echo $*
|
||||
}
|
||||
|
||||
# --- option parsing done ---
|
||||
grep "^ndb: " $machines | while read node
|
||||
do
|
||||
node=`skip 1 $node`
|
||||
add_ndb_node $node
|
||||
done
|
||||
|
||||
grep "^api: " $machines | while read node
|
||||
do
|
||||
node=`skip 1 $node`
|
||||
add_api_node $node
|
||||
done
|
||||
|
||||
grep "^mgm: " $machines | while read node
|
||||
do
|
||||
node=`skip 1 $node`
|
||||
add_mgm_node $node
|
||||
done
|
||||
|
||||
tmp=`grep "^baseport: " $machines | tail -1 | cut -d ":" -f 2`
|
||||
if [ "$tmp" ]
|
||||
then
|
||||
baseport=`echo $tmp`
|
||||
else
|
||||
syndie "Unable to find baseport"
|
||||
fi
|
||||
|
||||
trim(){
|
||||
echo $*
|
||||
}
|
||||
tmp=`grep "^basedir: " $machines | tail -1 | cut -d ":" -f 2`
|
||||
if [ "$tmp" ]
|
||||
then
|
||||
basedir=`trim $tmp`
|
||||
fi
|
||||
|
||||
# -- Load enviroment --
|
||||
ndb_nodes=`cat /tmp/ndb_nodes.$uniq_id | grep "_host=" | wc -l`
|
||||
api_nodes=`cat /tmp/api_nodes.$uniq_id | grep "_host=" | wc -l`
|
||||
mgm_nodes=`cat /tmp/mgm_nodes.$uniq_id | grep "_host=" | wc -l`
|
||||
. /tmp/ndb_nodes.$uniq_id
|
||||
. /tmp/api_nodes.$uniq_id
|
||||
. /tmp/mgm_nodes.$uniq_id
|
||||
rm -f /tmp/ndb_nodes.$uniq_id /tmp/api_nodes.$uniq_id /tmp/mgm_nodes.$uniq_id
|
||||
|
||||
# -- Verify
|
||||
trace "Verifying arguments"
|
||||
|
||||
if [ ! -r $template ]
|
||||
then
|
||||
syndie "Unable to read template file: $template"
|
||||
fi
|
||||
|
||||
if [ $ndb_nodes -le 0 ]
|
||||
then
|
||||
syndie "No ndb nodes specified"
|
||||
fi
|
||||
|
||||
if [ $api_nodes -le 0 ]
|
||||
then
|
||||
syndie "No api nodes specified"
|
||||
fi
|
||||
|
||||
if [ $mgm_nodes -gt 1 ]
|
||||
then
|
||||
syndie "More than one mgm node specified"
|
||||
fi
|
||||
|
||||
if [ $mgm_nodes -eq 0 ]
|
||||
then
|
||||
trace "No managment server specified using `hostname`"
|
||||
mgm_nodes=1
|
||||
mgm_node_1=`hostname`
|
||||
fi
|
||||
|
||||
if [ -n "$dst_dir" ]
|
||||
then
|
||||
mkdir -p $dst_dir
|
||||
if [ ! -d $dst_dir ]
|
||||
then
|
||||
syndie "Unable to create dst dir: $dst_dir"
|
||||
fi
|
||||
DST=/tmp/$uniq_id
|
||||
fi
|
||||
|
||||
# --- option verifying done ---
|
||||
|
||||
# Find uniq computers
|
||||
i=1
|
||||
while [ $i -le $mgm_nodes ]
|
||||
do
|
||||
echo `eval echo "\$"mgm_node_${i}_host` >> /tmp/hosts.$uniq_id
|
||||
i=`expr $i + 1`
|
||||
done
|
||||
|
||||
i=1
|
||||
while [ $i -le $ndb_nodes ]
|
||||
do
|
||||
echo `eval echo "\$"ndb_node_${i}_host` >> /tmp/hosts.$uniq_id
|
||||
i=`expr $i + 1`
|
||||
done
|
||||
|
||||
i=1
|
||||
while [ $i -le $api_nodes ]
|
||||
do
|
||||
echo `eval echo "\$"api_node_${i}_host` >> /tmp/hosts.$uniq_id
|
||||
i=`expr $i + 1`
|
||||
done
|
||||
|
||||
sort -u -o /tmp/hosts.$uniq_id /tmp/hosts.$uniq_id
|
||||
|
||||
get_computer_id(){
|
||||
grep -w -n $1 /tmp/hosts.$uniq_id | cut -d ":" -f 1
|
||||
}
|
||||
|
||||
get_mgm_computer_id(){
|
||||
a=`eval echo "\$"mgm_node_${1}_host`
|
||||
get_computer_id $a
|
||||
}
|
||||
|
||||
get_ndb_computer_id(){
|
||||
a=`eval echo "\$"ndb_node_${1}_host`
|
||||
get_computer_id $a
|
||||
}
|
||||
|
||||
get_api_computer_id(){
|
||||
a=`eval echo "\$"api_node_${1}_host`
|
||||
get_computer_id $a
|
||||
}
|
||||
|
||||
# -- Write config files --
|
||||
|
||||
mgm_port=$baseport
|
||||
|
||||
(
|
||||
i=1
|
||||
#echo "COMPUTERS"
|
||||
cat /tmp/hosts.$uniq_id | while read host
|
||||
do
|
||||
echo "[COMPUTER]"
|
||||
echo "Id: $i"
|
||||
echo "ByteOrder: Big"
|
||||
echo "HostName: $host"
|
||||
echo
|
||||
i=`expr $i + 1`
|
||||
done
|
||||
|
||||
node_id=1
|
||||
echo
|
||||
|
||||
# Mgm process
|
||||
echo
|
||||
echo "[MGM]"
|
||||
echo "Id: $node_id"
|
||||
echo "ExecuteOnComputer: `get_mgm_computer_id 1`"
|
||||
echo "PortNumber: $mgm_port"
|
||||
node_id=`expr $node_id + 1`
|
||||
|
||||
# Ndb processes
|
||||
i=1
|
||||
ndb_nodes=`trim $ndb_nodes`
|
||||
while [ $i -le $ndb_nodes ]
|
||||
do
|
||||
echo
|
||||
echo "[DB]"
|
||||
echo "Id: $node_id"
|
||||
echo "ExecuteOnComputer: `get_ndb_computer_id $i`"
|
||||
echo "FileSystemPath: $basedir/run/node-${node_id}-fs"
|
||||
i=`expr $i + 1`
|
||||
node_id=`expr $node_id + 1`
|
||||
done
|
||||
|
||||
# API processes
|
||||
i=1
|
||||
while [ $i -le $api_nodes ]
|
||||
do
|
||||
echo
|
||||
echo "[API]"
|
||||
echo "Id: $node_id"
|
||||
echo "ExecuteOnComputer: `get_api_computer_id $i`"
|
||||
i=`expr $i + 1`
|
||||
node_id=`expr $node_id + 1`
|
||||
done
|
||||
|
||||
# Connections
|
||||
current_port=`expr $mgm_port + 1`
|
||||
echo
|
||||
|
||||
# Connect Mgm with all ndb-nodes
|
||||
i=1
|
||||
while [ $i -le $ndb_nodes ]
|
||||
do
|
||||
echo
|
||||
echo "[TCP]"
|
||||
echo "NodeId1: 1"
|
||||
echo "NodeId2: `expr $i + 1`"
|
||||
echo "PortNumber: $current_port"
|
||||
i=`expr $i + 1`
|
||||
current_port=`expr $current_port + 1`
|
||||
done
|
||||
|
||||
# Connect All ndb processes with all ndb processes
|
||||
i=1
|
||||
while [ $i -le $ndb_nodes ]
|
||||
do
|
||||
j=`expr $i + 1`
|
||||
while [ $j -le $ndb_nodes ]
|
||||
do
|
||||
echo
|
||||
echo "[TCP]"
|
||||
echo "NodeId1: `expr $i + 1`"
|
||||
echo "NodeId2: `expr $j + 1`"
|
||||
echo "PortNumber: $current_port"
|
||||
j=`expr $j + 1`
|
||||
current_port=`expr $current_port + 1`
|
||||
done
|
||||
i=`expr $i + 1`
|
||||
done
|
||||
|
||||
# Connect all ndb-nodes with all api nodes
|
||||
i=1
|
||||
while [ $i -le $ndb_nodes ]
|
||||
do
|
||||
j=1
|
||||
while [ $j -le $api_nodes ]
|
||||
do
|
||||
echo
|
||||
echo "[TCP]"
|
||||
echo "NodeId1: `expr $i + 1`"
|
||||
echo "NodeId2: `expr $j + $ndb_nodes + 1`"
|
||||
echo "PortNumber: $current_port"
|
||||
j=`expr $j + 1`
|
||||
current_port=`expr $current_port + 1`
|
||||
done
|
||||
i=`expr $i + 1`
|
||||
done
|
||||
echo
|
||||
) > $DST
|
||||
|
||||
trace "Init config file done"
|
||||
|
||||
if [ -z "$dst_dir" ]
|
||||
then
|
||||
cat $DST
|
||||
rm -f $DST
|
||||
rm -f /tmp/hosts.$uniq_id
|
||||
exit 0
|
||||
fi
|
||||
|
||||
###
|
||||
# Create Ndb.cfg files
|
||||
|
||||
# nodeid=2;host=localhost:2200
|
||||
|
||||
# Mgm node
|
||||
mkcfg(){
|
||||
mkdir -p $dst_dir/${2}.ndb_${1}
|
||||
(
|
||||
echo "OwnProcessId $2"
|
||||
echo "host://${mgm_node_1_host}:${mgm_port}"
|
||||
) > $dst_dir/${2}.ndb_${1}/Ndb.cfg
|
||||
if [ $1 = "db" ]
|
||||
dir="$proc_no.$dir"
|
||||
proc_no=`expr $proc_no + 1`
|
||||
echo -e $dir >> $dir_file
|
||||
if [ "$conf" ]
|
||||
then
|
||||
mkdir $dst_dir/node-${2}-fs
|
||||
echo -e $conf >> $config_file
|
||||
fi
|
||||
}
|
||||
|
||||
mkcfg mgm 1
|
||||
cat $DST > $dst_dir/1.ndb_mgm/initconfig.txt
|
||||
|
||||
trace "Creating Ndb.cfg for ndb nodes"
|
||||
|
||||
current_node=2
|
||||
i=1
|
||||
while [ $i -le $ndb_nodes ]
|
||||
cnf=/dev/null
|
||||
cat $1 | while read line
|
||||
do
|
||||
mkcfg db ${current_node}
|
||||
i=`expr $i + 1`
|
||||
current_node=`expr $current_node + 1`
|
||||
case $line in
|
||||
baseport:*) baseport=`echo $line | sed 's/baseport[ ]*:[ ]*//g'`;;
|
||||
basedir:*) basedir=`echo $line | sed 's/basedir[ ]*:[ ]*//g'`;;
|
||||
mgm:*) add_procs mgm `echo $line | sed 's/mgm[ ]*:[ ]*//g'`;;
|
||||
api:*) add_procs api `echo $line | sed 's/api[ ]*:[ ]*//g'`;;
|
||||
ndb:*) add_procs ndb `echo $line | sed 's/ndb[ ]*:[ ]*//g'`;;
|
||||
mysqld:*) add_procs mysqld `echo $line | sed 's/mysqld[ ]*:[ ]*//g'`;;
|
||||
mysql:*) add_procs mysql `echo $line | sed 's/mysql[ ]*:[ ]*//g'`;;
|
||||
"-- cluster config")
|
||||
if [ "$cnf" = "/dev/null" ]
|
||||
then
|
||||
cnf=$cluster_file
|
||||
else
|
||||
cnf=/dev/null
|
||||
fi
|
||||
;;
|
||||
*) echo $line >> $cnf
|
||||
esac
|
||||
done
|
||||
|
||||
trace "Creating Ndb.cfg for api nodes"
|
||||
cat $dir_file | xargs mkdir -p
|
||||
|
||||
i=1
|
||||
while [ $i -le $api_nodes ]
|
||||
do
|
||||
mkcfg api ${current_node}
|
||||
i=`expr $i + 1`
|
||||
current_node=`expr $current_node + 1`
|
||||
if [ -f $cluster_file ]
|
||||
then
|
||||
cat $cluster_file $config_file >> /tmp/config2.$$
|
||||
mv /tmp/config2.$$ $config_file
|
||||
fi
|
||||
|
||||
for i in `find . -type d -name '*.ndb_mgmd'`
|
||||
do
|
||||
cp $config_file $i/config.ini
|
||||
done
|
||||
|
||||
rm -f $DST
|
||||
rm -f /tmp/hosts.$uniq_id
|
||||
|
||||
|
||||
exit 0
|
||||
# vim: set sw=4:
|
||||
rm -f $config_file $dir_file $cluster_file
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
#!/bin/sh
|
||||
|
||||
save_args=$*
|
||||
VERSION="ndb-autotest.sh version 1.0"
|
||||
VERSION="ndb-autotest.sh version 1.01"
|
||||
|
||||
DATE=`date '+%Y-%m-%d'`
|
||||
export DATE
|
||||
|
@ -76,6 +76,7 @@ then
|
|||
eval $configure --prefix=$run_dir
|
||||
make
|
||||
make install
|
||||
(cd $run_dir; ./bin/mysql_install_db)
|
||||
fi
|
||||
|
||||
###
|
||||
|
@ -103,6 +104,8 @@ fi
|
|||
test_dir=$run_dir/mysql-test/ndb
|
||||
atrt=$test_dir/atrt
|
||||
html=$test_dir/make-html-reports.sh
|
||||
mkconfig=$run_dir/mysql-test/ndb/make-config.sh
|
||||
|
||||
PATH=$test_dir:$PATH
|
||||
export PATH
|
||||
|
||||
|
@ -214,7 +217,7 @@ do
|
|||
|
||||
run_hosts=`echo $avail_hosts| awk '{for(i=1;i<='$count';i++)print $i;}'`
|
||||
choose $run_dir/d.template $run_hosts > $run_dir/d.txt
|
||||
choose $run_dir/1.ndb_mgmd/initconfig.template $run_hosts > $run_dir/1.ndb_mgmd/config.ini
|
||||
(cd $run_dir; $mkconfig d.txt )
|
||||
echo $run_hosts >> /tmp/filter_hosts.$$
|
||||
|
||||
cd $run_dir
|
||||
|
|
Loading…
Add table
Reference in a new issue