SQLinfo.ru - Все о MySQL Webew.ru: теория и практика веб-технологий

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 28.07.2011 19:04:04

animegirl
Активист
Зарегистрирован: 28.07.2011
Сообщений: 288

Как симулировать несколько MySQL-серверов?

В проекте запланированно участие нескольких MySQL-серверов, машина для теста одна, как сделать так, чтоб при обращение к 127.0.0.101 был один сервер, а по обращению к 127.0.0.102 другой, но установленный на том же физическом компе, и той же запущенной ОС.

Дать базам разные иммена - не выход, так как имена баз, так же как имена таблиц и прочия структура - идентичны

Система: убунту 8.04
MySQL: 5.0.51a-3ubuntu5.8

На данный момент застряла на том, что конфиги изменила, папки создала, права раздала, но оно всё не запускается sad


/etc/mysql/my.cnf написал:

[client]
port        = 3306
socket        = /var/run/mysqld/mysqld.sock

[mysqld_safe]
socket        = /var/run/mysqld/mysqld.sock
nice        = 0

[mysqld]
user        = mysql
pid-file    = /var/run/mysqld/mysqld.pid
socket        = /var/run/mysqld/mysqld.sock
port        = 3306
basedir        = /usr
datadir        = /var/lib/mysql
tmpdir        = /tmp
language    = /usr/share/mysql/english
skip-external-locking

key_buffer        = 16M
max_allowed_packet    = 16M
thread_stack        = 128K
thread_cache_size    = 8
query_cache_limit       = 1M
query_cache_size        = 16M

expire_logs_days    = 10
max_binlog_size         = 100M

skip-bdb


[mysqldump]
quick
quote-names
max_allowed_packet    = 16M

[mysql]


[isamchk]
key_buffer        = 16M




#
# * IMPORTANT: Additional settings that can override those from this file!
# The files must end with '.cnf', otherwise they'll be ignored.
#
!includedir /etc/mysql/conf.d/

/etc/mysql/conf.d/xxx.cnf написал:

[mysqld_multi]
mysqld     = /usr/bin/mysqld_safe
mysqladmin = /usr/bin/mysqladmin
user       = root
password   = samsung


[mysqld1]
socket        = /var/www/db_servers/db_server_1/mysql.sock
bind-address    = 127.0.0.181
host        = dbserver1.xxx.info
port        = 12355
pid-file    = /var/www/db_servers/db_server_1/hostname.pid
datadir        = /var/www/db_servers/db_server_1
log        = log.log
log-error    = log_error.log
language    = /usr/share/mysql/english
user        = john

[mysqld2]
socket        = /var/www/db_servers/db_server_2/mysql.sock
bind-address    = 127.0.0.182
host        = dbserver2.xxx.info
port        = 12355
pid-file    = /var/www/db_servers/db_server_2/hostname.pid
datadir        = /var/www/db_servers/db_server_2
language    = /usr/share/mysql/english
user        = monty

/etc/phpmyadmin/config.inc.php написал:

<?php

$i = 0;
// The $cfg['Servers'] array starts with $cfg['Servers'][1].  Do not use $cfg['Servers'][0].
// You can disable a server config entry by setting host to ''.
$i++;



$i=0;

$hosts = array (

    "dbserver1.xxx.info",//"127.0.0.81",

    "dbserver2.xxx.info",

    "localhost",

//    "quux.example.com",

);



foreach ($hosts as $host) {

    $i++;

    $cfg['Servers'][$i]['host']     = $host;

    $cfg['Servers'][$i]['port']     = '12355';

    $cfg['Servers'][$i]['connect_type']     = 'tcp';

    $cfg['Servers'][$i]['extension']        = 'mysql';

    $cfg['Servers'][$i]['auth_type']        = 'config';

    $cfg['Servers'][$i]['user']     = 'root';

    $cfg['Servers'][$i]['password'] = 'samsung';

}


$cfg['UploadDir'] = '';
$cfg['SaveDir'] = '';

/etc/hosts написал:

#DBs servers
127.0.0.181    dbserver1.xxx.info
127.0.0.182    dbserver2.xxx.info

Первый вариант попытки старта:

consol написал:

zzz@zzz-tower:~$ mysqld_safe --defaults-file=/etc/mysql/conf.d/xxx.cnf
nohup: ignoring input and redirecting stderr to stdout
Starting mysqld daemon with databases from /var/lib/mysql
mysqld_safe[16026]: started
rm: cannot remove `/var/run/mysqld/mysqld.sock': Permission denied
STOPPING server from pid file /var/lib/mysql/zzz-tower.pid
mysqld_safe[16036]: ended

Второй вариант попытки старта:

consol написал:

zzz@zzz-tower:~$ /usr/bin/mysqld_multi --config-file=/etc/mysql/conf.d/xxx.cnf start 1-2
WARNING: Log file disabled. Maybe directory or file isn't writable?
mysqld_multi log file version 2.16; run: Wed Jul 27 01:19:11 2011

Starting MySQL servers
zzz@zzz-tower:~$ nohup: redirecting stderr to stdout
Starting mysqld daemon with databases from /var/www/db_servers/db_server_2
mysqld_safe[16435]: started
nohup: redirecting stderr to stdout
STOPPING server from pid file /var/www/db_servers/db_server_2/hostname.pid
Starting mysqld daemon with databases from /var/www/db_servers/db_server_1
mysqld_safe[16446]: ended
mysqld_safe[16447]: started
STOPPING server from pid file /var/www/db_servers/db_server_1/hostname.pid
mysqld_safe[16453]: ended

Ничего не запускается, пид файл и sock файл если и создаются, то мгновенно исчезают, я их в папках пока не смогла лицезреть. Phpmyadmin  видет localhost, но не сервера.

Куда копать дальше?

Отредактированно animegirl (28.07.2011 19:21:53)


Скажи миру - НЯ!

Неактивен

 

#2 28.07.2011 19:49:51

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: Как симулировать несколько MySQL-серверов?

rm: cannot remove `/var/run/mysqld/mysqld.sock': Permission denied

Значит у пользователя, под которым запускаете mysqld_safe нет прав доступа к этому файлу. Начните с запуска под рутом, а потом уже пробуйте под юзером.

Неактивен

 

#3 28.07.2011 20:57:18

animegirl
Активист
Зарегистрирован: 28.07.2011
Сообщений: 288

Re: Как симулировать несколько MySQL-серверов?

consol написал:

zzz@zzz-tower:~$ sudo mysqld_safe --defaults-file=/etc/mysql/conf.d/way.cnf
[sudo] password for zzz:
nohup: ignoring input and redirecting stderr to stdout
Starting mysqld daemon with databases from /var/lib/mysql
mysqld_safe[8753]: started

Подождала, попыталась через phpmyadmin подключится, ошибка

pma написал:

phpMyAdmin tried to connect to the MySQL server, and the server rejected the connection. You should check the host, username and password in your configuration and make sure that they correspond to the information given by the administrator of the MySQL server.
Error
MySQL said: Documentation
#2013 - Lost connection to MySQL server at 'reading initial communication packet', system error: 111

как и ранше, файлов зокета и пида в папках не образовалось, нажала ctrl+c

consol написал:

/usr/bin/mysqladmin: connect to server at 'localhost' failed
error: 'Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)'
Check that mysqld is running and that the socket: '/var/run/mysqld/mysqld.sock' exists!
STOPPING server from pid file /var/lib/mysql/zzz-tower.pid
mysqld_safe[8791]: ended

Попыталась перезапустить с логами

consol написал:

zzz@zzz-tower:~$ sudo mysqld_safe --log-error=/var/www/db_servers/logs/log.log   --defaults-file=/etc/mysql/conf.d/way.cnf
nohup: ignoring input and redirecting stderr to stdout
mysqld_safe[8906]: A mysqld process already exists
zzz@zzz-tower:~$

