SQLinfo.ru - Все о MySQL

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

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

Вы не зашли.

#26 28.07.2011 23:29:55

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

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

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


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

Неактивен

 

#27 28.07.2011 23:42:45

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

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

Брр, такую переписку пропустил sad Ну, ничего, лучше поздно, чем никогда.

1. В дебиан-подобных системах MySQL собран так, чтобы писать журнал ошибок
в syslog. Соответственно, по умолчанию он попадает в /var/log/daemon.log.

2. В убунту ребята побоялись использовать selinux, зато не побоялись исполь-
зовать apparmor. В частности, это означает, что Вам не удастся запустить MySQL
с нестандартными путями для баз, для сокета, пидфайла и т.п. Если позволяют
настройки безопасности, то можно просто остановить apparmor или даже удалить
его из системы. Если нужно всё-таки оставить, то следует поизучать
/etc/apparmor.d/usr.sbin.mysqld и добавить туда соответствующие разрешения.

Неактивен

 

#28 28.07.2011 23:48:00

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

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

Всё не стала копировать, только, то что после попытки запуска туда дописывается:

/var/log/daemon.log написал:

Jul 28 21:44:54 zzz-tower mysqld_safe[9585]: started
Jul 28 21:44:54 zzz-tower mysqld[9589]: Could not open required defaults file: /etc/mysql/my2.cnf
Jul 28 21:44:54 zzz-tower mysqld[9589]: Fatal error in defaults handling. Program aborted
Jul 28 21:44:54 zzz-tower mysqld_safe[9591]: ended

Файл второй нашла, вот его содержимое, на что менять?

/etc/apparmor.d/usr.sbin.mysqld написал:

# vim:syntax=apparmor
# Last Modified: Tue Jun 19 17:37:30 2007
#include <tunables/global>

