systemadmin.es > Instalaciones > Instalación de MySQL 5.5 en CentOS 6 con upstart

Instalación de MySQL 5.5 en CentOS 6 con upstart

Anteriormente ya vimos como instalar MySQL 5.5 en una CentOS 5 desde código fuente usando daemontools. Hoy veremos la instalación para CentOS 6 con upstart.

Primero de todo necesitaremos cmake y las ncurses:

yum install cmake -y
yum install bison -y
yum install ncurses-devel -y
cd /usr/local/src
wget 'http://dev.mysql.com/get/Downloads/MySQL-5.5/mysql-5.5.16.tar.gz/from/http://mysql.easynet.be/'
tar xzf mysql-5.5.16.tar.gz
cd mysql-5.5.16

A continuación seguiremos compilando con el datadir en /var/mysql/ y los binarios instalados en /usr/local/mysql55:

cmake . -DMYSQL_DATADIR=/var/mysql/ -DENABLE_DEBUG_SYNC=0 \
        -DCMAKE_INSTALL_PREFIX=/usr/local/mysql55 \
        -DWITH_UNIT_TESTS=0
make && make install

Para crear una base del fichero my.cnf podemos partir del fichero support-files/my-medium.cnf

'cp' support-files/my-medium.cnf /etc/my.cnf
ln -s /usr/local/mysql55 /usr/local/mysql
groupadd mysql
useradd -g mysql mysql
cd /usr/local/mysql
chown -R mysql .
chgrp -R mysql .
mkdir /var/mysql -p
chown mysql. /var/mysql/
mkdir /var/log/mysql -p
chown mysql. /var/log/mysql/

Y a continuación modificar algunos parámetros típicos:

  • Deshabilitar que escuche a un puerto TCP, por lo tanto dejando únicamente la conexión por socket
  • Deshabilitar el binary log
  • Deshabiltar el storage engine federated
  • Usar el innodb_flush_method O_DIRECT para evitar el problema del doble buffering
  • Habilitar el log de slow queries a 1 segundo
  • Habilitar un tablespace por table (innodb_file_per_table)
sed 's@^\(skip-external-locking\)@\1\ndatadir=/var/mysql\nlog_error = /var/log/mysql/mysql.log\nslow_query_log_file=/var/log/mysql/mysql.slow.log\n@' -i /etc/my.cnf
sed -i 's/^#skip-networking/skip-name-resolve/' /etc/my.cnf
sed -i 's/^log-bin/#log-bin/' /etc/my.cnf
sed -i 's/^binlog_format/#binlog_format/' /etc/my.cnf
sed -i 's/skip-federated//' /etc/my.cnf
sed -i 's#^\[mysqld\]#\[mysqld\]\nuser = mysql#' /etc/my.cnf
sed -i 's/\(#innodb_lock_wait_timeout.*\)/\1\ninnodb_file_per_table\ninnodb_flush_method=O_DIRECT\n\n#slow queries\nlong_query_time=1\nslow_query_log=1\n/' /etc/my.cnf
cd /usr/local/mysql
/usr/local/mysql/scripts/mysql_install_db --user=mysql --datadir=/var/mysql 

A continuación preparemos el entorno:

ln -s /usr/local/mysql/lib /usr/local/mysql/lib64
sed -i 's#unset pathmunge#pathmunge /usr/local/mysql/bin\nunset pathmunge#' /etc/profile
sed -i 's#unset -f pathmunge#pathmunge /usr/local/mysql/bin\nunset pathmunge#' /etc/profile
echo "alias mysql='mysql -p\$(cat /var/mysql/.mysql.root.pass)'" >> /etc/profile
. /etc/profile
echo "/usr/local/mysql/lib/" >> /etc/ld.so.conf.d/mysql.conf
ldconfig

Preparamos el fichero de configuración para upstart:

cat <<EOF > /etc/init/mysql.conf
start on runlevel 3

respawn

exec /usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf
EOF
initctl start mysql
sleep 5

Finalmente creamos una contraseña con pwgen y la asignamos para el usuario root del MySQL:

pwgen 20 > /var/mysql/.mysql.root.pass
chmod 600 /var/mysql/.mysql.root.pass
/usr/local/mysql/bin/mysqladmin -u root password $(cat /var/mysql/.mysql.root.pass)
/usr/local/mysql/bin/mysqladmin -u root -h 127.0.0.1 password $(cat /var/mysql/.mysql.root.pass)
echo 'delete from mysql.user where Password="";' | mysql
echo 'flush privileges;' | mysql

Deja un comentario:

XHTML - Tags permitidos:<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>