数据库自动化平台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}' | xargs kill -9

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

ps -ef | grep manage | grep -v grep | awk -F ' ' '{print $2}' | xargs 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 &

 

posted @ 2022-04-19 15:12  __Yoon  阅读(356)  评论(0编辑  收藏  举报