sta_id) s_conn_str = mysql.GetSingleValue(mysql_conn, s_str) s_str = """select concat(username, '/', password, '@', host, ':', port, '/', dsn) from db_cfg_oracle where id=%s """ % ( sta_id) s_nopass_str = mysql.GetSingleValue(mysql_conn, s_str) logger.info("The standby database is: " + s_nopass_str + ", the id is: " + str(sta_id)) s_conn = oracle.ConnectOracleAsSysdba(s_conn_str) try: common.operation_lock(mysql_conn, group_id, 'SNAPSHOT_STOP') common.init_op_instance(mysql_conn, group_id, 'SNAPSHOT_STOP') #初始化切换实例 if s_conn is None: logger.error("Connect to standby database error, exit!!!") common.update_op_reason(mysql_conn, group_id, 'SNAPSHOT_STOP', '连接数据库失败') common.update_op_result(mysql_conn, group_id, 'SNAPSHOT_STOP', '-1') sys.exit(2) common.log_dg_op_process(mysql_conn, group_id, 'SNAPSHOT_STOP', '准备退出演练模式', 10, 2) res = stop_mrp(mysql_conn, group_id, s_conn, s_conn_str, sta_id) if res == 0: update_mrp_status(mysql_conn, sta_id) common.update_op_result(mysql_conn, group_id, 'SNAPSHOT_STOP', '0')
s_nopass_str = mysql.GetSingleValue(mysql_conn, s_str) p_dest_str = """select (case when t.primary_db_id = %s then t.primary_db_dest else t.standby_db_dest end) as dest_id from db_cfg_oracle_dg t where t.id = %s """ %(pri_id, group_id) p_dest_id = mysql.GetSingleValue(mysql_conn, p_dest_str) logger.info("The primary database is: " + p_nopass_str + ", the id is: " + str(pri_id)) logger.info("The standby database is: " + s_nopass_str + ", the id is: " + str(sta_id)) p_conn = oracle.ConnectOracleAsSysdba(p_conn_str) s_conn = oracle.ConnectOracleAsSysdba(s_conn_str) try: common.operation_lock(mysql_conn, group_id, 'MRP_START') common.init_op_instance(mysql_conn, group_id, 'MRP_START') #初始化操作实例 if s_conn is None: logger.error("Connect to standby database error, exit!!!") common.update_op_reason(mysql_conn, group_id, 'MRP_START', '连接数据库失败') common.update_op_result(mysql_conn, group_id, 'MRP_START', '-1') sys.exit(2) common.log_dg_op_process(mysql_conn, group_id, 'MRP_START', '准备开始启动同步进程', 10, 2) res = start_mrp(mysql_conn, group_id, s_conn, s_conn_str, sta_id) if res ==0: update_mrp_status(mysql_conn, sta_id) common.update_op_result(mysql_conn, group_id, 'MRP_START', '0') enable_rfs(mysql_conn, p_conn, p_dest_id)
shift_vip_str = """select t.shift_vip from db_cfg_oracle_dg t where id = %s """ % ( group_id) is_shift = mysql.GetSingleValue(mysql_conn, shift_vip_str) dg_pid_str = """select t.primary_db_id from db_cfg_oracle_dg t where id = %s """ % ( group_id) dg_pid = mysql.GetSingleValue(mysql_conn, dg_pid_str) dg_sid_str = """select t.standby_db_id from db_cfg_oracle_dg t where id = %s """ % ( group_id) dg_sid = mysql.GetSingleValue(mysql_conn, dg_sid_str) try: common.operation_lock(mysql_conn, group_id, 'SWITCHOVER') # 加锁 common.init_op_instance(mysql_conn, group_id, 'SWITCHOVER') #初始化切换实例 # connect to oracle p_conn = oracle.ConnectOracleAsSysdba(p_conn_str) s_conn = oracle.ConnectOracleAsSysdba(s_conn_str) if p_conn is None: common.log_dg_op_process(mysql_conn, group_id, 'SWITCHOVER', '连接主库失败,请根据相应日志查看原因', 10, 5) logger.error("Connect to primary database error, exit!!!") common.update_op_reason(mysql_conn, group_id, 'SWITCHOVER', '连接主库失败') common.update_op_result(mysql_conn, group_id, 'SWITCHOVER', '-1') sys.exit(2) if s_conn is None: common.log_dg_op_process(mysql_conn, group_id, 'SWITCHOVER',
s_str = """select concat(username, '/', password, '@', host, ':', port, '/', dsn) from db_cfg_oracle where id=%s """ %(sta_id) s_conn_str = mysql.GetSingleValue(mysql_conn, s_str) s_str = """select concat(username, '/', password, '@', host, ':', port, '/', dsn) from db_cfg_oracle where id=%s """ %(sta_id) s_nopass_str = mysql.GetSingleValue(mysql_conn, s_str) logger.info("The standby database is: " + s_nopass_str + ", the id is: " + str(sta_id)) s_conn = oracle.ConnectOracleAsSysdba(s_conn_str) try: common.operation_lock(mysql_conn, group_id, 'MRP_STOP') common.init_op_instance(mysql_conn, group_id, 'MRP_STOP') #初始化切换实例 if s_conn is None: logger.error("Connect to standby database error, exit!!!") common.update_op_reason(mysql_conn, group_id, 'MRP_STOP', '连接数据库失败') common.update_op_result(mysql_conn, group_id, 'MRP_STOP', '-1') sys.exit(2) common.log_dg_op_process(mysql_conn, group_id, 'MRP_STOP', '准备开始停止同步进程', 10, 2) res = stop_mrp(mysql_conn, group_id, s_conn, s_conn_str, sta_id) if res ==0: update_mrp_status(mysql_conn, sta_id) common.update_op_result(mysql_conn, group_id, 'MRP_STOP', '0') else: common.update_op_result(mysql_conn, group_id, 'MRP_STOP', '-1')