Задавайте вопросы, мы ответим
Вы не зашли.
В проекте запланированно участие нескольких MySQL-серверов, машина для теста одна, как сделать так, чтоб при обращение к 127.0.0.101 был один сервер, а по обращению к 127.0.0.102 другой, но установленный на том же физическом компе, и той же запущенной ОС.
Дать базам разные иммена - не выход, так как имена баз, так же как имена таблиц и прочия структура - идентичны
Система: убунту 8.04
MySQL: 5.0.51a-3ubuntu5.8
На данный момент застряла на том, что конфиги изменила, папки создала, права раздала, но оно всё не запускается
/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)
Неактивен
rm: cannot remove `/var/run/mysqld/mysqld.sock': Permission denied
Значит у пользователя, под которым запускаете mysqld_safe нет прав доступа к этому файлу. Начните с запуска под рутом, а потом уже пробуйте под юзером.
Неактивен
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:~$
Странно, без понятия, где они запустились, не знаю уже где их искать ((
Неактивен
Давайте пошагово. Вы можете запустить один mysqld и затем к нему подключиться клиентом?
mysql -h 127.0.0.1 -P 3206 -u user -ppassword
Неактивен
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)
Ничего не понимаю, юзер такой, пароль такой, пма ведь видит и заходит с теми же данными
Неактивен
Юзер такой с какого хоста разрешен? Добавьте user@'%' и user@localhost или запустите сервер с опцией skip-grant-tables
Неактивен
Где посмотреть, куда добавить, что запустить?
Неактивен
Вот http://webew.ru/articles/2104.webew
Если кратко - добавить skip-grant-tables в my,cnf. Тогда сможет законнектиться любой юзер, для проверки достаточно - потом нужно юзера создать как написано в статье http://sqlinfo.ru/articles/info/11.html
Неактивен
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>
Неактивен
Интересен такой факт, не смотря на настройки порта в пма на 1235, когда выбираю localhost:12355 он показывает базы
Неактивен
пма только добавит путаницы, давайте лучше стандартными средствами.
Теперь шаг 2 - останавливаете mysqld_safe. Копируете /etc/my.cnf в /etc/my2.cnf и в нем делаете настройки на другие пути и другой порт (ip-адрес можно оставить тот же). Копируете cp -a /var/lib/mysql /var/lib/mysql2
Запускаете сервер с конфигурацией 2 и коннектитесь к нему клиентом (mysql).
Шаг 3 - запустить оба одновременно (если уже сделан шаг 2).
Неактивен
Сейчас буду делать, но хочу кое что заметить, мне нужно чтоб ИП были разными
Неактивен
Пусть IP будут разными, но не нужно думать, что это даст возможность что-то протестировать - внутри lo интерфейса эти адреса все равно эквивалентны.
Неактивен
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/
Неактивен
Надо разделить уже сейчас по ИП, это потом в аппликации будет использоваться во всю, чтоб потом не копатся в коде, для изменений, надо сейчас настроить несколько серверов виртуальных
Неактивен
Запускайте без опции --log-error=/var/www/db_servers/logs/log.log она приводит к игнорированию файла настроек
Неактивен
Файлы скопировала, папки скопировала, файл подправила, chown новым папкам сменила на 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:~$
Неактивен
Теперь смотрите что в логе /var/log/mysql/mysql.log (кстати путь к нему нужно тоже заменить в конфигурационном файле)
Неактивен
Разкомментировала строку с логами, перезапустила, логов нету
Неактивен
А есть путь /var/log/mysql? Есть ли лог по стандартному пути /var/log/mysqld.log ?
Неактивен
/var/log/mysqld.log есть но он 0 байт
Неактивен
Сделайте проще - в my2.cnf
log = /tmp/my.log
Неактивен
Сделала, лог файла не создалось, у меня почему-то развивается параноидальная мысль, что либо я не то запускаю, либо эти скрипты просто игнорируют все конфиги, и берут данные откуда-то с другого места
Кстате, там сверу надо было сделать mysql stop, a его вернуть надо было на старт?
Неактивен
Вроде никакой сложности быть не должно - просто запустить два mysqld_safe с опцией --defaults-file: http://dev.mysql.com/doc/refman/5.1/en/ … rvers.html
А какая ОС?
Неактивен