Installing a Binary Distribution

Precompiled binaries for MySQL running on linux i686, linux x86_64, and Mac OS X 10.4 are provided. If your MySQL matches the condition, please follow the steps below to install the matching binary distribution.
  1. determine whether if your MySQL installation was compiled with --with-fast-mutexes option, by looking at CONFIGURE_LINE of bin/mysqlbug script.
  2. download appropriate binary distribution of Q4M from http://q4m.kazuhooku.com/dist/. If your MySQL installation was compiled with --with-fast-mutexes option, then choose a Q4M archive having with-fast-mutexes within its filename. Otherwise, choose one with without-fast-mutexes.
  3. untar the distribution
  4. copy support-files/q4m-forward to bin directory of MySQL
  5. copy libqueue_engine.so to lib/mysql/plugin directory of MySQL (or to lib/plugin directory in case lib/mysql/plugin does not exists)
  6. run support-files/install.sql
  7. run the test suite
To FreeBSD users: Q4M is now included in the FreeBSD ports collection (or a binary build compatible with MySQL binary provided by MySQL AB can be downloaded from http://q4m.kazuhooku.com/dist/).

Installing from Source

For installing the source distribution, source code of MySQL is required.
  1. download and build MySQL 5.1 (installation is not mandatory, but if you plan to install Q4M into a binary distribution of MySQL, make sure to use the same configuration options for building the MySQL source distribution. The configuration of MySQL can be found in bin/mysqlbug script.)
  2. download the source distribution of Q4M from http://q4m.kazuhooku.com/dist/
  3. untar the Q4M distribution
  4. run configure
  5. run make
  6. run make install
  7. run support-files/install.sql
  8. run the test suite
Below are the important options when configuring Q4M.
--with-mysql=mysql-source-dir
set the directory of MySQL source code (required)
--prefix=mysql-dir
set the directory under which MySQL 5.1 is installed (optional)
--with-debug
if your MySQL is built with --with-debug option, Q4M should be built with this option as well. Or your MySQL server will crash. (optional)
--with-sync=yes|no|fdatasync|fsync|fcntl
select disk synchronization method (default:yes). Fcntl is only avialable for Mac OS X, and is slow. If you have performance problems, changing this value would help.
--enable-mmap
use memory-mapped file for reading data (default:yes)
--with-delete=pwrite|msync
method for deleting rows, weather to use pwrite or write directly to mmaped file (default:pwrite)

Testing the Installation

To test your installation, run the run_tests.pl. You can set your database location by using the DBI environment variable. DBI_USER and DBI_PASSWORD variables are also avialable. An output like below should appear.
$ DBI='dbi:mysql:database=test;host=kazdev;port=3307' ./run_tests.pl
t/01-base................ok
t/02-queue...............ok
t/03-queue-error-wait....ok
t/03-queue-error.........ok
t/04-blob................ok
t/05-multireader.........

Multireader benchmark result:
    Number of messages: 6400
    Number of readers:  32
    Elapsed:            3.366 seconds
    Throughput:         1901.245 mess./sec.

t/05-multireader.........ok
All tests successful.
Files=6, Tests=5370, 140 wallclock secs (115.80 cusr +  5.92 csys = 121.72 CPU)
$ 

Source Repository of Q4M

Source repository of Q4M is located at http://github.com/q4m/q4m/.