Инструменты пользователя

Инструменты сайта


linux:mysql:multiple
Warning: Undefined array key -1 in /home/virtwww/w_linko22-ru_c0d3353b/http/inc/html.php on line 1458

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
linux:mysql:multiple [2011/12/09 10:53]
linko22@gmail.com
linux:mysql:multiple [2011/12/27 16:13] (текущий)
linko22@gmail.com
Строка 4: Строка 4:
  
 <code cli> <code cli>
-mkdir /var/lib/mysql2/mysql+mkdir -p /var/lib/mysql2/mysql
 mkdir /var/lib/mysql2/mysql/data mkdir /var/lib/mysql2/mysql/data
 mkdir /var/lib/mysql2/mysql/log mkdir /var/lib/mysql2/mysql/log
Строка 13: Строка 13:
 </code> </code>
  
-2. Создаем новый минимальный конфигурационный файл для нашего нового сервера **/etc/my.server2.cnf**+2. Создаем новый минимальный конфигурационный файл для нашего нового сервера **/etc/my2.cnf**
  
-<code bash>+<file bash my2.cnf>
  
 [mysqld] [mysqld]
Строка 22: Строка 22:
 socket=/var/lib/mysql2/mysql/mysql.sock socket=/var/lib/mysql2/mysql/mysql.sock
 user=mysql user=mysql
-# Default to using old password format for compatibility with mysql 3.x 
-# clients (those using the mysqlclient10 compatibility package). 
-old_passwords=1 
 log-bin = /var/lib/mysql2/mysql/log/mysql-bin.log log-bin = /var/lib/mysql2/mysql/log/mysql-bin.log
 [mysqld_safe] [mysqld_safe]