Странно, без понятия, где они запустились, не знаю уже где их искать ((


Скажи миру - НЯ!

Неактивен

 

#4 28.07.2011 21:04:59

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: Как симулировать несколько MySQL-серверов?

Давайте пошагово. Вы можете запустить один mysqld и затем к нему подключиться клиентом?

mysql -h 127.0.0.1 -P 3206 -u user -ppassword

Неактивен

 

#5 28.07.2011 21:12:15

animegirl
Активист
Зарегистрирован: 28.07.2011
Сообщений: 288

Re: Как симулировать несколько MySQL-серверов?

consol написал:

zzz@zzz-tower:~$ mysql -h 127.0.0.1 -P 3206 -u root -ppassword samsung
ERROR 2003 (HY000): Can't connect to MySQL server on '127.0.0.1' (111)
zzz@zzz-tower:~$ mysql -h 127.0.0.1 -P 3306 -u root -ppassword samsung
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
zzz@zzz-tower:~$ mysql -h 127.0.0.1 -P 3306 -u root -password samsung
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
zzz@zzz-tower:~$ mysql -h 127.0.0.1 -u root -password samsung
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
zzz@zzz-tower:~$ mysql -h 127.0.0.1 -u root -ppassword samsung
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

Ничего не понимаю, юзер такой, пароль такой, пма ведь видит и заходит с теми же данными


Скажи миру - НЯ!

Неактивен

 

#6 28.07.2011 21:17:14

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: Как симулировать несколько MySQL-серверов?

Юзер такой с какого хоста разрешен? Добавьте user@'%' и user@localhost или запустите сервер с опцией skip-grant-tables

Неактивен

 

#7 28.07.2011 21:21:14

animegirl
Активист
Зарегистрирован: 28.07.2011
Сообщений: 288

Re: Как симулировать несколько MySQL-серверов?

Где посмотреть, куда добавить, что запустить? roll


Скажи миру - НЯ!

Неактивен

 

#8 28.07.2011 21:24:36

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: Как симулировать несколько MySQL-серверов?

Вот http://webew.ru/articles/2104.webew

Если кратко - добавить skip-grant-tables в my,cnf. Тогда сможет законнектиться любой юзер, для проверки достаточно - потом нужно юзера создать как написано в статье http://sqlinfo.ru/articles/info/11.html

Неактивен

 

#9 28.07.2011 21:55:36

animegirl
Активист
Зарегистрирован: 28.07.2011
Сообщений: 288

Re: Как симулировать несколько MySQL-серверов?

rgbeast написал:

Давайте пошагово. Вы можете запустить один mysqld и затем к нему подключиться клиентом?

mysql -h 127.0.0.1 -P 3206 -u user -ppassword

Вернёмся к данному шагу, походу что-то было не так с mysql переинсталлировала, там ещё пакеты сломались, чуток поковырялась, и сейчас всё свежее, и как видно команды проходит:

consol написал:

zzz@zzz-tower:~$ mysql -h 127.0.0.1 -P 3306 -u root -ppassword
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 9
Server version: 5.0.51a-3ubuntu5.8 (Ubuntu)

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql>


Скажи миру - НЯ!

Неактивен

 

#10 28.07.2011 21:56:46

animegirl
Активист
Зарегистрирован: 28.07.2011
Сообщений: 288

Re: Как симулировать несколько MySQL-серверов?

Интересен такой факт, не смотря на настройки порта в пма на 1235, когда выбираю localhost:12355 он показывает базы


Скажи миру - НЯ!

Неактивен

 

#11 28.07.2011 22:04:13

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: Как симулировать несколько MySQL-серверов?

пма только добавит путаницы, давайте лучше стандартными средствами.

Теперь шаг 2 - останавливаете mysqld_safe. Копируете /etc/my.cnf в /etc/my2.cnf и в нем делаете настройки на другие пути и другой порт (ip-адрес можно оставить тот же). Копируете cp -a /var/lib/mysql /var/lib/mysql2
Запускаете сервер с конфигурацией 2 и коннектитесь к нему клиентом (mysql).

Шаг 3 - запустить оба одновременно (если уже сделан шаг 2).

Неактивен

 

#12 28.07.2011 22:07:51

animegirl
Активист
Зарегистрирован: 28.07.2011
Сообщений: 288

Re: Как симулировать несколько MySQL-серверов?

Сейчас буду делать, но хочу кое что заметить, мне нужно чтоб ИП были разными


Скажи миру - НЯ!

Неактивен

 

#13 28.07.2011 22:12:06

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: Как симулировать несколько MySQL-серверов?

Пусть IP будут разными, но не нужно думать, что это даст возможность что-то протестировать - внутри lo интерфейса эти адреса все равно эквивалентны.

Неактивен

 

#14 28.07.2011 22:33:19

animegirl
Активист
Зарегистрирован: 28.07.2011
Сообщений: 288

Re: Как симулировать несколько MySQL-серверов?

rgbeast написал:

пма только добавит путаницы, давайте лучше стандартными средствами.

Теперь шаг 2 - останавливаете mysqld_safe. Копируете /etc/my.cnf в /etc/my2.cnf и в нем делаете настройки на другие пути и другой порт (ip-адрес можно оставить тот же). Копируете cp -a /var/lib/mysql /var/lib/mysql2
Запускаете сервер с конфигурацией 2 и коннектитесь к нему клиентом (mysql).

Шаг 3 - запустить оба одновременно (если уже сделан шаг 2).

consol написал:

zzz@zzz-tower:~$ sudo mysqld_safe --log-error=/var/www/db_servers/logs/log.log   --defaults-file=/etc/mysql/my2.cnf
nohup: ignoring input and redirecting stderr to stdout
Starting mysqld daemon with databases from /var/lib/mysql
mysqld_safe[8258]: started
STOPPING server from pid file /var/run/mysqld/mysqld.pid
mysqld_safe[8264]: ended
zzz@zzz-tower:~$

/etc/mysql/my2.cnf написал:

[client]
port        = 3306
socket        = /var/run/mysqld/mysqld.sock


[mysqld_safe]
socket        = /var/run/mysqld/mysqld.sock
nice        = 0

[mysqld]
skip-grant-tables

user        = mysql
pid-file    = /var/www/db_servers/db_server_1/hostname.pid
socket        = /var/www/db_servers/db_server_1/mysql.sock
port        = 3306
basedir        = /usr
datadir        = /var/www/db_servers/db_server_1
tmpdir        = /var/www/db_servers/tmpdir1/
language    = /usr/share/mysql/english
skip-external-locking

bind-address        = 127.0.0.181

key_buffer        = 16M
max_allowed_packet    = 16M
thread_stack        = 128K
thread_cache_size    = 8
#max_connections        = 100
#table_cache            = 64
#thread_concurrency     = 10


query_cache_limit       = 1M
query_cache_size        = 16M


#log        = /var/log/mysql/mysql.log

#log_slow_queries    = /var/log/mysql/mysql-slow.log
#long_query_time = 2
#log-queries-not-using-indexes

#server-id        = 1
#log_bin            = /var/log/mysql/mysql-bin.log
expire_logs_days    = 10
max_binlog_size         = 100M
#binlog_do_db        = include_database_name
#binlog_ignore_db    = include_database_name


skip-bdb

[mysqldump]
quick
quote-names
max_allowed_packet    = 16M

[mysql]
#no-auto-rehash    # faster start of mysql but no tab completition

[isamchk]
key_buffer        = 16M


!includedir /etc/mysql/conf.d/


Скажи миру - НЯ!

Неактивен

 

#15 28.07.2011 22:34:33

animegirl
Активист
Зарегистрирован: 28.07.2011
Сообщений: 288

Re: Как симулировать несколько MySQL-серверов?

Надо разделить уже сейчас по ИП, это потом в аппликации будет использоваться во всю, чтоб потом не копатся в коде, для изменений, надо сейчас настроить несколько серверов виртуальных


Скажи миру - НЯ!

Неактивен

 

#16 28.07.2011 22:42:05

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: Как симулировать несколько MySQL-серверов?

Запускайте без опции --log-error=/var/www/db_servers/logs/log.log она приводит к игнорированию файла настроек

Неактивен

 

#17 28.07.2011 22:50:56

animegirl
Активист
Зарегистрирован: 28.07.2011
Сообщений: 288

Re: Как симулировать несколько MySQL-серверов?

Файлы скопировала, папки скопировала, файл подправила, chown новым папкам сменила на mysql.


Скажи миру - НЯ!

Неактивен

 

#18 28.07.2011 22:52:22

animegirl
Активист
Зарегистрирован: 28.07.2011
Сообщений: 288

Re: Как симулировать несколько MySQL-серверов?

rgbeast написал:

Запускайте без опции --log-error=/var/www/db_servers/logs/log.log она приводит к игнорированию файла настроек

consol написал:

zzz@zzz-tower:~$ sudo mysqld_safe --defaults-file=/etc/mysql/my2.cnf
[sudo] password for zzz:
nohup: ignoring input and redirecting stderr to stdout
Starting mysqld daemon with databases from /var/www/db_servers/db_server_1
mysqld_safe[8568]: started
STOPPING server from pid file /var/www/db_servers/db_server_1/hostname.pid
mysqld_safe[8574]: ended
zzz@zzz-tower:~$


Скажи миру - НЯ!

Неактивен

 

#19 28.07.2011 22:56:49

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: Как симулировать несколько MySQL-серверов?

Теперь смотрите что в логе /var/log/mysql/mysql.log (кстати путь к нему нужно тоже заменить в конфигурационном файле)

Неактивен

 

#20 28.07.2011 23:02:02

animegirl
Активист
Зарегистрирован: 28.07.2011
Сообщений: 288

Re: Как симулировать несколько MySQL-серверов?

Разкомментировала строку с логами, перезапустила, логов нету


Скажи миру - НЯ!

Неактивен

 

#21 28.07.2011 23:04:23

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: Как симулировать несколько MySQL-серверов?

А есть путь /var/log/mysql? Есть ли лог по стандартному пути /var/log/mysqld.log ?

Неактивен

 

#22 28.07.2011 23:06:20

animegirl
Активист
Зарегистрирован: 28.07.2011
Сообщений: 288

Re: Как симулировать несколько MySQL-серверов?

/var/log/mysqld.log есть но он 0 байт


Скажи миру - НЯ!

Неактивен

 

#23 28.07.2011 23:17:14

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: Как симулировать несколько MySQL-серверов?

Сделайте проще - в my2.cnf
log        = /tmp/my.log

Неактивен

 

#24 28.07.2011 23:23:16

animegirl
Активист
Зарегистрирован: 28.07.2011
Сообщений: 288

Re: Как симулировать несколько MySQL-серверов?

Сделала, лог файла не создалось, у меня почему-то развивается параноидальная мысль, что либо я не то запускаю, либо эти скрипты просто игнорируют все конфиги, и берут данные откуда-то с другого места

Кстате, там сверу надо было сделать mysql stop, a его вернуть надо было на старт?


Скажи миру - НЯ!

Неактивен

 

#25 28.07.2011 23:29:16

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: Как симулировать несколько MySQL-серверов?

Вроде никакой сложности быть не должно - просто запустить два mysqld_safe с опцией --defaults-file: http://dev.mysql.com/doc/refman/5.1/en/ … rvers.html

А какая ОС?

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson