Dimensionando o banco de dados MySQL

1

Quais são os métodos ou ferramentas usadas para escalar o banco de dados mysql. Nós temos o banco de dados mysql que está aumentando em tamanho diariamente. Acabamos de atribuir um tamanho fixo de disco rígido, então minha preocupação é que precisaremos realocar ou aumentar o tamanho do disco rígido em algum momento, quando o disco rígido estiver cheio em capacidade.

O uso do RAID parece ser uma boa ideia, mas ainda é fixo em tamanho. Precisamos de um sistema escalável para banco de dados MySQL.

Neste momento, só consigo pensar no Hadoop como uma solução.

A solução ideal para nós é quando o HDD atingir seu limite, adicionaremos apenas outro HDD na máquina, então o MySQL o reconhecerá como um, então não podemos adicionar mais HDD no servidor, um novo servidor será configuração que irá adicionar ao tamanho total do espaço de armazenamento de dados MySQL.

    
por Jonar 10.02.2011 / 08:27

2 respostas

3

Três métodos mais populares de escalonamento são replicação master-slave, particionamento e sharding. A replicação mestre-escravo só é efetiva quando você quer escalar leituras. Não se destina a dimensionar um tamanho de banco de dados ou gravações. O Particionamento é um método de armazenar uma tabela grande em vários locais físicos (em vários HDDs) . O sharding pode ser considerado como particionamento em um nível global executado pelo aplicativo, não pelo servidor MySQL. Basicamente, sharding é um método de armazenar dados semelhantes em vários bancos de dados MySQL não diretamente acoplados. Os dois primeiros métodos são suportados internamente pelo MySQL, o sharding deve ser executado no nível da aplicação pelos desenvolvedores de aplicativos. Parece que você deve usar sharding, pois o particionamento não pode se espalhar por vários servidores e tem certas limitações.

    
por 10.02.2011 / 08:50
1

O cluster é geralmente usado como uma solução para o desempenho, no entanto, minha interpretação do que você escreveu é que é o tamanho do banco de dados que é o problema?

Usar um banco de dados NoSQL geralmente é feito por motivos de desempenho (a replicação do MySQL é simples de configurar - portanto, não há muita diferença em termos de disponibilidade), mas você perde uma quantidade ENORME de funcionalidade. O Hadoop não resolverá seus problemas de volume de dados e pode significar que você tem muito código para reescrever.

Como você gerencia os volumes de dados depende muito da natureza do aplicativo e dos dados - você pode excluir dados antigos? Você pode migrar offline? Consegue consolidar dados antigos?

The ideal solution for us is when the HDD reaches its limit, we will just add another HDD on the machine then MySQL will recognize it as one

Embora você possa simplesmente adicionar disco como uma matriz RAID-0 ou JBOD, essa é uma prática muito confusa - você está indo de um único ponto de falha a vários pontos de falha.

Da mesma forma, você pode montar o disco e migrar arquivos de tabelas individuais (usando links simbólicos dos locais originais), mas isso pressupõe que você não esteja executando um backend innodb de arquivo único. Isso é tão ruim quanto usar o RAID-0 / JBOD.

Para um DBMS transacional, o espelhamento (RAID-1) oferece enormes benefícios de desempenho, mas não aumenta os volumes de armazenamento. Portanto, eu recomendaria planejar um salto no armazenamento de 1 a 4 unidades (configuradas como um par espelhado de conjuntos de tiras).

    
por 10.02.2011 / 11:40