El 2012-05-21 22:15, Marc Aymerich escribió: 

> 2012/5/20 Matías
Bellone <matiasbell...@gmail.com>:
> 
>> 2012/5/20 Maykel Franco
Hernández <may...@maykel.sytes.net [3]>: 
>> 
>>> El 2012-05-19 22:57,
Matías Bellone escribió: 2012/5/19 Maykel Franco Hernández
<may...@maykel.sytes.net [1]>: Hola muy buenas, he implementado mysql
cluster en debian lenny y la verdad es que va bastante bien. Estoy
tratando de importar una bbdd que es bastante grande, ocupa 16 GB. Al
hacer un: mysql -u root -p "database" < mysql.sql Me reporta el
siguiente error: Table is full... He estado mirando desde el cliente
management de administración ejecutando este comando: ALL REPORT MEMORY
USAGE Y se ve como poco a poco va subiendo el index y el data: ndb_mgm>
ALL REPORT MEMORY USAGE Node 2: Data usage is 80%(63 32K pages of total
8192) Node 2: Index usage is 7%(60 8K pages of total 8224) Node 3: Data
usage is 81%(63 32K pages of total 8192) Node 3: Index usage is 7%(60 8K
pages of total 8224) Eso aparentemente te dice la cantidad de páginas
que tiene, no la cantidad de memoria utilizada. Cuando llega ya cerca
del 91% se cae la importación del sql y devuelve: ERROR 1114 (HY000) at
line 227: The table 'table_log' is full He estado mirando en la
documentación de mysql y dice que el mysql cluster soporta comom áximo
8192MB de Data Memory. Depende de la versión, por lo que dice el manual
de MySQL 5.0[1] tanto DataMemory como IndexMemory pueden ser entre 1Mb y
1Tb [1]
http://dev.mysql.com/doc/refman/5.0/en/mysql-cluster-ndbd-definition.html#ndbparam-ndbd-datamemory
[2] He probado a subirle el IndexMemory y el DataMemory a por ejemplo
16000 pero sigue con el mismo error. Es más, al ejecutarle el "ALL
REPORT MEMORY USAGE" sigue teniendo 8192. Estás leyendo mal los números
reportados. Creo que la siguiente aclaración del manual podría ser lo
que ocurre en tu caso: Currently, MySQL Cluster can use a maximum of 512
MB for hash indexes per partition, which means in some cases it is
possible to get Table is full errors in MySQL client applications even
when ndb_mgm -e "ALL REPORT MEMORYUSAGE" shows significant free
DataMemory. This can also pose a problem with data node restarts on
nodes that are heavily loaded with data. You can force NDB to create
extra partitions for MySQL Cluster tables and thus have more memory
available for hash indexes by using the MAX_ROWS option for CREATE
TABLE. In general, setting MAX_ROWS to twice the number of rows that you
expect to store in the table should be sufficient. Eso quiere decir que
si tenés demasiadas filas en una sola partición con índices de ese tipo,
estás llegando a ese límite. Y no podría aumentar ése limite??
>> Si la
documentación no indica qué directiva de configuración sirve para
modificar esos límites probablemente quiera decir que la única forma de
cambiar esos valores sea modificando el código de MySQL y
re-compilando.
> 
> Pero si lo dice en el texto que has pasado, no?
> 
>
In general, setting MAX_ROWS to twice the number of rows that you
>
expect to store in the table should be sufficient.
> 
> -- 
> Marc
> 
>
-- To UNSUBSCRIBE, email to debian-user-spanish-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact
listmas...@lists.debian.org Archive:
http://lists.debian.org/ca+dcn_v05yoqpizqqaxmpkz8w+5qt_gs_k+-rptnm5n8axv...@mail.gmail.com

Si
lo que dice es que tengo que crear el doble del número de filas totales
de la tabla y que con eso debería solventarse. Pero claro la tengo en
ndbcluster, tendré que hacer un replace cambiándola de ndbcluster a
InnoDB por ejemplo, hacer un SELECT COUNT(*) FROM "tabla";

Luego una
vez importada, le definiré el MAX_ROWS al doble para esa tabla y
finalmente le haré un alter table , para pasarla de InnoDB a
ndbcluster.

Lo probaré.

Saludos y gracias.

 

Links:
------
[1]
mailto:may...@maykel.sytes.net
[2]
http://dev.mysql.com/doc/refman/5.0/en/mysql-cluster-ndbd-definition.html#ndbparam-ndbd-datamemory
[3]
mailto:may...@maykel.sytes.net

Responder a