diff --git a/mysql_ch_replicator/db_optimizer.py b/mysql_ch_replicator/db_optimizer.py index 41aea3f..80a4782 100644 --- a/mysql_ch_replicator/db_optimizer.py +++ b/mysql_ch_replicator/db_optimizer.py @@ -79,6 +79,7 @@ def optimize_table(self, db_name, table_name): def optimize_database(self, db_name): self.mysql_api.set_database(db_name) tables = self.mysql_api.get_tables() + self.mysql_api.close() tables = [table for table in tables if self.config.is_table_matches(table)] self.clickhouse_api.execute_command(f'USE {db_name}') @@ -97,6 +98,7 @@ def run(self): try: while not killer.kill_now: db_to_optimize = self.select_db_to_optimize() + self.mysql_api.close() if db_to_optimize is None: time.sleep(min(120, self.config.optimize_interval)) continue diff --git a/mysql_ch_replicator/mysql_api.py b/mysql_ch_replicator/mysql_api.py index 255a3b7..8480933 100644 --- a/mysql_ch_replicator/mysql_api.py +++ b/mysql_ch_replicator/mysql_api.py @@ -16,6 +16,7 @@ def __init__(self, database: str, mysql_settings: MysqlSettings): def close(self): self.db.close() + self.last_connect_time = 0 def reconnect_if_required(self, force=False): curr_time = time.time() @@ -56,6 +57,7 @@ def execute(self, command, commit=False, args=None): self.db.commit() def set_database(self, database): + self.reconnect_if_required() self.database = database self.cursor = self.db.cursor() self.cursor.execute(f'USE {self.database}')