cancel
Showing results for 
Search instead for 
Did you mean: 

What happens if I have a clustered DB but exclude memory tables from replication?

What happens if I have a clustered DB but exclude memory tables from replication?

I'm planning to use MySQL Galera Cluster to achieve a highly available DB. However, memory tables wouldn't get replicated across nodes. I did some digging and found out that Magento 2.0 has several memory tables:

 

magento.cataloginventory_stock_status_tmp
magento.catalog_category_product_index_tmp
magento.catalog_product_index_eav_decimal_tmp
magento.catalog_product_index_eav_tmp
magento.catalog_product_index_price_bundle_opt_tmp
magento.catalog_product_index_price_bundle_sel_tmp
magento.catalog_product_index_price_bundle_tmp
magento.catalog_product_index_price_cfg_opt_agr_tmp
magento.catalog_product_index_price_cfg_opt_tmp
magento.catalog_product_index_price_downlod_tmp
magento.catalog_product_index_price_final_tmp
magento.catalog_product_index_price_opt_agr_tmp
magento.catalog_product_index_price_opt_tmp
magento.catalog_product_index_price_tmp

 

In the scenario I'm presenting, all the data in the DB would be shared across all nodes, except for these tables. This means that a user may access node1, commit a transaction, updating for example some product table, and one of these memory tables. Then, the same user could make another request, this time arriving on node2, where the product table would have been modified as well, but not the memory table. Would this be troublesome? What are these tmp tables used for?