• 数据库自动化平台archery配置TiDB导致工单无法执行


    在数据库自动化平台,可以添加很多类型数据库,mysql,oracle,redis,SqlServer,TiDB等

    但是,TiDB添加完,提交工单后,在执行工单时,会提示read_only=1的问题:

    实例read_only=1,禁止执行变更语句!

    解决方法如下:

    方法一:

    注释sql/engines/mysql.py 以下语句,然后重启服务和Django-Q

    def execute_workflow(self, workflow):
    """执行上线单,返回Review set"""
    # 判断实例是否只读
    #read_only = self.query(sql='select @@read_only;').rows[0][0]
    #if read_only:
    # result = ReviewSet(
    # full_sql=workflow.sqlworkflowcontent.sql_content,
    # rows=[ReviewResult(id=1, errlevel=2,
    # stagestatus='Execute Failed',
    # errormessage='实例read_only=1,禁止执行变更语句!',
    # sql=workflow.sqlworkflowcontent.sql_content)])
    # result.error = '实例read_only=1,禁止执行变更语句!',
    # return result

    方法二:

    修改sql/engines/mysql.py,添加三行加粗代码,下面代码记得缩进:

    def execute_workflow(self, workflow):
            """执行上线单,返回Review set"""
            db_version = self.query(sql='select @@version;').rows[0][0]   # 查看数据库版本
            db_version_check = re.search("TiDB",db_version)               # 数据库版本为TiDB
            if not db_version_check:                                      # 判断如果数据库版本不是TiDB,执行下面read_only检查
            # 判断实例是否只读
                read_only = self.query(sql='select @@read_only;').rows[0][0]
                if read_only:
                    result = ReviewSet(
                        full_sql=workflow.sqlworkflowcontent.sql_content,
                        rows=[ReviewResult(id=1, errlevel=2,
                                           stagestatus='Execute Failed',
                                           errormessage='实例read_only=1,禁止执行变更语句!',
                                           sql=workflow.sqlworkflowcontent.sql_content)])
                    result.error = '实例read_only=1,禁止执行变更语句!',
                    return result

    重启Django-Q如下:

    kill supervisord,gunicorn,manage:

    ps -ef | grep supervisord | grep -v grep | awk -F ' ' '{print $2}' | xarges kill -9
    
    ps -ef | grep gunicorn | grep -v grep | awk -F ' ' '{print $2}' | xarges kill -9
    
    ps -ef | grep manage | grep -v grep | awk -F ' ' '{print $2}' | xarges kill -9

    到venv4archery目录下,执行source,并启动Django:

    [root@hankyoon venv4archery]# pwd
    /data/apps/archery/venv4archery
    
    [root@hankyoon venv4archery]# source bin/activate
    
    [root@hankyoon venv4archery]# pwd
    /data/apps/archery
    
    [root@hankyoon venv4archery]# ./startup.sh

    重启inception:

    su - archery
    cd /data/apps/inception && ./bin/Inception --defaults-file=./etc/in.cnf &
  • 相关阅读:
    C++STL中的unique函数解析
    STL中erase()的用法
    刷题技巧——简易哈希表的实现
    经典面试题目——找到第n个丑数(参考《剑指offer(第二版)》面试题49)
    C++中sort函数小结
    谈谈交叉验证法(个人小结)
    数字序列中某一位数字(《剑指offer》面试题44)
    求1~n整数中1出现的次数(《剑指offer》面试题43)
    2018年美团春招(第二批)题解
    C/C++中字符串和数字互转小结
  • 原文地址:https://www.cnblogs.com/hankyoon/p/16165390.html
Copyright © 2020-2023  润新知