Skip to content
Nicola Strappazzon Carotenuto edited this page Mar 24, 2019 · 1 revision

Rotar master without downtime

  1. Asegurarse que cada host tenga los mismos datos.
  2. El master y candidato a co-master debe tener configurado:
  • CHANGE MASTER TO MASTER_USER = 'repl', MASTER_PASSWORD = 'repl';
  • CO-Master1:
  • SET GLOBAL auto_increment_increment = 2;
  • CO-Master2:
  • SET GLOBAL auto_increment_increment = 2;
  • SET GLOBAL auto_increment_offset = 2;
  • SET GLOBAL read_only = OFF;
  1. Establecer la replicacion.
  2. Revisar la configuracion de cada CO-Master.
  3. Revisar en el ProxySQL que esta en el grupo de write y que esta llegando trafico y no hay errores. SELECT * FROM main.mysql_servers; SELECT * FROM stats_mysql_connection_pool;
  4. Desactivar en el ProxySQL el host deseado, uno de los co-master. UPDATE main.mysql_servers SET status = 'OFFLINE_SOFT' WHERE hostname = '172.16.238.2'; LOAD MYSQL SERVERS TO RUNTIME;
  5. Consultar en el ProxySQL que ya no hay trafico entrante en el host marcado como OFFLINE_SOFT. SELECT * FROM stats_mysql_connection_pool;
  6. Retirar la instancia.
make up
make load_schema
docker exec -it mysqlsandbox_mysql_1 mysql -e "
CHANGE MASTER TO MASTER_USER = 'repl', MASTER_PASSWORD = 'repl';
SET GLOBAL auto_increment_increment = 2;"
make scale numbers=2
docker exec -it mysqlsandbox_mysql_2 mysql -e "
SET GLOBAL auto_increment_increment = 2;
SET GLOBAL auto_increment_offset = 2;
SET GLOBAL read_only = OFF;
"
docker exec -it mysqlsandbox_mysql_1 mysql -e "SHOW VARIABLES LIKE 'auto_increment_%';"
docker exec -it mysqlsandbox_mysql_2 mysql -e "SHOW VARIABLES LIKE 'auto_increment_%';"

# le decimos al orchestator que cree el co-master y le definimos permiso de
# escritura al segundo co-master

docker exec -it mysqlsandbox_proxysql_1 /bin/mysql -h 127.0.0.1 -u admin -padmin -P 6032 -e "SELECT * FROM main.mysql_servers;"

docker exec -it mysqlsandbox_proxysql_1 /bin/mysql -h 127.0.0.1 -u admin -padmin -P 6032 -e "SELECT * FROM stats_mysql_connection_pool;"

make scale numbers=5

make stresstest

docker exec -it mysqlsandbox_proxysql_1 /bin/mysql -h 127.0.0.1 -u admin -padmin -P 6032 -e "
UPDATE main.mysql_servers SET status = 'OFFLINE_SOFT' WHERE hostname = '172.16.238.2';
LOAD MYSQL SERVERS TO RUNTIME;
"

docker stop mysqlsandbox_mysql_1

docker stop mysqlsandbox_mysql_2
Clone this wiki locally