Как сделать более 32767 MySQL баз на сервере?

12
Mr_Promoter
На сайте с 06.08.2004
Offline
254
2036

У меня дедик, вполне мощный и мне нужно ооочень много баз данных. Но вот случилось такое

root@xxx:/root# ls /var/db/mysql/|wc -l

32767

root@xxx:/root# mkdir /var/db/mysql/itsnobase

mkdir: /var/db/mysql/itsnobase: Too many links

Получается 32767 это потолок по количеству бд? Как преодолеть эту цифру? Мне нужно ну 200 - 300 тыс. баз данных. Как этого можно добиться?

http://webpromote.ru (http://webpromote.ru) - пописываю иногда ...
Roxis
На сайте с 19.11.2006
Offline
40
#1

сменить файловую систему

P
На сайте с 25.12.2003
Offline
146
#2

Или запустить несколько mysqld с разными конфигами, указав разные --datadir=

С уважением, Букреев Александр Павлович (http://bukreev.pro).
Mr_Promoter
На сайте с 06.08.2004
Offline
254
#3
Roxis:
сменить файловую систему

Админ перенес б.д. в другой раздел, где кол-во инодов больше, но это не помогло.

pesniru:
Или запустить несколько mysqld с разными конфигами, указав разные --datadir=

Можно подробнее об этом?

P
На сайте с 25.12.2003
Offline
146
#4
Mr_Promoter:
Можно подробнее об этом?

Эм. Есть датадир: /var/lib/mysql

Сделать

/var/lib/mysql1

/var/lib/mysql2

...

/var/lib/mysql99

/var/lib/mysql100

В каждый положить по my.cnf

И запускать новые mysqld так:

/usr/sbin/mysqld --basedir=/ --datadir=/var/lib/mysql100 --user=mysql --pid-file=/var/lib/mysql/mysql100.pid --skip-external-locking --socket=/var/lib/mysql100/mysql.sock

N
На сайте с 06.05.2007
Offline
419
#5

Все бы хорошо, но придется разным клиентам указывать раздельные атрибуты соединения. Или кто там у вас столько баз использует ?

Файловую систему сменить будет красивее.

Кнопка вызова админа ()
remsys
На сайте с 01.11.2007
Offline
31
#6
Mr_Promoter:

Можно подробнее об этом?

можно сделать и стандартными средствами MySQL, точнее mysqld_multi

пример конфига


[mysqld2]
port = 3317
bind-address = 10.12.140.136
socket = /var/lib/mysql2/mysql.sock
datadir = /var/lib/mysql2
...

[mysqld3]
port = 3318
bind-address = 10.12.140.136
socket = /var/lib/mysql3/mysql.sock
datadir = /var/lib/mysql3
...
www.remsys.net (www.remsys.net) - качественное обслуживание серверов
P
На сайте с 25.12.2003
Offline
146
#7
remsys:
можно сделать и стандартными средствами MySQL, точнее mysqld_multi

Кстати - да, забыл. И учитывая количество предполагаемых демонов - лучше именно так и делать. Главное не забывать, что под каждый демон нужна память и она не бесконечная...

Mr_Promoter
На сайте с 06.08.2004
Offline
254
#8
netwind:
Все бы хорошо, но придется разным клиентам указывать раздельные атрибуты соединения. Или кто там у вас столько баз использует ?

Это один скрипт такой у меня :) Настроить на разные атрибуты реально.

Значит многодемоновый способ самый оптимальный?

[Удален]
#9
Mr_Promoter:
Это один скрипт такой у меня :) Настроить на разные атрибуты реально.

Значит многодемоновый способ самый оптимальный?

Нет, это плохой способ.

Скорее всего вы наткнулись на ограничения числа субдиректорий в одной директории.

Если так, то 2 варианта:

- сменить тип файловой системы (xfs вместо ext3).

- перенести часть директорий куда-то, а в /var/lib/mysql/ наделать симлинков.

[Удален]
#10

Пардон, судя по /var/db/mysql у вас ещё и ОС не позволит сменить тип файловой системы. :-(

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий