Ejemplo n.º 1
0
    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')

    finally:
        common.operation_unlock(mysql_conn, group_id, 'SNAPSHOT_STOP')
Ejemplo n.º 2
0
        group_id)
    dg_pid = mysql.GetSingleValue(mysql_conn, dg_pid_str)

    try:
        common.operation_lock(mysql_conn, group_id, 'FAILOVER')

        common.init_op_instance(mysql_conn, group_id, 'FAILOVER')  #初始化切换实例

        s_conn = oracle.ConnectOracleAsSysdba(s_conn_str)
        if s_conn is None:
            common.log_dg_op_process(mysql_conn, group_id, 'FAILOVER',
                                     '连接备库失败,请根据相应日志查看原因', 5, 5)
            logger.error("Connect to standby database error, exit!!!")

            common.update_op_reason(mysql_conn, group_id, 'FAILOVER', '连接备库失败')
            common.update_op_result(mysql_conn, group_id, 'FAILOVER', '-1')
            sys.exit(2)
        str = 'select count(1) from gv$instance'
        s_count = oracle.GetSingleValue(s_conn, str)

        # try to kill all "(LOCAL=NO)" connections in database
        try:
            if s_count > 1:
                common.log_dg_op_process(
                    mysql_conn, group_id, 'FAILOVER',
                    '正在尝试杀掉"(LOCAL=NO)"的会话,并关闭集群的其他节点可能需要一段时间,请耐心等待...', 5, 0)
            else:
                common.log_dg_op_process(
                    mysql_conn, group_id, 'FAILOVER',
                    '正在尝试杀掉"(LOCAL=NO)"的会话可能需要一段时间,请耐心等待...', 5, 0)
Ejemplo n.º 3
0
    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',
                                     '连接备库失败,请根据相应日志查看原因', 10, 5)
            logger.error("Connect to standby 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)

        #判断主备库是否是RAC
        str = "select value from v$option a where a.PARAMETER='Real Application Clusters' "
        is_p_rac = oracle.GetSingleValue(p_conn, str)
        is_s_rac = oracle.GetSingleValue(s_conn, str)
Ejemplo n.º 4
0
    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)
    finally:
        common.operation_unlock(mysql_conn, group_id, 'MRP_START')
        None