I used this guide to get started and this wiki page as a reference for the upstart script.
My problem is that when I do a service mysql start
I get six processes instead of two, as if upstart ran three times. Here are the processes copied from ps
:
/usr/sbin/mysqld --user=root --pid-file=/var/run/mysqld/mysqld1.pid --socket=/var/run/mysqld/mysqld1.sock --port=3301 --basedir=/usr --datadir=/var/lib/mysql1 --tmpdir=/tmp --lc-messages-dir=/usr/share/mysql --skip-external-locking --key_buffer=16M --max_allowed_packet=16M --thread_stack=192K --thread_cache_size=8 --myisam-recover=BACKUP --query_cache_limit=1M --query_cache_size=16M --general_log_file=/var/log/mysql/mysql1-general.log --log_error=/var/log/mysql/error.log --server-id=201 --log_bin=/var/log/mysql/mysql1-bin.log --expire_logs_days=10 --max_binlog_size=100M
/usr/sbin/mysqld --user=root --pid-file=/var/run/mysqld/mysqld2.pid --socket=/var/run/mysqld/mysqld2.sock --port=3302 --basedir=/usr --datadir=/var/lib/mysql2 --tmpdir=/tmp --lc-messages-dir=/usr/share/mysql --skip-external-locking --key_buffer=16M --max_allowed_packet=16M --thread_stack=192K --thread_cache_size=8 --myisam-recover=BACKUP --query_cache_limit=1M --query_cache_size=16M --general_log_file=/var/log/mysql/mysql2-general.log --log_error=/var/log/mysql/error.log --server-id=202 --log_bin=/var/log/mysql/mysql2-bin.log --expire_logs_days=10 --max_binlog_size=100M --innodb_file_per_table --innodb_flush_method=O_DIRECT --innodb_log_file_size=1G --innodb_buffer_pool_size=4G
/usr/sbin/mysqld --user=root --pid-file=/var/run/mysqld/mysqld1.pid --socket=/var/run/mysqld/mysqld1.sock --port=3301 --basedir=/usr --datadir=/var/lib/mysql1 --tmpdir=/tmp --lc-messages-dir=/usr/share/mysql --skip-external-locking --key_buffer=16M --max_allowed_packet=16M --thread_stack=192K --thread_cache_size=8 --myisam-recover=BACKUP --query_cache_limit=1M --query_cache_size=16M --general_log_file=/var/log/mysql/mysql1-general.log --log_error=/var/log/mysql/error.log --server-id=201 --log_bin=/var/log/mysql/mysql1-bin.log --expire_logs_days=10 --max_binlog_size=100M
/usr/sbin/mysqld --user=root --pid-file=/var/run/mysqld/mysqld2.pid --socket=/var/run/mysqld/mysqld2.sock --port=3302 --basedir=/usr --datadir=/var/lib/mysql2 --tmpdir=/tmp --lc-messages-dir=/usr/share/mysql --skip-external-locking --key_buffer=16M --max_allowed_packet=16M --thread_stack=192K --thread_cache_size=8 --myisam-recover=BACKUP --query_cache_limit=1M --query_cache_size=16M --general_log_file=/var/log/mysql/mysql2-general.log --log_error=/var/log/mysql/error.log --server-id=202 --log_bin=/var/log/mysql/mysql2-bin.log --expire_logs_days=10 --max_binlog_size=100M --innodb_file_per_table --innodb_flush_method=O_DIRECT --innodb_log_file_size=1G --innodb_buffer_pool_size=4G
/usr/sbin/mysqld --user=root --pid-file=/var/run/mysqld/mysqld1.pid --socket=/var/run/mysqld/mysqld1.sock --port=3301 --basedir=/usr --datadir=/var/lib/mysql1 --tmpdir=/tmp --lc-messages-dir=/usr/share/mysql --skip-external-locking --key_buffer=16M --max_allowed_packet=16M --thread_stack=192K --thread_cache_size=8 --myisam-recover=BACKUP --query_cache_limit=1M --query_cache_size=16M --general_log_file=/var/log/mysql/mysql1-general.log --log_error=/var/log/mysql/error.log --server-id=201 --log_bin=/var/log/mysql/mysql1-bin.log --expire_logs_days=10 --max_binlog_size=100M
/usr/sbin/mysqld --user=root --pid-file=/var/run/mysqld/mysqld2.pid --socket=/var/run/mysqld/mysqld2.sock --port=3302 --basedir=/usr --datadir=/var/lib/mysql2 --tmpdir=/tmp --lc-messages-dir=/usr/share/mysql --skip-external-locking --key_buffer=16M --max_allowed_packet=16M --thread_stack=192K --thread_cache_size=8 --myisam-recover=BACKUP --query_cache_limit=1M --query_cache_size=16M --general_log_file=/var/log/mysql/mysql2-general.log --log_error=/var/log/mysql/error.log --server-id=202 --log_bin=/var/log/mysql/mysql2-bin.log --expire_logs_days=10 --max_binlog_size=100M --innodb_file_per_table --innodb_flush_method=O_DIRECT --innodb_log_file_size=1G --innodb_buffer_pool_size=4G
This causes the following lines to appear in MySQL's error.log
:
InnoDB: Unable to lock ./ibdata1, error: 11
It behaves this way even on reboot. My upstart script for MySQL is standard (as described in the wiki page linked above) except for the "script...end script" section:
script
exec /etc/init.d/mysql start
end script
I have modified the apparmor profile for MySQL and running /etc/init.d/mysql start
works correctly.
How can I get upstart to run it's mysql.conf script only once?