Compartilhamento de tecnologia

Entrevista - Banco de dados e tabela de cluster Mysql-3

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina


Prefácio

Você conhece clusters MySQL? Você entende o processo de replicação mestre-escravo? Este artigo se concentra na introdução das perguntas da entrevista, e desejo que todos os programadores possam participar! ! !


1. Cluster Mysql

No ambiente online, geralmente implantamos uma instância Mysql com 1 mestre e 1 escravo, ou 1 mestre com vários escravos, para obter alta disponibilidade do Mysql e separação de leitura e gravação do Mysql mestre-escravo é realizada por meio de logs binários;

1.1 Construção do cluster Mysql:

Em relação à construção do cluster mestre-escravo Mysql, você pode consultar o artigo abaixo do blogueiro

1.2 Processo de sincronização mestre-escravo:

Insira a descrição da imagem aqui

2. Como o Mysql lida com o armazenamento massivo de dados?

Como armazenamento de dados relacionais, o MySQL terá um gargalo de desempenho quando o volume de dados de uma única tabela exceder 30 milhões. Da mesma forma, a conexão do cliente e a simultaneidade suportadas por uma única instância do MySQL apresentam certos gargalos. considere usar a tecnologia de subbanco de dados e subtabela para implementar.

2.1 Divisão vertical

2.1.1 Subbiblioteca vertical:

Por exemplo, os microsserviços atuais foram divididos verticalmente. Cada módulo de microsserviço pode ser conectado à sua própria instância de banco de dados Mysql. Sua característica é que ele é baseado em tabelas e divide diferentes tabelas em diferentes bibliotecas de acordo com o negócio. e expandir dados em diferentes níveis; aumentar conexões de disco I0 e volume de dados sob alta simultaneidade;
Insira a descrição da imagem aqui

2.1.2 Mesa vertical:

Com base nos campos, diferentes campos são divididos em diferentes tabelas de acordo com os atributos do campo.Isso pode ser feito: separar dados quentes e frios; reduzir a competição de transição de IO e as duas tabelas não afetarem uma à outra.

Insira a descrição da imagem aqui

2.2 Divisão horizontal:

2.2.1 Subbiblioteca horizontal:

Divida os dados de uma biblioteca em várias bibliotecas. Ele resolve o problema de gargalo de desempenho de um grande número de bibliotecas únicas e alta simultaneidade e melhora a estabilidade e disponibilidade do sistema.
Insira a descrição da imagem aqui

2.2.2 Mesa horizontal:

Divida os dados de uma tabela em várias tabelas (podem estar na mesma biblioteca). Otimizar problemas de desempenho causados ​​por volume excessivo de dados em uma única tabela; evitar contenção de IO e reduzir a probabilidade de bloqueios de tabelas;
Insira a descrição da imagem aqui

2.3 Você usa subbibliotecas e subtabelas em seu projeto?

Estabelecemos instâncias de banco de dados de acordo com diferentes negócios em spring-boot gerenciados por spring-cloud e realizamos particionamento vertical. Para lidar com o armazenamento de dados massivos, nosso projeto também utiliza o middleware Mycat para dividir bancos de dados e tabelas.

Instalação do Mycat e integração do Spring-boot:

2.4 Você encontrou algum desafio técnico ao dividir bancos de dados e tabelas?

Depois que o banco de dados for dividido em tabelas, porque os dados serão armazenados em várias tabelas em vários bancos de dados, serão encontradas transações distribuídas, IDs globais distribuídos, configurações de regras de roteamento e problemas de paginação entre nós;


Resumir

Este artigo responde a algumas perguntas da entrevista sobre clusters, subbancos de dados e tabelas Mysql.