/usr/sbin/mysqld {
  #include <abstractions/base>
  #include <abstractions/nameservice>
  #include <abstractions/user-tmp>
  #include <abstractions/mysql>

  capability dac_override,a
  capability setgid,
  capability setuid,

  /etc/hosts.allow r,
  /etc/hosts.deny r,

  /etc/group              m,
  /etc/passwd             m,

  /etc/mysql/*.pem r,
  /etc/mysql/conf.d/ r,
  /etc/mysql/conf.d/* r,
  /etc/mysql/my.cnf r,
  /usr/sbin/mysqld mr,
  /usr/share/mysql/** r,
  /var/lib/mysql/ r,
  /var/lib/mysql/** rwk,
  /var/log/mysql/ r,
  /var/log/mysql/* rw,
  /var/run/mysqld/mysqld.pid w,
  /var/run/mysqld/mysqld.sock w,
}


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

Неактивен

 

#29 28.07.2011 23:55:28

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

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

Добавить туда пути к новым файлам, доступ к которым нужно разрешить mysql. И перезапустить apparmor. Для начала можно остановить apparmor и настроить все без него, а потом уже с безопасностью разбираться.

Неактивен

 

#30 28.07.2011 23:58:37

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

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

Как минимум — добавить каталоги, в которые должно пускать сервер
по аналогии со стандартными путями. То есть для Вашего случая я бы
добавил

/var/www/db_servers/db_server_1/ r,
/var/www/db_servers/db_server_1/** rwk,
/var/www/db_servers/tmpdir1/ r,
/var/www/db_servers/tmpdir1/** rwk,
/var/www/db_servers/logs/ r,
/var/www/db_servers/logs/** rwk,

Возможно, понадобится что-то еще. Я бы начал с отключения apparmor
вообще, чтобы убедиться, что дело в нем.

Неактивен

 

#31 28.07.2011 23:59:06

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

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

Боюсь накосячить, что потом ничего работать не будет, можите подправить код, я его себе скопирую, все пути указаны выше roll


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

Неактивен

 

#32 29.07.2011 00:02:23

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

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

Волков бояться — в лес не ходить wink

Просто скопируйте файлик в сторонку на всякий случай, и дальше редактируйте.
Тогда всегда сможете вернуться к сохраненному варианту smile

Неактивен

 

#33 29.07.2011 00:09:38

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

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

Файлик отредактировала, но не нашла как отключит армор, по аналогии с апачем и ДБ не получилось sad


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

Неактивен

 

#34 29.07.2011 00:25:42

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

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

Почему не получилось? Вот попытка чтения из запрещенного каталога:

Код:

silentia:~$ mysql -e "load data infile '/tmp/a.txt' into table a(id)" test
ERROR 29 (HY000) at line 1: File '/tmp/a.txt' not found (Errcode: 13)
silentia:~$ sudo /etc/init.d/apparmor teardown
 * Unloading AppArmor profiles                                                                                   [ OK ] 
silentia:~$ mysql -e "load data infile '/tmp/a.txt' into table a(id)" test
silentia:~$

Неактивен

 

#35 29.07.2011 00:35:35

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

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

log написал:

Jul 28 22:29:43 zzz-tower mysqld_safe[10349]: started
Jul 28 22:29:43 zzz-tower mysqld[10352]: 110728 22:29:43  InnoDB: Started; log sequence number 0 46976
Jul 28 22:29:43 zzz-tower mysqld[10352]: 110728 22:29:43 [Note] /usr/sbin/mysqld: ready for connections.
Jul 28 22:29:43 zzz-tower mysqld[10352]: Version: '5.0.51a-3ubuntu5.8-log'  socket: '/var/run/mysqld/mysqld.sock'  port: 3306  (Ubuntu)
Jul 28 22:30:32 zzz-tower mysqld[10352]: 110728 22:30:32 [Note] /usr/sbin/mysqld: Normal shutdown
Jul 28 22:30:32 zzz-tower mysqld[10352]:
Jul 28 22:30:32 zzz-tower mysqld[10352]: 110728 22:30:32  InnoDB: Starting shutdown...
Jul 28 22:30:33 zzz-tower mysqld[10352]: 110728 22:30:33  InnoDB: Shutdown completed; log sequence number 0 46976
Jul 28 22:30:33 zzz-tower mysqld[10352]: 110728 22:30:33 [Note] /usr/sbin/mysqld: Shutdown complete
Jul 28 22:30:33 zzz-tower mysqld[10352]:
Jul 28 22:30:34 zzz-tower mysqld_safe[10381]: ended

consol написал:

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

Пид файл в деректории создался, а вот зокс нет (

а потом консоль выдала это на коннект:

consol написал:

zzz@zzz-tower:~$ mysql -h 127.0.0.181 -P 12355 -u root -ppassword
ERROR 2003 (HY000): Can't connect to MySQL server on '127.0.0.181' (111)
zzz@zzz-tower:~$


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

Неактивен

 

#36 29.07.2011 00:38:54

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

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

Oк, а что Вы делаете перед STOPPING? или оно само? Попробуйте запустить
без mysqld_safe?

MySQL успешно запускается, но потом mysqld_safe его убивает (^C?).

Неактивен

 

#37 29.07.2011 00:45:00

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

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

да, контрл-С


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

Неактивен

 

#38 29.07.2011 00:46:45

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

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

но тестирую я ДО того, как убиваю


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

Неактивен

 

#39 29.07.2011 00:57:08

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

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

Он пишет, что порт у вас 3306:
Jul 28 22:29:43 zzz-tower mysqld[10352]: Version: '5.0.51a-3ubuntu5.8-log'  socket: '/var/run/mysqld/mysqld.sock'  port: 3306  (Ubuntu)

Неактивен

 

#40 29.07.2011 01:00:13

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

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

Таак, теперь давайте сравнивать конфиги. В последнем, который Вы написали,
порт 3306, а Вы пытаетесь соединиться с каким-то высоким. Нужно, чтобы порт
был тот же самый.

Проверять можно командой telnet, иногда это проще smile

Если сложно угадать, какой порт слушает сервер, — можно подглядеть. Для
процесса с pid 10352 (так, как у Вас было в предыдущем примере) — что-то вида
sudo lsof -p 10352 | grep LISTEN.

Неактивен

 

#41 29.07.2011 01:02:17

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

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

Урааааа, пошло smile

А теперь можно в кратце несколько пунктов:
Как всё собрать в одном файле
Сделать так чтоб при рестарте компа оно всё разом само запускалось
Как через конфиг прописать рутов каждому?


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

Неактивен

 

#42 29.07.2011 01:13:02

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

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

Стандартного способа убунту, к сожалению, нету, поэтому будем использовать
стандартный способ MySQL.

Есть такой замечательный сценарий — mysqld_multi:
http://dev.mysql.com/doc/refman/5.1/en/ … multi.html

Его можно вполне использовать в качестве инитскрипта. То есть можно сделать
символическую ссылку в init.d, а потом прописать ссылки в уровни загрузки.
Как-то так:
ln -s `which mysqld_multi` /etc/init.d/mysqld_multi
update-rc.d mysqld_multi defaults

Стандартный запускатор, соответственно, убираем:
update-rc.d -f mysql remove

В один файл предлагаю объединить самостоятельно smile Все различающиеся
куски надо положить в разделы вида [mysqldXXX] (в документации очень
подробный пример, я бы скопировал с него). Что такое «прописать рутов»
не понял, но если Вы пишете какие-то параметры в командной строке, ровно
такие же параметры можно писать и в файле конфигурации (без -- только).

Неактивен

 

#43 29.07.2011 01:16:30

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

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

Мне надо отойти на полчасика, приду опробую, со ссылкой знакома, если посмотрите наверху, у меня изначально именно оно и было. Если вас не будет, до завтра отпишусь об успехах smile


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

Неактивен

 

#44 29.07.2011 03:48:32

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

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

не разобралась, всё таки в линуксе я ещё нуб (


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

Неактивен

 

#45 29.07.2011 08:39:34

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

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

И что не заработало?

Неактивен

 

#46 29.07.2011 08:46:54

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

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

Утро доброе.

paulus написал:

То есть можно сделать
символическую ссылку в init.d

Ссылку на что иммено?


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

Неактивен

 

#47 29.07.2011 09:06:29

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

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

На mysqld_multi. В linux принято, чтобы все запускаемые системой сценарии
располагались в /etc/init.d (посмотрите, там много файликов). mysqld_multi
можно или скопировать туда, или просто сделать символическую ссылку на
него.

update-rc.d в свою очередь сделает символические ссылки с правильными
названиями в каталогах /etc/rc.*d — из них сценарии выполняются при старте
системы.

Надеюсь, понятно объяснил smile

P.S. Про это есть кусок в КИТ (презентация про gnu/linux):
http://company.yandex.ru/academic/kit , в Ubuntu используется SysV и upstart
(в Вашей версии — только sysvinit).

Неактивен

 

#48 29.07.2011 09:11:14

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

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

Сделала

consol написал:

zzz@zzz-tower:~$ sudo ln -s `which mysqld_multi` /etc/init.d/mysqld_multi
zzz@zzz-tower:~$ sudo update-rc.d mysqld_multi defaults
Adding system startup for /etc/init.d/mysqld_multi ...
   /etc/rc0.d/K20mysqld_multi -> ../init.d/mysqld_multi
   /etc/rc1.d/K20mysqld_multi -> ../init.d/mysqld_multi
   /etc/rc6.d/K20mysqld_multi -> ../init.d/mysqld_multi
   /etc/rc2.d/S20mysqld_multi -> ../init.d/mysqld_multi
   /etc/rc3.d/S20mysqld_multi -> ../init.d/mysqld_multi
   /etc/rc4.d/S20mysqld_multi -> ../init.d/mysqld_multi
   /etc/rc5.d/S20mysqld_multi -> ../init.d/mysqld_multi
zzz@zzz-tower:~$ sudo update-rc.d -f mysql remove
Removing any system startup links for /etc/init.d/mysql ...
   /etc/rc0.d/K21mysql
   /etc/rc1.d/K21mysql
   /etc/rc2.d/S19mysql
   /etc/rc3.d/S19mysql
   /etc/rc4.d/S19mysql
   /etc/rc5.d/S19mysql
   /etc/rc6.d/K21mysql
zzz@zzz-tower:~$

Теперь, что дальше?


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

Неактивен

 

#49 29.07.2011 09:16:34

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

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

/etc/init.d/mysqld_multi start — должно запустить все настроенные экземпляры MySQL

Неактивен

 

#50 29.07.2011 09:29:07

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

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

Я их ещё не до настраивала, можете проверить файл плз.
Дело в том, что такой файл я уже делала позавчера, когда читала мануал про мультизапуск, но так как он немного отличался от оригинального файла, с которым нам сегодня/вчера удалось запустить второй сервер, я его немного скомпоновала, перенеся из основного файла, не закомментированные строчки, если они уже у меня были, я их содержимое заменила, на то, что я уже прописала, но вот не знаю, что делать с теми, что остались, откуда взяла, плохо помню, думаю, что из мануала, я их на всякий случай тут закоментировала

my_multi.cnf написал:

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


[mysqld1]
user        = mysql
bind-address    = 127.0.0.181
port        = 12355
pid-file    = /var/www/db_servers/db_server_1/db_server_1.pid
socket        = /var/www/db_servers/db_server_1/mysql.sock
log        = /var/www/db_servers/log1/log.log
basedir        = /usr
datadir        = /var/www/db_servers/db_server_1
tmpdir        = /var/www/db_servers/tmpdir1/
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



#tcp-ip
#protocol    = TCP
#host        = dbserver1.xxx.info
#log-error    = /var/www/db_servers/log1/log_error.log
#bdb-tmpdir    = /var/www/db_servers/bdbtmpdir1/
#user        = root
#password    = samsung
#




#[mysqld2]
user        = mysql
bind-address    = 127.0.0.182
port        = 12355
pid-file    = /var/www/db_servers/db_server_2/db_server_2.pid
socket        = /var/www/db_servers/db_server_2/mysql.sock
log        = /var/www/db_servers/log2/log.log
basedir        = /usr
datadir        = /var/www/db_servers/db_server_2
tmpdir        = /var/www/db_servers/tmpdir2/
language    = /usr/share/mysql/english
skip-external-locking




#tcp-ip
#protocol    = TCP
#host        = dbserver2.xxx.info
#log-error    = /var/www/db_servers/log2/log_error.log
#bdb-tmpdir    = /var/www/db_servers/bdbtmpdir2/
#user        = root
#password    = samsung
##


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

Неактивен

 

Board footer

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