I get error: can't find a value for '_BIND_ADDRESS_' error installing node 1

Asked by justin gunderson on 2013-05-02

I am trying to make a set of circular replicated boxes for testing GTID on.

mysql@mysql-db-dev:~/sandboxes> make_replication_sandbox --circular=3 /data/mysql-advanced-5.6.11-linux-glibc2.5-i686.tar.gz
installing node 1
Use of uninitialized value $ENV{"SANDBOX_BINARY"} in concatenation (.) or string at /home/mysql/sandbox/make_sandbox line 108.
Use of uninitialized value in string eq at /home/mysql/sandbox/low_level_make_sandbox line 262.
Use of uninitialized value in string ne at /home/mysql/sandbox/low_level_make_sandbox line 262.
can't find a value for '_BIND_ADDRESS_'
error installing node 1
unpacking /data/mysql-advanced-5.6.11-linux-glibc2.5-i686.tar.gz
Executing low_level_make_sandbox --basedir=/data/5.6.11 \
        --sandbox_directory=msb_5_6_11 \
        --install_version=5.6 \
        --sandbox_port=5611 \
        --no_ver_after_name \
        --datadir_from=script \
        --upper_directory=//home/mysql/sandboxes/rcsandbox_mysql-advanced-5_6_11 \
        --sandbox_directory=node1 \
        --no_confirm \
        --no_check_port \
        --repl_user=rsandbox \
        --repl_password=rsandbox \
        --remote_access=127.% \
        --prompt_prefix=node1 \
        --sandbox_port=15101 \
        -c \
        server-id=101 \
        -c \
        log-bin=mysql-bin \
        -c \
        log-slave-updates \
        -c \
        replicate-same-server-id=0 \
        -c \
        auto_increment_increment=3 \
        -c \
        auto_increment_offset=1 \
        -c \
        report-host=SBnode1 \
        -c \
        report-port=15101 \
        --my_clause=log-error=msandbox.err
    The MySQL Sandbox, version 3.0.28
    (C) 2006-2013 Giuseppe Maxia
installing with the following parameters:
upper_directory = //home/mysql/sandboxes/rcsandbox_mysql-advanced-5_6_11
sandbox_directory = node1
sandbox_port = 15101
check_port =
no_check_port = 1
datadir_from = script
install_version = 5.6
basedir = /data/5.6.11
tmpdir =
my_file =
operating_system_user = mysql
db_user = msandbox
remote_access =
ro_user = msandbox_ro
rw_user = msandbox_rw
repl_user = rsandbox
db_password = msandbox
repl_password = rsandbox
my_clause = server-id=101 ; log-bin=mysql-bin ; log-slave-updates ; replicate-same-server-id=0 ; auto_increment_increment=3 ; auto_increment_offset=1 ; report-host=SBnode1 ; report-port=15101 ; log-error=msandbox.err
master =
slaveof =
high_performance =
prompt_prefix = node1
prompt_body = [\h] {\u} (\d) >
force =
no_ver_after_name = 1
verbose =
load_grants = 1
no_load_grants =
no_run =
no_show =

(6400 )

Question information

Language:
English Edit question
Status:
Solved
For:
MySQL Sandbox Edit question
Assignee:
No assignee Edit question
Solved by:
Giuseppe Maxia
Solved:
2013-05-03
Last query:
2013-05-03
Last reply:
2013-05-03

It seems that MySQL Sandbox was not properly installed. The errors that you get come from values that should be initialized in the modules.

What should happen is the following:
1) you install MySQL Sandbox using CPAN (or using perl Makefile.PL; make; sudo make install)
2) you download the tarball in a directory other than ~/sandboxes
3) you run make_replication_sandbox ...

From the paths in your listings, it seems to me that you did not follow any of the above methods for installing.

Please post the result of these commands:

pushd ~

perldoc -l MySQL::Sandbox
perldoc -l MySQL::Sandbox::Scripts
perldoc -l MySQL::Sandbox::Recipes

which make_sandbox
which make_replication_sandbox
which low_level_make_sandbox
which make_multiple_sandbox

popd

justin gunderson (gunderjj) said : #2

Yes you are correct, looks like something went wrong with the initial install. Everything installed this time and I am installing 5.6.11, but for some reason the enable_gtid script was not built. Does an extra command have to happen when installing for this? The build details are below.

make_replication_sandbox --upper_directory=/data/sandbox --r=mysql_5.6.11 --topology=circular --circular=2 --check_base_port -v /data/mysql-advanced-5.6.11-linux-glibc2.5-i686.tar.gz
installing node 1
installing node 2
# server: 1:
# server: 2:
# server: 1:
# server: 2:
Circular replication activated
group directory installed in $HOME/sandboxes/mysql_5.6.11

Congratulations on a successful installation!

The reason for the lack of GTID script is because circular replication is actually created by a different script, and this one does not include the logic to create the GTID activation. I will fix this bug in a later version.

A simple workaround would be to install regular replication, take the script 'enable_gtid' from there, modify it to use the circular replication nodes, and run it.

Or use this template:

OPTIONS="master-info-repository=table "
OPTIONS="$OPTIONS relay-log-info-repository=table"
OPTIONS="$OPTIONS gtid_mode=ON"
OPTIONS="$OPTIONS log-slave-updates enforce-gtid-consistency"
CHANGED=""
for NODE in node1 node2
do
    for OPTION in $OPTIONS
    do
        option_exists=$(grep $OPTION $NODE/my.sandbox.cnf)
        if [ -z "$option_exists" ]
        then
            echo "$OPTION" >> $NODE/my.sandbox.cnf
            echo "# option '$OPTION' added to $NODE configuration file"
            CHANGED=1
        else
            echo "# option '$OPTION' already exists in $NODE configuration file"
        fi
    done
done
if [ -n "$CHANGED" ]
then
    ./restart_all
fi

justin gunderson (gunderjj) said : #4

Thanks Giuseppe Maxia, that solved my question.