主库重启之前:
SHOW MASTER STATUS;
主库重启之后:
STOP SLAVE;
然后用之前获取的File和Position信息设置从库的主库:
CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=12345;
最后重新启动从库复制:
START SLAVE;
Python脚本:
import mysql.connector
def check_master_status():
master_conn = mysql.connector.connect(user='masteruser', password='masterpass', host='masterhost')
cursor = master_conn.cursor()
cursor.execute("SHOW MASTER STATUS")
master_status = cursor.fetchone()
master_conn.close()
return master_status
def set_slave_master(log_file, log_pos):
slave_conn = mysql.connector.connect(user='slaveuser', password='slavepass', host='slavehost')
cursor = slave_conn.cursor()
cursor.execute(f"STOP SLAVE")
cursor.execute(f"CHANGE MASTER TO MASTER_LOG_FILE='{log_file}', MASTER_LOG_POS={log_pos}")
cursor.execute(f"START SLAVE")
slave_conn.close()
if __name__ == "__main__":
master_status = check_master_status()
if master_status:
set_slave_master(master_status[0], master_status[1])