Строка 31: Строка 28:
 [isamchk] [isamchk]
 [myisamchk] [myisamchk]
 +</file>
 +
 +3. Создаем новый init.d скрипт **/etc/init.d/mysql2**
 +
 +<file bash mysql2>
 +#!/bin/bash
 +#
 +# mysqld.server2 This shell script takes care of starting and stopping
 +#               the MySQL subsystem (mysqld).
 +#
 +# chkconfig: - 64 36
 +# description:  MySQL database server 2nd instance.
 +# processname: mysqld
 +# config: /etc/my2.cnf
 +# pidfile: /var/lib/mysql2/mysql/run/mysqld.pid
 +# Source function library.
 +. /etc/rc.d/init.d/functions
 +# Source networking configuration.
 +. /etc/sysconfig/network
 +prog="MySQL"
 +# extract value of a MySQL option from config files
 +# Usage: get_mysql_option SECTION VARNAME DEFAULT
 +# result is returned in $result
 +# We use my_print_defaults which prints all options from multiple files,
 +# with the more specific ones later; hence take the last match.
 +get_mysql_option(){
 +        result=`/usr/bin/my_print_defaults "$1" | sed -n "s/^--$2=//p" | tail -n 1`
 +        if [ -z "$result" ]; then
 +            # not found, use default
 +            result="$3"
 +        fi
 +}
 +get_mysql_option mysqld datadir "/var/lib/mysql2/mysql/data"
 +datadir="/var/lib/mysql2/mysql/data"
 +get_mysql_option mysqld socket "$datadir/mysql.sock"
 +socketfile="$datadir/mysql.sock"
 +get_mysql_option mysqld_safe log-error "/var/lib/mysql2/mysql/log/mysqld.log"
 +errlogfile="/var/lib/mysql2/mysql/log/mysqld.log"
 +get_mysql_option mysqld_safe pid-file "/var/lib/mysql2/mysql/run/mysqld.pid"
 +mypidfile="/var/lib/mysql2/mysql/run/mysqld.pid"
 +start(){
 +        touch "$errlogfile"
 +        chown mysql:mysql "$errlogfile"
 +        chmod 0640 "$errlogfile"
 +        [ -x /sbin/restorecon ] && /sbin/restorecon "$errlogfile"
 +        if [ ! -d "$datadir/mysql" ] ; then
 +            action $"Initializing MySQL database: " /usr/bin/mysql_install_db
 +            ret=$?
 +            chown -R mysql:mysql "$datadir"
 +            if [ $ret -ne 0 ] ; then
 +                return $ret
 +            fi
 +        fi
 +        chown mysql:mysql "$datadir"
 +        chmod 0755 "$datadir"
 +        # Pass all the options determined above, to ensure consistent behavior.
 +        # In many cases mysqld_safe would arrive at the same conclusions anyway
 +        # but we need to be sure.
 +        /usr/bin/mysqld_safe --defaults-file=/etc/my2.cnf --datadir="$datadir" --socket="$socketfile" \
 +                --log-error="$errlogfile" --pid-file="$mypidfile" \
 +                >/dev/null 2>&1 &
 +        ret=$?
 +        # Spin for a maximum of N seconds waiting for the server to come up.
 +        # Rather than assuming we know a valid username, accept an "access
 +        # denied" response as meaning the server is functioning.
 +        if [ $ret -eq 0 ]; then
 +            STARTTIMEOUT=30
 +            while [ $STARTTIMEOUT -gt 0 ]; do
 +                RESPONSE=`/usr/bin/mysqladmin -uUNKNOWN_MYSQL_USER ping 2>&1` && break
 +                echo "$RESPONSE" | grep -q "Access denied for user" && break
 +                sleep 1
 +                let STARTTIMEOUT=${STARTTIMEOUT}-1
 +            done
 +            if [ $STARTTIMEOUT -eq 0 ]; then
 +                    echo "Timeout error occurred trying to start MySQL Daemon."
 +                    action $"Starting $prog: " /bin/false
 +                    ret=1
 +            else
 +                    action $"Starting $prog: " /bin/true
 +            fi
 +        else
 +            action $"Starting $prog: " /bin/false
 +        fi
 +        [ $ret -eq 0 ] && touch /var/lib/mysql2/mysql/lock/mysqld
 +        return $ret
 +}
 +stop(){
 +        MYSQLPID=`cat "$mypidfile"  2>/dev/null `
 +        if [ -n "$MYSQLPID" ]; then
 +            /bin/kill "$MYSQLPID" >/dev/null 2>&1
 +            ret=$?
 +            if [ $ret -eq 0 ]; then
 +                STOPTIMEOUT=60
 +                while [ $STOPTIMEOUT -gt 0 ]; do
 +                    /bin/kill -0 "$MYSQLPID" >/dev/null 2>&1 || break
 +                    sleep 1
 +                    let STOPTIMEOUT=${STOPTIMEOUT}-1
 +                done
 +                if [ $STOPTIMEOUT -eq 0 ]; then
 +                    echo "Timeout error occurred trying to stop MySQL Daemon."
 +                    ret=1
 +                    action $"Stopping $prog: " /bin/false
 +                else
 +                    rm -f /var/lib/mysql2/mysql/lock/mysqld
 +                    rm -f "$socketfile"
 +                    action $"Stopping $prog: " /bin/true
 +                fi
 +            else
 +                action $"Stopping $prog: " /bin/false
 +            fi
 +        else
 +            ret=1
 +            action $"Stopping $prog: " /bin/false
 +        fi
 +        return $ret
 +}
 +restart(){
 +    stop
 +    start
 +}
 +condrestart(){
 +    [ -e /var/lib/mysql2/mysql/lock/mysqld ] && restart || :
 +}
 +# See how we were called.
 +case "$1" in
 +  start)
 +    start
 +    ;;
 +  stop)
 +    stop
 +    ;;
 +  status)
 +    status mysqld
 +    ;;
 +  restart)
 +    restart
 +    ;;
 +  condrestart)
 +    condrestart
 +    ;;
 +  *)
 +    echo $"Usage: $0 {start|stop|status|condrestart|restart}"
 +    exit 1
 +esac
 +exit $?
 +</file>
 +
 +4. Включаем автозапуск и стартуем
 +
 +<code cli>
 +chmod +x /etc/init.d/mysqld2
 +chkconfig mysqld2 on
 +service mysqld2 start
 +</code>
 +
 +5. Меняем пароль
 +
 +<code cli>
 +mysqladmin -P 3307 --protocol=tcp -u root password 'NEWPASSWORD'
 +</code>
 +
 +6. Подключаемся и смотрим
 +
 +<code cli>
 +# mysql -P 3307 --protocol=tcp -uroot -p
 +Enter password:
 +Welcome to the MySQL monitor.  Commands end with ; or \g.
 +Your MySQL connection id is 11
 +Server version: 5.5.19-log Source distribution
 +Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
 +mysql> show databases;
 ++--------------------+
 +| Database           |
 ++--------------------+
 +| information_schema |
 +| mysql              |
 +| test               |
 ++--------------------+
 +3 rows in set (0.00 sec)
 +mysql>
 +</code>
 +
 +7. Проверяеем запущеные демоны
 +
 +<code cli>
 +
 +# ps -ax | grep mysql
 +Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.8/FAQ
 + 2996 pts/1    S+     0:00 grep --color=auto mysql
 +15491 ?        S      0:00 /bin/sh /usr/bin/mysqld_safe --datadir=/var/lib/mysql --socket=/var/lib/mysql/mysql.sock --pid-file=/var/run/mysqld/mysqld.pid --basedir=/usr --user=mysql --open-files-limit=65535
 +16096 ?        Sl   5422:02 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --user=mysql --log-error=/var/log/mysqld.log --open-files-limit=65535 --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/lib/mysql/mysql.sock
 +19765 ?        S      0:00 /bin/sh /usr/bin/mysqld_safe --defaults-file=/etc/my2.cnf --datadir=/var/lib/mysql2/mysql/data --socket=/var/lib/mysql2/mysql/data/mysql.sock --log-error=/var/lib/mysql2/mysql/log/mysqld.log --pid-file=/var/lib/mysql2/mysql/run/mysqld.pid
 +20343 ?        Sl    15:04 /usr/libexec/mysqld --defaults-file=/etc/my2.cnf --basedir=/usr --datadir=/var/lib/mysql2/mysql/data --plugin-dir=/usr/lib64/mysql/plugin --user=mysql --log-error=/var/lib/mysql2/mysql/log/mysqld.log --pid-file=/var/lib/mysql2/mysql/run/mysqld.pid --socket=/var/lib/mysql2/mysql/data/mysql.sock --port=3307
 </code> </code>
  
 +8. По мотивам статьи [[http://unixmen.com/linux-tutorials/1863--multiple-mysql-instance-on-fedoracentosredhatscientific-linux]]
linux/mysql/multiple.1323413596.txt.gz · Последнее изменение: 2011/12/09 10:53 — linko22@gmail.com