Calpont InfiniDB Enterprise

Calpont InfiniDB Community Edition

(Below I used Ubuntu 13.04, Calpont InfiniDB Enterprise version 3.6.1, whose MySQL frontend is version 5.1.39)

InfiniDB at this moment does not support "share nothing" configuration, so multiple-node InfiniDB configuration actually assumes the underlying storage is on a SAN.

Configuration for single-node

Suppose it is to be run by non-root user foobar and it is already installed under /opt/Calpont
  1. Create an entry in /etc/sudoers by root:
    foobar ALL = NOPASSWD: ALL
    
  2. Set up environment variables
    export INFINIDB_INSTALL_DIR=/opt/Calpont
    export LD_LIBRARY_PATH=$INFINIDB_INSTALL_DIR/lib:$INFINIDB_INSTALL_DIR/mysql/lib/mysql:$LD_LIBRARY_PATH
    source /opt/Calpont/bin/calpontAlias
    
  3. Under /opt/Calpont/lib, make sure symbolic links such as libbatchloader.so (linked to libbatchloader.so.1.0.0) are created.

    To check, execute ldd /opt/Calpont/bin/PrimProc

  4. Edit /opt/Calpont/mysql/my.cnf file.

    Set up socket file location, port number, datadir, max_allowed_packet, etc.

    The InfiniDB Enterprise version supports data compression. Add the following line to /opt/Calpont/mysql/my.cnf (it should be there by default):

    [mysqld]
    
    infinidb_compression_type=2
    
  5. Execute /opt/Calpont/bin/postConfigure

Start/Shutdown Server

  1. Set up environment variables
    export INFINIDB_INSTALL_DIR=/opt/Calpont
    export LD_LIBRARY_PATH=$INFINIDB_INSTALL_DIR/lib:$INFINIDB_INSTALL_DIR/mysql/lib/mysql:$LD_LIBRARY_PATH
    
  2. Start server: sudo service infinidb start then /opt/Calpont/bin/calpontConsole startSystem
  3. Restart server: /opt/Calpont/bin/calpontConsole restartSystem y
  4. Stop server: /opt/Calpont/bin/calpontConsole shutdownSystem y

Command-line tools

Log files, lock file

Initial files

Process tree

/bin/bash /opt/Calpont/bin/run.sh /opt/Calpont/bin/ProcMon
 \_ /opt/Calpont/bin/ProcMon
     \_ [ProcMgr]
     \_ /opt/Calpont/bin/controllernode fg
     \_ /opt/Calpont/bin/ServerMonitor
     \_ /opt/Calpont/bin/workernode DBRM_Worker1 fg
     \_ [PrimProc]
     \_ [ExeMgr]
     \_ [WriteEngineServ]
     \_ [DMLProc]
     \_ [DDLProc]
/bin/sh /opt/Calpont/mysql//bin/mysqld_safe --defaults-file=/opt/Calpont/mysql/my.cnf --datadir=....
 \_ /opt/Calpont/mysql/libexec/mysqld --defaults-file=/opt/Calpont/mysql//my.cnf --basedir=/opt/Calpont ...

Migrate data from MySQL to single-node InfiniDB

  1. Dump the table, say t1 of database mydb, into a "|" separate file:
    mysql> USE mydb;
    mysql> SELECT * FROM t1 INTO OUTFILE '/tmp/t1.tbl' FIELDS TERMINATED BY '|';
    
  2. Create the table in InfiniDB. One can show table schema in MySQL by
    mysql> SHOW CREATE TABLE t1;
    
    Note that InfiniDB does not have indices, so remove all KEY clauses in the table scheme. Also, switch the ENGINE to InfiniDB.

    InfiniDB does not recognize things like COLLATE='utf8_general_ci' (in a table column) when creating a table. Use DEFAULT CHARSET=utf8 instead.

  3. Once the table is in InfiniDB, use cpimport utility. It assumes the default delimiter to be "|":
    $ /opt/Calpont/bin/cpimport mydb t1 /tmp/t1.tbl
    

  4. The logs are under /opt/Calpont/data/bulk/log

Troubleshooting

Here are some troubleshooting tips:
  1. $ sudo chmod 444 /etc/init.d/infinidb /etc/init.d/mysql-Calpont
    
    and then reboot.

  2. Execute /opt/Calpont/bin/postConfigure and use default options, i.e.

    System Server install: Single
    System Name: calpont-1
    Data Storage: internal
    List (Nx,Ny,Nz) or range (Nx-Nz) of dbroot IDs assigned to module 'pm1': 1
    SNMP-Trap process enabled: n