Domanda

Dato che la nostra startup è decollata bene, ora stiamo incontrando alcuni di questi problemi che hai sempre assunto non ti farebbe mai influire.

Abbiamo già ridimensionato molto del nostro stack di applicazioni: abbiamo scaricato le nostre tabelle di lettura/scrittura ad alta lettura per informazioni temporanee su un server Percona separato in cui le tabelle sono in esecuzione con "Engine = Memory", nonché altre sezioni migrate su un cluster Cassandra.

Ora ci resta con un database "snello" in cui abbiamo un carico di lettura/scrittura dell'88%/12%. A questo punto ho alcune domande su cui vorrei ricevere un feedback:

1. Leggi gli schiavi

Con la nostra configurazione di lettura/scrittura, un numero di (ad esempio 2-3) le schiavi di lettura dovrebbero ridurre al minimo il carico di lettura sul nostro master di scrittura. Quanto è scalabile una soluzione di read-slave: se doppariamo/perduciamo il nostro carico aggiunge ulteriori schiavi di lettura continuerà a offrire una capacità sufficiente per le letture? Ho letto su questo post: Quali sono i limiti sulla quantità di schiavi per maestro? Tuttavia, non uscire da un background di scaleabrilità, questo può sembrare sciocco, ma è una soluzione congelabile? Ci sono un sacco di persone che spingono frammenti piuttosto che una soluzione di lettura-schiavi, tuttavia non vedo davvero un bisogno in questo momento con il nostro carico di lettura/scrittura per riscrivere grandi sezioni della nostra applicazione ... qualche pensiero?

2. Più datacenter e replica

Inoltre, stiamo cercando di servire diverse posizioni geografiche con datacenter vicino per ridurre il ritardo di rete (ci occupiamo di applicazioni mobili che non amano molto il ritardo). Il piano sarebbe quello di utilizzare la semifinconi tanto menzionata. replica (vedi: È una buona idea dividere MySQL DB in due server e La replica di MySQL è influenzata da un'interconnessione ad alta latenza? ) per una replica del master-maestro, in cui ciascun datacenter ha un singolo master e più schiavi di lettura. Ancora una volta, nella mia ingenuità, sono molto interessato a sapere se questo sarebbe nei limiti delle "migliori pratiche" durante il ridimensionamento.

3. Hardware e configurazione

Sono stato impegnato nelle ultime settimane di riferimento del nostro sistema dal vivo e sono giunto alla conclusione che, indipendentemente dalla soluzione che scegliamo per il punto 1 e 2, il server che stiamo attualmente utilizzando non lo farà per molto più tempo, potrebbe Ricevo alcuni pensieri sulla nostra configurazione:

CPU: Intel(R) Xeon(R) CPU E31275 @ 3.40GHz mit 8 cores (hyperthreading)
RAM: 16GB
Raid 10 with a strip size of 64 KB and controller cache enabled
Software: Percona 5.5
Database size: 83.7GB
Top 5 Tables:
 21302MB  table1
 7656MB  table2
 5477MB  table3
 4352MB  table4
 3663MB  table5

Impostazioni my.cnf:

 max_heap_table_size=64M
 tmp_table_size=64M
 default_storage_engine = InnoDB
 innodb_buffer_pool_size = 10G
 innodb_file_per_table   = 1
 innodb_old_blocks_time=1000
 innodb_buffer_pool_instances=10
 innodb_log_file_size=256M
 innodb_flush_method=O_DIRECT
 innodb_read_io_threads=10
 innodb_write_io_threads=10
 join_buffer_size = 67108864 #64M
 expand_fast_index_creation=ON

Passando a una soluzione cluster Xtradb Percona risolverà alcuni dei nostri problemi, ad esempio la stabilità di replica?

So che queste sono molte domande che sono molto teoriche e apprezzo chiunque si prenda il tempo di leggere e commentare i miei pensieri. Come una piccola startup in Europa non abbiamo davvero il capitale di rischio per "andare al cloud" e preferiamo avere più controllo da soli. Mentre stiamo esaminando i consulenti, ecc. Ho pensato che Stackexchange fosse il posto giusto per rimbalzare alcune idee.

Nessuna soluzione corretta

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a dba.stackexchange
scroll top