2023年6月21日发(作者:)
[原创]archery平台升级部署实践v1.3.8 → v1.5.0⽬录1.安装、升级python3 venv 环境1.1.安装 python36全新安装需要执⾏,升级安装可忽略1.2.创建Python3 venv 环境(Python>=3.6.5,建议使⽤虚拟环境 )全新安装需要执⾏,升级安装也建议重新部署⼀个venv 环境,便于进⾏切换。不推荐在原venv环境中直接进⾏升级。pip3 install virtualenvcd /opt/virtualenv venv4archery150 --python=python36source /opt/venv4archery150/bin/activate#确认命令在 $PATH 中,否则安装包时报错which mysql_config #确认命令在 $PATH 中,否则安装包时报错# 下载 archery 源码yum install -y gcc gcc-c++ epel-release python-pip python-devel unixODBC-develcd /optwget /hhyo/archery/archive/ -zxvf archery150pip3 install -r (-i /pypi/web/simple/)1.3.报错处理参考1.3.1. pyodbc 安装失败# 安装 unixODBC-devel 包sudo yum install -y epel-release python-pip gcc-c++ python-devel unixODBC-devel2.组件安装配置 安装、配置2.2.数据库账号授权2.3. Redis 安装——新增参照wiki ⽂档安装单实例 ion 安装、配置、启动a-toolkit 安装略 安装、配置——有变更yum install -y nginxvim /etc/nginx/conf.d/rver{ listen 9999; # 监听的端⼝,未正式使⽤时,先试⽤临时端⼝ server_name archery150; client_max_body_size 20M; #新增 proxy_read_timeout 600s; #超时时间与gunicorn超时时间设置⼀致,主要⽤于在线查询 location / { proxy_pass 127.0.0.1:8888/; # 8888 要与 脚本中端⼝对应 proxy_set_header Host $host:9999; #解决重定向404的问题 proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } location /static { alias /opt/archery150/common/static/; #此处指向配置项STATIC_ROOT⽬录的绝对路径,⽤于nginx收集静态资源 } error_page 404 /; location = / { } error_page 500 502 503 504 /; location = / { } }2.7.上传 archery 第三⽅⼯具2.8. SQLAdvisor 安装2.8.1.报错处理2.9. SchemaSync 安装3.安装 archery 环境3.1. 1.2.步已下载源码,略过略3.2.修改 archery/ ⽂件 DATABASES 配置项——有变更这次升级加⼊了redis cache,配置略有改动。django_q 使⽤默认配置即可。vim /opt/archery/archery150/archery/# 12 ~ 13# SECURITY WARNING: don't run with debug turned on in production!DEBUG = False #关闭调试模式# 118 ~ 132# 该项⽬本⾝的mysql数据库地址DATABASES = { 'default': { 'ENGINE': '', 'NAME': 'archery150', 'USER': 'xxx', 'PASSWORD': 'xxx', 'HOST': '', 'PORT': '3306', 'OPTIONS': { 'init_command': "SET sql_mode='STRICT_TRANS_TABLES'", 'charset': 'utf8mb4' } }}# 145 ~ 158# Django-Q 默认配置即可,也可参考django-q⽂档修改Q_CLUSTER = { 'name': 'archery', 'workers': 4, 'recycle': 500, 'timeout': 60, 'compress': True, 'cpu_affinity': 1, 'save_limit': 0, 'queue_limit': 50, 'label': 'Django Q', 'django_redis': 'default', 'sync': False # 本地调试可以修改为True,使⽤同步模式}# 160 ~ 169# 缓存配置CACHES = { "default": { "BACKEND": "django_ache", "LOCATION": "redis://10.33.66.241:50001/0", #单实例 "OPTIONS": { "CLIENT_CLASS": "django_tClient", } }}# 171 ~ 191# LDAPENABLE_LDAP = Trueif ENABLE_LDAP: import ldap from django_auth_ import LDAPSearch AUTHENTICATION_BACKENDS = ( 'django_auth_ckend', # 配置为先使⽤LDAP认证,如通过认证则不再使⽤后⾯的认证⽅式 'ackend', # django系统中⼿动创建的⽤户也可使⽤,优先级靠后。注意这2⾏的顺序 ) AUTH_LDAP_SERVER_URI = "ldap://" AUTH_LDAP_BIND_DN = "CN=auth,CN=Users,DC=xxx,DC=xxx,DC=com" AUTH_LDAP_BIND_PASSWORD = "xxxx" AUTH_LDAP_USER_SEARCH = LDAPSearch("ou=xxx,dc=xxx,dc=xxx,dc=com",_SUBTREE, "(sAMAccountName=%(user)s)") AUTH_LDAP_ALWAYS_UPDATE_USER = True # 每次登录从ldap同步⽤户信息 AUTH_LDAP_USER_ATTR_MAP = { # key为_users字段名,value为ldap中字段名,⽤户同步信息 "username": "xxxxx", "display": "cn", "email": "mail" }3.3.数据库初始化如下命令在测试环境中执⾏,⽣产环境直接执⾏脚本。# 数据库初始化python3 makemigrations sqlpython3 migrate
# 编译翻译⽂件python3 compilemessages #新增步骤官⽅⽂档虽然说可以不必初始化,但是由于权限的更新,权限ID 对应关系可能错乱,所以使⽤1.38数据库升级后,迁移到1.50数据库的⽅式。/* Navicat Premium Data Transfer Source Server : archery150 Source Server Type : MySQL Source Server Version : 50722 Source Host :
Source Schema : archery_new Target Server Type : MySQL Target Server Version : 50722 File Encoding : 65001 Date: 17/04/2019 15:13:10*/create database archery150 charset utf8;use archery150;SET NAMES utf8mb4;SET FOREIGN_KEY_CHECKS = 0;-- ------------------------------ Table structure for aliyun_access_key-- ----------------------------DROP TABLE IF EXISTS `aliyun_access_key`;CREATE TABLE `aliyun_access_key` ( `id` int(11) NOT NULL AUTO_INCREMENT, `ak` varchar(50) NOT NULL, `secret` varchar(100) NOT NULL, `is_enable` tinyint(4) NOT NULL COMMENT '是否启⽤', `remark` varchar(50) NOT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;-- ------------------------------ Table structure for aliyun_rds_config-- ----------------------------DROP TABLE IF EXISTS `aliyun_rds_config`;CREATE TABLE `aliyun_rds_config` ( `id` int(11) NOT NULL AUTO_INCREMENT, `instance_id` int(11) NOT NULL, `rds_dbinstanceid` varchar(100) NOT NULL, `is_enable` tinyint(4) NOT NULL COMMENT '是否启⽤', PRIMARY KEY (`id`), UNIQUE KEY `idx_uni_iid` (`instance_id`), CONSTRAINT `fk_instanid__sql_instance_id` FOREIGN KEY (`instance_id`) REFERENCES `sql_instance` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION) ENGINE=InnoDB DEFAULT CHARSET=utf8;-- ------------------------------ Table structure for auth_group-- ----------------------------DROP TABLE IF EXISTS `auth_group`;CREATE TABLE `auth_group` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键', `name` varchar(80) NOT NULL COMMENT '组', PRIMARY KEY (`id`), UNIQUE KEY `idx_name` (`name`)) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='权限组';-- ------------------------------ Table structure for auth_group_permissions-- ----------------------------DROP TABLE IF EXISTS `auth_group_permissions`;CREATE TABLE `auth_group_permissions` ( `id` int(11) NOT NULL AUTO_INCREMENT, `group_id` int(11) NOT NULL, `permission_id` int(11) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `idx_uni_gid_pid` (`group_id`,`permission_id`), KEY `idx_pid` (`permission_id`), CONSTRAINT `fk_groupid__auth_group_id` FOREIGN KEY (`group_id`) REFERENCES `auth_group` (`id`), CONSTRAINT `fk_perid__auth_permission_id` FOREIGN KEY (`permission_id`) REFERENCES `auth_permission` (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;-- ------------------------------ Table structure for auth_permission-- ----------------------------DROP TABLE IF EXISTS `auth_permission`;CREATE TABLE `auth_permission` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) NOT NULL, `content_type_id` int(11) NOT NULL, `codename` varchar(100) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `idx_uni_ctid` (`content_type_id`,`codename`), CONSTRAINT `fk_ctypeid__django_content_type_id` FOREIGN KEY (`content_type_id`) REFERENCES `django_content_type` (`id`)) ENGINE=InnoDB AUTO_INCREMENT=137 DEFAULT CHARSET=utf8;-- ------------------------------ Table structure for data_masking_columns-- ----------------------------DROP TABLE IF EXISTS `data_masking_columns`;CREATE TABLE `data_masking_columns` ( `column_id` int(11) NOT NULL AUTO_INCREMENT, `rule_type` int(11) NOT NULL, `active` tinyint(4) NOT NULL COMMENT '激活状态', `instance_id` int(11) NOT NULL, `table_schema` varchar(64) NOT NULL, `table_name` varchar(64) NOT NULL, `column_name` varchar(64) NOT NULL, `column_comment` varchar(1024) NOT NULL, `create_time` datetime(6) NOT NULL, `sys_time` datetime(6) NOT NULL, PRIMARY KEY (`column_id`), KEY `idx_iid` (`instance_id`), CONSTRAINT `fk_instance_id__sql_instance_id` FOREIGN KEY (`instance_id`) REFERENCES `sql_instance` (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;-- ------------------------------ Table structure for data_masking_rules-- ----------------------------DROP TABLE IF EXISTS `data_masking_rules`;CREATE TABLE `data_masking_rules` ( `id` int(11) NOT NULL AUTO_INCREMENT, `rule_type` int(11) NOT NULL, `rule_regex` varchar(255) NOT NULL, `hide_group` int(11) NOT NULL, `rule_desc` varchar(100) NOT NULL, `sys_time` datetime(6) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `idx_uni_rule_type` (`rule_type`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;-- ------------------------------ Table structure for django_admin_log-- ----------------------------DROP TABLE IF EXISTS `django_admin_log`;CREATE TABLE `django_admin_log` ( `id` int(11) NOT NULL AUTO_INCREMENT, `action_time` datetime(6) NOT NULL, `object_id` longtext, `object_repr` varchar(200) NOT NULL, `action_flag` smallint(5) unsigned NOT NULL, `change_message` longtext NOT NULL, `content_type_id` int(11) DEFAULT NULL, `user_id` int(11) NOT NULL, PRIMARY KEY (`id`), KEY `idx_ctid` (`content_type_id`), KEY `idx_uid` (`user_id`), CONSTRAINT `fk_ctid__django_content_type_id` FOREIGN KEY (`content_type_id`) REFERENCES `django_content_type` (`id`), CONSTRAINT `fk_users_id__sql_users_id` FOREIGN KEY (`user_id`) REFERENCES `sql_users` (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;-- ------------------------------ Table structure for django_content_type-- ----------------------------DROP TABLE IF EXISTS `django_content_type`;CREATE TABLE `django_content_type` ( `id` int(11) NOT NULL AUTO_INCREMENT, `app_label` varchar(100) NOT NULL, `model` varchar(100) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `idx_uni_app_label__model` (`app_label`,`model`)) ENGINE=InnoDB AUTO_INCREMENT=34 DEFAULT CHARSET=utf8;-- ------------------------------ Table structure for django_migrations-- ----------------------------DROP TABLE IF EXISTS `django_migrations`;CREATE TABLE `django_migrations` ( `id` int(11) NOT NULL AUTO_INCREMENT, `app` varchar(255) NOT NULL, `name` varchar(255) NOT NULL, `applied` datetime(6) NOT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=25 DEFAULT CHARSET=utf8;-- ------------------------------ Table structure for django_q_ormq-- ----------------------------DROP TABLE IF EXISTS `django_q_ormq`;CREATE TABLE `django_q_ormq` ( `id` int(11) NOT NULL AUTO_INCREMENT, `key` varchar(100) NOT NULL, `payload` longtext NOT NULL, `lock` datetime(6) DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;-- ------------------------------ Table structure for django_q_schedule-- ----------------------------DROP TABLE IF EXISTS `django_q_schedule`;CREATE TABLE `django_q_schedule` ( `id` int(11) NOT NULL AUTO_INCREMENT, `func` varchar(256) NOT NULL, `hook` varchar(256) DEFAULT NULL, `args` longtext, `kwargs` longtext, `schedule_type` varchar(1) NOT NULL, `repeats` int(11) NOT NULL, `next_run` datetime(6) DEFAULT NULL, `task` varchar(100) DEFAULT NULL, `name` varchar(100) DEFAULT NULL, `minutes` smallint(5) unsigned DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;-- ------------------------------ Table structure for django_q_task-- ----------------------------DROP TABLE IF EXISTS `django_q_task`;CREATE TABLE `django_q_task` ( `id` varchar(32) NOT NULL, `name` varchar(100) NOT NULL, `func` varchar(256) NOT NULL, `hook` varchar(256) DEFAULT NULL, `args` longtext, `kwargs` longtext, `result` longtext, `started` datetime(6) NOT NULL, `stopped` datetime(6) NOT NULL, `success` tinyint(4) NOT NULL, `group` varchar(100) DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;-- ------------------------------ Table structure for django_session-- ----------------------------DROP TABLE IF EXISTS `django_session`;CREATE TABLE `django_session` ( `session_key` varchar(40) NOT NULL, `session_data` longtext NOT NULL, `expire_date` datetime(6) NOT NULL, PRIMARY KEY (`session_key`), KEY `idx_expire_date` (`expire_date`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;-- ------------------------------ Table structure for param_history-- ----------------------------DROP TABLE IF EXISTS `param_history`;CREATE TABLE `param_history` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键', `instance_id` int(11) NOT NULL COMMENT '实例ID', `variable_name` varchar(64) NOT NULL COMMENT '参数名', `old_var` varchar(1024) NOT NULL COMMENT '修改前参数值', `new_var` varchar(1024) NOT NULL COMMENT '修改后参数值', `set_sql` varchar(1024) NOT NULL COMMENT '在线变更配置执⾏的SQL语句', `user_name` varchar(30) NOT NULL COMMENT '修改⼈', `user_display` varchar(50) NOT NULL COMMENT '修改⼈中⽂名', `update_time` datetime(6) NOT NULL COMMENT '修改时间', PRIMARY KEY (`id`), KEY `idx_iid` (`instance_id`), CONSTRAINT `fk_instanceid__sql_instance_id` FOREIGN KEY (`instance_id`) REFERENCES `sql_instance` (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;-- ------------------------------ Table structure for param_template-- ----------------------------DROP TABLE IF EXISTS `param_template`;CREATE TABLE `param_template` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键', `db_type` varchar(10) NOT NULL COMMENT '数据库类型,mysql、mssql、redis、pgsql', `variable_name` varchar(64) NOT NULL COMMENT '参数名', `default_value` varchar(1024) NOT NULL COMMENT '默认参数值', `editable` tinyint(4) NOT NULL COMMENT '是否⽀持修改', `valid_values` varchar(1024) NOT NULL COMMENT '有效参数值', `description` varchar(1024) NOT NULL COMMENT '参数描述', `create_time` datetime(6) NOT NULL COMMENT '创建时间', `sys_time` datetime(6) NOT NULL COMMENT '创建时间', PRIMARY KEY (`id`), UNIQUE KEY `idx_uni_db_type__variable_name` (`db_type`,`variable_name`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;-- ------------------------------ Table structure for query_log-- ----------------------------DROP TABLE IF EXISTS `query_log`;CREATE TABLE `query_log` ( `id` int(11) NOT NULL AUTO_INCREMENT, `instance_name` varchar(50) NOT NULL, `db_name` varchar(64) NOT NULL, `sqllog` longtext NOT NULL, `effect_row` bigint(20) NOT NULL, `cost_time` varchar(10) NOT NULL, `username` varchar(30) NOT NULL, `user_display` varchar(50) NOT NULL, `priv_check` tinyint(4) NOT NULL COMMENT '查询权限是否正常校验', `hit_rule` tinyint(4) NOT NULL COMMENT '查询是否命中脱敏规则', `masking` tinyint(4) NOT NULL COMMENT '查询结果是否正常脱敏', `create_time` datetime(6) NOT NULL, `sys_time` datetime(6) NOT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;-- ------------------------------ Table structure for query_privileges-- ----------------------------DROP TABLE IF EXISTS `query_privileges`;CREATE TABLE `query_privileges` ( `privilege_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '权限id', `user_name` varchar(30) NOT NULL COMMENT '⽤户', `user_display` varchar(50) NOT NULL COMMENT '下拉菜单筛选名', `instance_id` int(11) NOT NULL, `table_name` varchar(64) NOT NULL COMMENT '表', `db_name` varchar(64) NOT NULL COMMENT '数据库', `valid_date` date NOT NULL COMMENT '有效时间', `limit_num` int(11) NOT NULL COMMENT '结果集', `priv_type` tinyint(4) NOT NULL COMMENT '权限级别', `is_deleted` tinyint(4) NOT NULL COMMENT '删除标记', `create_time` datetime(6) NOT NULL COMMENT '申请时间', `sys_time` datetime(6) NOT NULL COMMENT '系统时间', PRIMARY KEY (`privilege_id`), KEY `idx_uname__iid__db_name__vdate` (`user_name`,`instance_id`,`db_name`,`valid_date`), KEY `idx_iid` (`instance_id`), CONSTRAINT `fk_instid__sql_instance_id` FOREIGN KEY (`instance_id`) REFERENCES `sql_instance` (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;-- ------------------------------ Table structure for query_privileges_apply-- ----------------------------DROP TABLE IF EXISTS `query_privileges_apply`;CREATE TABLE `query_privileges_apply` ( `apply_id` int(11) NOT NULL AUTO_INCREMENT, `group_id` int(11) NOT NULL, `group_name` varchar(100) NOT NULL, `title` varchar(50) NOT NULL, `user_name` varchar(30) NOT NULL, `user_display` varchar(50) NOT NULL, `instance_id` int(11) NOT NULL, `db_list` longtext NOT NULL, `table_list` longtext NOT NULL, `valid_date` date NOT NULL, `limit_num` int(11) NOT NULL, `priv_type` tinyint(4) NOT NULL, `status` int(11) NOT NULL, `audit_auth_groups` varchar(255) NOT NULL, `create_time` datetime(6) NOT NULL, `sys_time` datetime(6) NOT NULL, PRIMARY KEY (`apply_id`), KEY `idx_iid` (`instance_id`), CONSTRAINT `fk_insid__sql_instance_id` FOREIGN KEY (`instance_id`) REFERENCES `sql_instance` (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;-- ------------------------------ Table structure for resource_group-- ----------------------------DROP TABLE IF EXISTS `resource_group`;CREATE TABLE `resource_group` ( `group_id` int(11) NOT NULL AUTO_INCREMENT, `group_name` varchar(100) NOT NULL, `group_parent_id` bigint(20) NOT NULL, `group_sort` int(11) NOT NULL, `group_level` int(11) NOT NULL, `ding_webhook` varchar(255) NOT NULL, `is_deleted` tinyint(4) NOT NULL, `create_time` datetime(6) NOT NULL, `sys_time` datetime(6) NOT NULL, PRIMARY KEY (`group_id`), UNIQUE KEY `idx_uni_group_name` (`group_name`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;-- ------------------------------ Table structure for resource_group_relations-- ----------------------------DROP TABLE IF EXISTS `resource_group_relations`;CREATE TABLE `resource_group_relations` ( `id` int(11) NOT NULL AUTO_INCREMENT, `object_type` tinyint(4) NOT NULL, `object_id` int(11) NOT NULL, `object_name` varchar(100) NOT NULL, `group_id` int(11) NOT NULL, `group_name` varchar(100) NOT NULL, `create_time` datetime(6) NOT NULL, `sys_time` datetime(6) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `idx_uni_oid__gid__object_type` (`object_id`,`group_id`,`object_type`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;-- ------------------------------ Table structure for sql_config-- ----------------------------DROP TABLE IF EXISTS `sql_config`;CREATE TABLE `sql_config` ( `item` varchar(50) NOT NULL, `value` varchar(200) NOT NULL, `description` varchar(200) NOT NULL, PRIMARY KEY (`item`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;-- ------------------------------ Table structure for sql_instance-- ----------------------------DROP TABLE IF EXISTS `sql_instance`;CREATE TABLE `sql_instance` ( `id` int(11) NOT NULL AUTO_INCREMENT, `instance_name` varchar(50) NOT NULL, `type` varchar(6) NOT NULL, `db_type` varchar(10) NOT NULL, `host` varchar(200) NOT NULL, `port` int(11) NOT NULL, `user` varchar(100) NOT NULL, `password` varchar(300) NOT NULL, `create_time` datetime(6) NOT NULL, `update_time` datetime(6) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `idx_uni_instance_name` (`instance_name`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;-- ------------------------------ Table structure for sql_permission-- ----------------------------DROP TABLE IF EXISTS `sql_permission`;CREATE TABLE `sql_permission` ( `id` int(11) NOT NULL AUTO_INCREMENT, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;-- ------------------------------ Table structure for sql_users-- ----------------------------DROP TABLE IF EXISTS `sql_users`;CREATE TABLE `sql_users` ( `id` int(11) NOT NULL AUTO_INCREMENT, `PASSWORD` varchar(128) NOT NULL COMMENT '密码', `last_login` datetime(6) DEFAULT NULL COMMENT '上次登录', `is_superuser` tinyint(4) NOT NULL COMMENT '超级⽤户状态:1是,0否', `username` varchar(150) NOT NULL COMMENT '⽤户名', `first_name` varchar(30) NOT NULL COMMENT '名,⽆值', `last_name` varchar(150) NOT NULL COMMENT '姓,⽆值', `email` varchar(254) NOT NULL COMMENT '电⼦邮箱地址', `is_staff` tinyint(4) NOT NULL COMMENT '职员状态(是否能管理django后台):1是,0否', `is_active` tinyint(4) NOT NULL COMMENT '有效(禁⽤⽤户标签):1是,0否', `date_joined` datetime(6) NOT NULL COMMENT '加⼊⽇期(第⼀次登录时间)', `display` varchar(50) NOT NULL COMMENT '显⽰的中⽂名', `failed_login_count` int(11) NOT NULL COMMENT '登陆失败次数', `last_login_failed_at` datetime DEFAULT NULL COMMENT '上次失败登录时间', PRIMARY KEY (`id`), UNIQUE KEY `idx_uni_username` (`username`)) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;-- ------------------------------ Table structure for sql_users_groups-- ----------------------------DROP TABLE IF EXISTS `sql_users_groups`;CREATE TABLE `sql_users_groups` ( `id` int(11) NOT NULL AUTO_INCREMENT, `users_id` int(11) NOT NULL, `group_id` int(11) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `idx_uni_uid__gid` (`users_id`,`group_id`), KEY `idx_gid` (`group_id`), CONSTRAINT `fk_gid__auth_group_id` FOREIGN KEY (`group_id`) REFERENCES `auth_group` (`id`), CONSTRAINT `fk_usersid__sql_users_id` FOREIGN KEY (`users_id`) REFERENCES `sql_users` (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;-- ------------------------------ Table structure for sql_users_user_permissions-- ----------------------------DROP TABLE IF EXISTS `sql_users_user_permissions`;CREATE TABLE `sql_users_user_permissions` ( `id` int(11) NOT NULL AUTO_INCREMENT, `users_id` int(11) NOT NULL, `permission_id` int(11) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `idx_uni_uid__pid` (`users_id`,`permission_id`), KEY `idx_pid` (`permission_id`), CONSTRAINT `fk_pid__auth_permission_id` FOREIGN KEY (`permission_id`) REFERENCES `auth_permission` (`id`), CONSTRAINT `fk_uid__sql_users_id` FOREIGN KEY (`users_id`) REFERENCES `sql_users` (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;-- ------------------------------ Table structure for sql_workflow-- ----------------------------DROP TABLE IF EXISTS `sql_workflow`;CREATE TABLE `sql_workflow` ( `id` int(11) NOT NULL AUTO_INCREMENT, `workflow_name` varchar(50) NOT NULL, `group_id` int(11) NOT NULL, `group_name` varchar(100) NOT NULL, `instance_id` int(11) NOT NULL, `db_name` varchar(64) NOT NULL COMMENT '数据库', `engineer` varchar(30) NOT NULL, `engineer_display` varchar(50) NOT NULL, `audit_auth_groups` varchar(255) NOT NULL, `create_time` datetime(6) NOT NULL, `finish_time` datetime(6) DEFAULT NULL, `STATUS` varchar(50) NOT NULL, `is_backup` tinyint(4) NOT NULL COMMENT '是否备份', `is_manual` tinyint(4) NOT NULL, `syntax_type` tinyint(4) NOT NULL COMMENT '⼯单类型 1、DDL,2、DML', PRIMARY KEY (`id`), KEY `idx_iid` (`instance_id`), CONSTRAINT `fk_iid__sql_instance_id` FOREIGN KEY (`instance_id`) REFERENCES `sql_instance` (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;-- ------------------------------ Table structure for sql_workflow_content-- ----------------------------DROP TABLE IF EXISTS `sql_workflow_content`;CREATE TABLE `sql_workflow_content` ( `id` int(11) NOT NULL AUTO_INCREMENT, `workflow_id` int(11) NOT NULL COMMENT 'SQL⼯单ID', `sql_content` longtext NOT NULL COMMENT '提交的SQL⽂本', `review_content` longtext NOT NULL COMMENT '⾃动审核内容的JSON格式', `execute_result` longtext NOT NULL COMMENT '执⾏结果的JSON格式', PRIMARY KEY (`id`), UNIQUE KEY `idx_uni_workflow_id` (`workflow_id`), CONSTRAINT `fk_wfid__sql_workflow_id` FOREIGN KEY (`workflow_id`) REFERENCES `sql_workflow` (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;-- ------------------------------ Table structure for workflow_audit-- ----------------------------DROP TABLE IF EXISTS `workflow_audit`;CREATE TABLE `workflow_audit` ( `audit_id` int(11) NOT NULL AUTO_INCREMENT, `group_id` int(11) NOT NULL, `group_name` varchar(100) NOT NULL, `workflow_id` bigint(20) NOT NULL, `workflow_type` tinyint(4) NOT NULL, `workflow_title` varchar(50) NOT NULL, `workflow_remark` varchar(140) NOT NULL, `audit_auth_groups` varchar(255) NOT NULL, `current_audit` varchar(20) NOT NULL, `next_audit` varchar(20) NOT NULL, `current_status` tinyint(4) NOT NULL, `create_user` varchar(30) NOT NULL, `create_user_display` varchar(50) NOT NULL, `create_time` datetime(6) NOT NULL, `sys_time` datetime(6) NOT NULL, PRIMARY KEY (`audit_id`), UNIQUE KEY `idx_uni_wfid__workflow_type` (`workflow_id`,`workflow_type`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;-- ------------------------------ Table structure for workflow_audit_detail-- ----------------------------DROP TABLE IF EXISTS `workflow_audit_detail`;CREATE TABLE `workflow_audit_detail` ( `audit_detail_id` int(11) NOT NULL AUTO_INCREMENT, `audit_id` int(11) NOT NULL, `audit_user` varchar(30) NOT NULL, `audit_time` datetime(6) NOT NULL, `audit_status` tinyint(4) NOT NULL, `remark` varchar(140) NOT NULL, `sys_time` datetime(6) NOT NULL, PRIMARY KEY (`audit_detail_id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;-- ------------------------------ Table structure for workflow_audit_setting-- ----------------------------DROP TABLE IF EXISTS `workflow_audit_setting`;CREATE TABLE `workflow_audit_setting` ( `audit_setting_id` int(11) NOT NULL AUTO_INCREMENT, `group_id` int(11) NOT NULL, `group_name` varchar(100) NOT NULL, `workflow_type` tinyint(4) NOT NULL, `audit_auth_groups` varchar(255) NOT NULL, `create_time` datetime(6) NOT NULL, `sys_time` datetime(6) NOT NULL, PRIMARY KEY (`audit_setting_id`), UNIQUE KEY `idx_uni_gid__workflow_type` (`group_id`,`workflow_type`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;-- ------------------------------ Table structure for workflow_log-- ----------------------------DROP TABLE IF EXISTS `workflow_log`;CREATE TABLE `workflow_log` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键', `audit_id` bigint(20) NOT NULL COMMENT '⼯单审批id', `operation_type` tinyint(4) NOT NULL COMMENT '操作类型,0提交/待审核、1审核通过、2审核不通过、3审核取消/取消执⾏、4定时执⾏、5执⾏⼯单、6执⾏结束', `operation_type_desc` char(10) NOT NULL COMMENT '操作类型描述', `operation_info` varchar(200) NOT NULL COMMENT '操作信息', `operator` varchar(30) NOT NULL COMMENT '操作⼈', `operator_display` varchar(50) NOT NULL COMMENT '操作⼈中⽂名', `operation_time` datetime(6) NOT NULL COMMENT '操作时间', PRIMARY KEY (`id`), KEY `idx_aid` (`audit_id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;SET FOREIGN_KEY_CHECKS = 1;3.4.创建管理⽤户cd /opt/archery150/python3 createsuperuserUsername: archery_admin # ⼿动输⼊Email address: xx@sword: xxxx #输⼊密码Password (again): xxxxx #确认密码Superuser created successfully.4.数据库升级4.1.导出线上库# su -mysqldump -S xx/ --single-transaction --master-data=2 --set-gtid-purged=OFF archery > 4.2.在⽬标实例上恢复数据# su -mysql -S eate database archery138to150 charset utf8mb4;qmysql -S xx/ archery138to150 < 4.3.中间库执⾏数据库升级脚本# su -cd /opt/archery150/src/init_sqlmysql -h -P3306 -uxx -p archery138to150 < v1.3.8_ql -h -P3306 -uxx -p archery138to150 < v1.4.2_ql -h -P3306 -uxx -p archery138to150 < v1.4.3_ql -h -P3306 -uxx -p archery138to150 < v1.4.5_4.4.数据库标准化更新——新增——新版本数据库执⾏4.4.1.添加慢⽇志收集表、添加阿⾥云参数mysql -h -P3306 -uxx -p archery150 < mysql_slow_query_ql -h -P3306 -uxx -p archery150 < rds_param_4.4.2.标准化SQL脚本,调整索引名称、外键名称、字段类型等4.4.3.字段添加注释SQL脚本,已PR到1.5.3版本代码中。mysql -h -P3306 -uxx -p archery138to150 < 1.5.3_4.4.4.导出恢复库升级数据,并导⼊ archery 数据库。SET FOREIGN_KEY_CHECKS = 0;insert into _rds_config select * from _rds_config;insert into _group select * from _group;insert into _masking_columns select * from _masking_columns;insert into _masking_rules select * from _masking_rules;insert into _admin_log select * from _admin_log;insert into _session select * from _session;insert into _slow_query_review select * from _slow_query_review;insert into _slow_query_review_history select * from _slow_query_review_history;insert into _log select * from _log;insert into _privileges select * from _privileges;insert into _privileges_apply select * from _privileges_apply;insert into ce_group select * from ce_group;insert into ce_group_relations select * from ce_group_relations;insert into _instance select * from _instance;truncate table _users;insert into _users select * from _users;insert into _users_groups select * from _users_groups;insert into _workflow select * from _workflow;insert into _workflow_content select * from _workflow_content;insert into ow_audit select * from ow_audit;insert into ow_audit_detail select * from ow_audit_detail;insert into ow_audit_setting select * from ow_audit_setting;insert into ow_log select * from ow_log;5.启动5.1. ⽅式 1(推荐):gunicorn+nginx启动server{ listen 9999; # 监听的端⼝ server_name archery150; client_max_body_size 20M; # 处理Request Entity Too Large proxy_read_timeout 600s; # 超时时间与Gunicorn超时时间设置⼀致,主要⽤于在线查询 location / { proxy_pass 127.0.0.1:8888; proxy_set_header Host $host:9123; # 解决重定向404的问题,和listen端⼝保持⼀致,如果是docker则和宿主机映射端⼝保持⼀致 proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } location /static { alias /opt/archery/static; # 此处指向配置项STATIC_ROOT⽬录的绝对路径,⽤于nginx收集静态资源 } error_page 404 /; location = / { } error_page 500 502 503 504 /; location = / { }cd /opt/archery/archery-1.5.0/source /opt/venv4archery150/bin/activatesed -i 's#8000#8888#g' 5.1.1.报错启动不正常先检查nginx 是否安装、是否正常启动再检查nginx 配置是否正确检查 qcluster 启动是否正常,是否可以看到进程查看 的 nohup ⽇志信息5.2.⽅式2(不推荐)——runserver 启动:# 杀掉已有进程ps aux | grep python3 | grep -v grep | awk '{print $2}' | xargs kill -9cd /opt/archery/archery150/source /opt/venv4archery/bin/activatepython3 qcluster &source /opt/venv4archery/bin/activatepython3 runserver 0.0.0.0:9999 --insecure &
6.配置ion配置访问INCEPTION_HOST 10.33.66.241INCEPTION_PORT 6669REMOTE_BACKUP_HOST 10.33.66.231REMOTE_BACKUP_PORT 3306REMOTE_BACKUP_USER incepREMOTE_BACKUP_PASSWORD xxxx6.2.功能模块配置上线CRITICAL_DDL_REGEX ^drop|^truncate|^renameAUTO_REVIEW_WRONG 2AUTO_REVIEW 查询QUERY_CHECK ONDISABLE_STARDATA_MASKING ONMAX_EXECUTION_TIMEADMIN_QUERY_LIMIT
优化SQLADVISOR_PATH /opt/archery/sqladvisorSOAR_PATH /opt/archery/soarSOAR_TEST_DSN xxx:xxxx@:3307/archery1506.3.通知配置ARCHERY_BASE_URL L ONMAIL_SSL ONMAIL_SMTP_SERVER L_SMTP_PORT xxMAIL_SMTP_USER xx@L_SMTP_PASSWORD
DDL_NOTIFY_AUTH_GROUP dinglu@G ON6.4.其他配置SCHEMASYNC /opt/archery/schemasyncBINLOG2SQL /opt/archery/ULT_AUTH_GROUP RDDEFAULT_RESOURCE_GROUP ALLLOCK_TIME_THRESHOLDLOCK_CNT_THRESHOLD
SIGN_UP_ENABLED OFF7.修改修改后需要重启 qcluster 或者重启python3服务,才能⽣效。
2023年6月21日发(作者:)
[原创]archery平台升级部署实践v1.3.8 → v1.5.0⽬录1.安装、升级python3 venv 环境1.1.安装 python36全新安装需要执⾏,升级安装可忽略1.2.创建Python3 venv 环境(Python>=3.6.5,建议使⽤虚拟环境 )全新安装需要执⾏,升级安装也建议重新部署⼀个venv 环境,便于进⾏切换。不推荐在原venv环境中直接进⾏升级。pip3 install virtualenvcd /opt/virtualenv venv4archery150 --python=python36source /opt/venv4archery150/bin/activate#确认命令在 $PATH 中,否则安装包时报错which mysql_config #确认命令在 $PATH 中,否则安装包时报错# 下载 archery 源码yum install -y gcc gcc-c++ epel-release python-pip python-devel unixODBC-develcd /optwget /hhyo/archery/archive/ -zxvf archery150pip3 install -r (-i /pypi/web/simple/)1.3.报错处理参考1.3.1. pyodbc 安装失败# 安装 unixODBC-devel 包sudo yum install -y epel-release python-pip gcc-c++ python-devel unixODBC-devel2.组件安装配置 安装、配置2.2.数据库账号授权2.3. Redis 安装——新增参照wiki ⽂档安装单实例 ion 安装、配置、启动a-toolkit 安装略 安装、配置——有变更yum install -y nginxvim /etc/nginx/conf.d/rver{ listen 9999; # 监听的端⼝,未正式使⽤时,先试⽤临时端⼝ server_name archery150; client_max_body_size 20M; #新增 proxy_read_timeout 600s; #超时时间与gunicorn超时时间设置⼀致,主要⽤于在线查询 location / { proxy_pass 127.0.0.1:8888/; # 8888 要与 脚本中端⼝对应 proxy_set_header Host $host:9999; #解决重定向404的问题 proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } location /static { alias /opt/archery150/common/static/; #此处指向配置项STATIC_ROOT⽬录的绝对路径,⽤于nginx收集静态资源 } error_page 404 /; location = / { } error_page 500 502 503 504 /; location = / { } }2.7.上传 archery 第三⽅⼯具2.8. SQLAdvisor 安装2.8.1.报错处理2.9. SchemaSync 安装3.安装 archery 环境3.1. 1.2.步已下载源码,略过略3.2.修改 archery/ ⽂件 DATABASES 配置项——有变更这次升级加⼊了redis cache,配置略有改动。django_q 使⽤默认配置即可。vim /opt/archery/archery150/archery/# 12 ~ 13# SECURITY WARNING: don't run with debug turned on in production!DEBUG = False #关闭调试模式# 118 ~ 132# 该项⽬本⾝的mysql数据库地址DATABASES = { 'default': { 'ENGINE': '', 'NAME': 'archery150', 'USER': 'xxx', 'PASSWORD': 'xxx', 'HOST': '', 'PORT': '3306', 'OPTIONS': { 'init_command': "SET sql_mode='STRICT_TRANS_TABLES'", 'charset': 'utf8mb4' } }}# 145 ~ 158# Django-Q 默认配置即可,也可参考django-q⽂档修改Q_CLUSTER = { 'name': 'archery', 'workers': 4, 'recycle': 500, 'timeout': 60, 'compress': True, 'cpu_affinity': 1, 'save_limit': 0, 'queue_limit': 50, 'label': 'Django Q', 'django_redis': 'default', 'sync': False # 本地调试可以修改为True,使⽤同步模式}# 160 ~ 169# 缓存配置CACHES = { "default": { "BACKEND": "django_ache", "LOCATION": "redis://10.33.66.241:50001/0", #单实例 "OPTIONS": { "CLIENT_CLASS": "django_tClient", } }}# 171 ~ 191# LDAPENABLE_LDAP = Trueif ENABLE_LDAP: import ldap from django_auth_ import LDAPSearch AUTHENTICATION_BACKENDS = ( 'django_auth_ckend', # 配置为先使⽤LDAP认证,如通过认证则不再使⽤后⾯的认证⽅式 'ackend', # django系统中⼿动创建的⽤户也可使⽤,优先级靠后。注意这2⾏的顺序 ) AUTH_LDAP_SERVER_URI = "ldap://" AUTH_LDAP_BIND_DN = "CN=auth,CN=Users,DC=xxx,DC=xxx,DC=com" AUTH_LDAP_BIND_PASSWORD = "xxxx" AUTH_LDAP_USER_SEARCH = LDAPSearch("ou=xxx,dc=xxx,dc=xxx,dc=com",_SUBTREE, "(sAMAccountName=%(user)s)") AUTH_LDAP_ALWAYS_UPDATE_USER = True # 每次登录从ldap同步⽤户信息 AUTH_LDAP_USER_ATTR_MAP = { # key为_users字段名,value为ldap中字段名,⽤户同步信息 "username": "xxxxx", "display": "cn", "email": "mail" }3.3.数据库初始化如下命令在测试环境中执⾏,⽣产环境直接执⾏脚本。# 数据库初始化python3 makemigrations sqlpython3 migrate
# 编译翻译⽂件python3 compilemessages #新增步骤官⽅⽂档虽然说可以不必初始化,但是由于权限的更新,权限ID 对应关系可能错乱,所以使⽤1.38数据库升级后,迁移到1.50数据库的⽅式。/* Navicat Premium Data Transfer Source Server : archery150 Source Server Type : MySQL Source Server Version : 50722 Source Host :
Source Schema : archery_new Target Server Type : MySQL Target Server Version : 50722 File Encoding : 65001 Date: 17/04/2019 15:13:10*/create database archery150 charset utf8;use archery150;SET NAMES utf8mb4;SET FOREIGN_KEY_CHECKS = 0;-- ------------------------------ Table structure for aliyun_access_key-- ----------------------------DROP TABLE IF EXISTS `aliyun_access_key`;CREATE TABLE `aliyun_access_key` ( `id` int(11) NOT NULL AUTO_INCREMENT, `ak` varchar(50) NOT NULL, `secret` varchar(100) NOT NULL, `is_enable` tinyint(4) NOT NULL COMMENT '是否启⽤', `remark` varchar(50) NOT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;-- ------------------------------ Table structure for aliyun_rds_config-- ----------------------------DROP TABLE IF EXISTS `aliyun_rds_config`;CREATE TABLE `aliyun_rds_config` ( `id` int(11) NOT NULL AUTO_INCREMENT, `instance_id` int(11) NOT NULL, `rds_dbinstanceid` varchar(100) NOT NULL, `is_enable` tinyint(4) NOT NULL COMMENT '是否启⽤', PRIMARY KEY (`id`), UNIQUE KEY `idx_uni_iid` (`instance_id`), CONSTRAINT `fk_instanid__sql_instance_id` FOREIGN KEY (`instance_id`) REFERENCES `sql_instance` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION) ENGINE=InnoDB DEFAULT CHARSET=utf8;-- ------------------------------ Table structure for auth_group-- ----------------------------DROP TABLE IF EXISTS `auth_group`;CREATE TABLE `auth_group` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键', `name` varchar(80) NOT NULL COMMENT '组', PRIMARY KEY (`id`), UNIQUE KEY `idx_name` (`name`)) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='权限组';-- ------------------------------ Table structure for auth_group_permissions-- ----------------------------DROP TABLE IF EXISTS `auth_group_permissions`;CREATE TABLE `auth_group_permissions` ( `id` int(11) NOT NULL AUTO_INCREMENT, `group_id` int(11) NOT NULL, `permission_id` int(11) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `idx_uni_gid_pid` (`group_id`,`permission_id`), KEY `idx_pid` (`permission_id`), CONSTRAINT `fk_groupid__auth_group_id` FOREIGN KEY (`group_id`) REFERENCES `auth_group` (`id`), CONSTRAINT `fk_perid__auth_permission_id` FOREIGN KEY (`permission_id`) REFERENCES `auth_permission` (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;-- ------------------------------ Table structure for auth_permission-- ----------------------------DROP TABLE IF EXISTS `auth_permission`;CREATE TABLE `auth_permission` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) NOT NULL, `content_type_id` int(11) NOT NULL, `codename` varchar(100) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `idx_uni_ctid` (`content_type_id`,`codename`), CONSTRAINT `fk_ctypeid__django_content_type_id` FOREIGN KEY (`content_type_id`) REFERENCES `django_content_type` (`id`)) ENGINE=InnoDB AUTO_INCREMENT=137 DEFAULT CHARSET=utf8;-- ------------------------------ Table structure for data_masking_columns-- ----------------------------DROP TABLE IF EXISTS `data_masking_columns`;CREATE TABLE `data_masking_columns` ( `column_id` int(11) NOT NULL AUTO_INCREMENT, `rule_type` int(11) NOT NULL, `active` tinyint(4) NOT NULL COMMENT '激活状态', `instance_id` int(11) NOT NULL, `table_schema` varchar(64) NOT NULL, `table_name` varchar(64) NOT NULL, `column_name` varchar(64) NOT NULL, `column_comment` varchar(1024) NOT NULL, `create_time` datetime(6) NOT NULL, `sys_time` datetime(6) NOT NULL, PRIMARY KEY (`column_id`), KEY `idx_iid` (`instance_id`), CONSTRAINT `fk_instance_id__sql_instance_id` FOREIGN KEY (`instance_id`) REFERENCES `sql_instance` (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;-- ------------------------------ Table structure for data_masking_rules-- ----------------------------DROP TABLE IF EXISTS `data_masking_rules`;CREATE TABLE `data_masking_rules` ( `id` int(11) NOT NULL AUTO_INCREMENT, `rule_type` int(11) NOT NULL, `rule_regex` varchar(255) NOT NULL, `hide_group` int(11) NOT NULL, `rule_desc` varchar(100) NOT NULL, `sys_time` datetime(6) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `idx_uni_rule_type` (`rule_type`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;-- ------------------------------ Table structure for django_admin_log-- ----------------------------DROP TABLE IF EXISTS `django_admin_log`;CREATE TABLE `django_admin_log` ( `id` int(11) NOT NULL AUTO_INCREMENT, `action_time` datetime(6) NOT NULL, `object_id` longtext, `object_repr` varchar(200) NOT NULL, `action_flag` smallint(5) unsigned NOT NULL, `change_message` longtext NOT NULL, `content_type_id` int(11) DEFAULT NULL, `user_id` int(11) NOT NULL, PRIMARY KEY (`id`), KEY `idx_ctid` (`content_type_id`), KEY `idx_uid` (`user_id`), CONSTRAINT `fk_ctid__django_content_type_id` FOREIGN KEY (`content_type_id`) REFERENCES `django_content_type` (`id`), CONSTRAINT `fk_users_id__sql_users_id` FOREIGN KEY (`user_id`) REFERENCES `sql_users` (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;-- ------------------------------ Table structure for django_content_type-- ----------------------------DROP TABLE IF EXISTS `django_content_type`;CREATE TABLE `django_content_type` ( `id` int(11) NOT NULL AUTO_INCREMENT, `app_label` varchar(100) NOT NULL, `model` varchar(100) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `idx_uni_app_label__model` (`app_label`,`model`)) ENGINE=InnoDB AUTO_INCREMENT=34 DEFAULT CHARSET=utf8;-- ------------------------------ Table structure for django_migrations-- ----------------------------DROP TABLE IF EXISTS `django_migrations`;CREATE TABLE `django_migrations` ( `id` int(11) NOT NULL AUTO_INCREMENT, `app` varchar(255) NOT NULL, `name` varchar(255) NOT NULL, `applied` datetime(6) NOT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=25 DEFAULT CHARSET=utf8;-- ------------------------------ Table structure for django_q_ormq-- ----------------------------DROP TABLE IF EXISTS `django_q_ormq`;CREATE TABLE `django_q_ormq` ( `id` int(11) NOT NULL AUTO_INCREMENT, `key` varchar(100) NOT NULL, `payload` longtext NOT NULL, `lock` datetime(6) DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;-- ------------------------------ Table structure for django_q_schedule-- ----------------------------DROP TABLE IF EXISTS `django_q_schedule`;CREATE TABLE `django_q_schedule` ( `id` int(11) NOT NULL AUTO_INCREMENT, `func` varchar(256) NOT NULL, `hook` varchar(256) DEFAULT NULL, `args` longtext, `kwargs` longtext, `schedule_type` varchar(1) NOT NULL, `repeats` int(11) NOT NULL, `next_run` datetime(6) DEFAULT NULL, `task` varchar(100) DEFAULT NULL, `name` varchar(100) DEFAULT NULL, `minutes` smallint(5) unsigned DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;-- ------------------------------ Table structure for django_q_task-- ----------------------------DROP TABLE IF EXISTS `django_q_task`;CREATE TABLE `django_q_task` ( `id` varchar(32) NOT NULL, `name` varchar(100) NOT NULL, `func` varchar(256) NOT NULL, `hook` varchar(256) DEFAULT NULL, `args` longtext, `kwargs` longtext, `result` longtext, `started` datetime(6) NOT NULL, `stopped` datetime(6) NOT NULL, `success` tinyint(4) NOT NULL, `group` varchar(100) DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;-- ------------------------------ Table structure for django_session-- ----------------------------DROP TABLE IF EXISTS `django_session`;CREATE TABLE `django_session` ( `session_key` varchar(40) NOT NULL, `session_data` longtext NOT NULL, `expire_date` datetime(6) NOT NULL, PRIMARY KEY (`session_key`), KEY `idx_expire_date` (`expire_date`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;-- ------------------------------ Table structure for param_history-- ----------------------------DROP TABLE IF EXISTS `param_history`;CREATE TABLE `param_history` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键', `instance_id` int(11) NOT NULL COMMENT '实例ID', `variable_name` varchar(64) NOT NULL COMMENT '参数名', `old_var` varchar(1024) NOT NULL COMMENT '修改前参数值', `new_var` varchar(1024) NOT NULL COMMENT '修改后参数值', `set_sql` varchar(1024) NOT NULL COMMENT '在线变更配置执⾏的SQL语句', `user_name` varchar(30) NOT NULL COMMENT '修改⼈', `user_display` varchar(50) NOT NULL COMMENT '修改⼈中⽂名', `update_time` datetime(6) NOT NULL COMMENT '修改时间', PRIMARY KEY (`id`), KEY `idx_iid` (`instance_id`), CONSTRAINT `fk_instanceid__sql_instance_id` FOREIGN KEY (`instance_id`) REFERENCES `sql_instance` (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;-- ------------------------------ Table structure for param_template-- ----------------------------DROP TABLE IF EXISTS `param_template`;CREATE TABLE `param_template` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键', `db_type` varchar(10) NOT NULL COMMENT '数据库类型,mysql、mssql、redis、pgsql', `variable_name` varchar(64) NOT NULL COMMENT '参数名', `default_value` varchar(1024) NOT NULL COMMENT '默认参数值', `editable` tinyint(4) NOT NULL COMMENT '是否⽀持修改', `valid_values` varchar(1024) NOT NULL COMMENT '有效参数值', `description` varchar(1024) NOT NULL COMMENT '参数描述', `create_time` datetime(6) NOT NULL COMMENT '创建时间', `sys_time` datetime(6) NOT NULL COMMENT '创建时间', PRIMARY KEY (`id`), UNIQUE KEY `idx_uni_db_type__variable_name` (`db_type`,`variable_name`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;-- ------------------------------ Table structure for query_log-- ----------------------------DROP TABLE IF EXISTS `query_log`;CREATE TABLE `query_log` ( `id` int(11) NOT NULL AUTO_INCREMENT, `instance_name` varchar(50) NOT NULL, `db_name` varchar(64) NOT NULL, `sqllog` longtext NOT NULL, `effect_row` bigint(20) NOT NULL, `cost_time` varchar(10) NOT NULL, `username` varchar(30) NOT NULL, `user_display` varchar(50) NOT NULL, `priv_check` tinyint(4) NOT NULL COMMENT '查询权限是否正常校验', `hit_rule` tinyint(4) NOT NULL COMMENT '查询是否命中脱敏规则', `masking` tinyint(4) NOT NULL COMMENT '查询结果是否正常脱敏', `create_time` datetime(6) NOT NULL, `sys_time` datetime(6) NOT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;-- ------------------------------ Table structure for query_privileges-- ----------------------------DROP TABLE IF EXISTS `query_privileges`;CREATE TABLE `query_privileges` ( `privilege_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '权限id', `user_name` varchar(30) NOT NULL COMMENT '⽤户', `user_display` varchar(50) NOT NULL COMMENT '下拉菜单筛选名', `instance_id` int(11) NOT NULL, `table_name` varchar(64) NOT NULL COMMENT '表', `db_name` varchar(64) NOT NULL COMMENT '数据库', `valid_date` date NOT NULL COMMENT '有效时间', `limit_num` int(11) NOT NULL COMMENT '结果集', `priv_type` tinyint(4) NOT NULL COMMENT '权限级别', `is_deleted` tinyint(4) NOT NULL COMMENT '删除标记', `create_time` datetime(6) NOT NULL COMMENT '申请时间', `sys_time` datetime(6) NOT NULL COMMENT '系统时间', PRIMARY KEY (`privilege_id`), KEY `idx_uname__iid__db_name__vdate` (`user_name`,`instance_id`,`db_name`,`valid_date`), KEY `idx_iid` (`instance_id`), CONSTRAINT `fk_instid__sql_instance_id` FOREIGN KEY (`instance_id`) REFERENCES `sql_instance` (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;-- ------------------------------ Table structure for query_privileges_apply-- ----------------------------DROP TABLE IF EXISTS `query_privileges_apply`;CREATE TABLE `query_privileges_apply` ( `apply_id` int(11) NOT NULL AUTO_INCREMENT, `group_id` int(11) NOT NULL, `group_name` varchar(100) NOT NULL, `title` varchar(50) NOT NULL, `user_name` varchar(30) NOT NULL, `user_display` varchar(50) NOT NULL, `instance_id` int(11) NOT NULL, `db_list` longtext NOT NULL, `table_list` longtext NOT NULL, `valid_date` date NOT NULL, `limit_num` int(11) NOT NULL, `priv_type` tinyint(4) NOT NULL, `status` int(11) NOT NULL, `audit_auth_groups` varchar(255) NOT NULL, `create_time` datetime(6) NOT NULL, `sys_time` datetime(6) NOT NULL, PRIMARY KEY (`apply_id`), KEY `idx_iid` (`instance_id`), CONSTRAINT `fk_insid__sql_instance_id` FOREIGN KEY (`instance_id`) REFERENCES `sql_instance` (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;-- ------------------------------ Table structure for resource_group-- ----------------------------DROP TABLE IF EXISTS `resource_group`;CREATE TABLE `resource_group` ( `group_id` int(11) NOT NULL AUTO_INCREMENT, `group_name` varchar(100) NOT NULL, `group_parent_id` bigint(20) NOT NULL, `group_sort` int(11) NOT NULL, `group_level` int(11) NOT NULL, `ding_webhook` varchar(255) NOT NULL, `is_deleted` tinyint(4) NOT NULL, `create_time` datetime(6) NOT NULL, `sys_time` datetime(6) NOT NULL, PRIMARY KEY (`group_id`), UNIQUE KEY `idx_uni_group_name` (`group_name`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;-- ------------------------------ Table structure for resource_group_relations-- ----------------------------DROP TABLE IF EXISTS `resource_group_relations`;CREATE TABLE `resource_group_relations` ( `id` int(11) NOT NULL AUTO_INCREMENT, `object_type` tinyint(4) NOT NULL, `object_id` int(11) NOT NULL, `object_name` varchar(100) NOT NULL, `group_id` int(11) NOT NULL, `group_name` varchar(100) NOT NULL, `create_time` datetime(6) NOT NULL, `sys_time` datetime(6) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `idx_uni_oid__gid__object_type` (`object_id`,`group_id`,`object_type`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;-- ------------------------------ Table structure for sql_config-- ----------------------------DROP TABLE IF EXISTS `sql_config`;CREATE TABLE `sql_config` ( `item` varchar(50) NOT NULL, `value` varchar(200) NOT NULL, `description` varchar(200) NOT NULL, PRIMARY KEY (`item`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;-- ------------------------------ Table structure for sql_instance-- ----------------------------DROP TABLE IF EXISTS `sql_instance`;CREATE TABLE `sql_instance` ( `id` int(11) NOT NULL AUTO_INCREMENT, `instance_name` varchar(50) NOT NULL, `type` varchar(6) NOT NULL, `db_type` varchar(10) NOT NULL, `host` varchar(200) NOT NULL, `port` int(11) NOT NULL, `user` varchar(100) NOT NULL, `password` varchar(300) NOT NULL, `create_time` datetime(6) NOT NULL, `update_time` datetime(6) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `idx_uni_instance_name` (`instance_name`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;-- ------------------------------ Table structure for sql_permission-- ----------------------------DROP TABLE IF EXISTS `sql_permission`;CREATE TABLE `sql_permission` ( `id` int(11) NOT NULL AUTO_INCREMENT, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;-- ------------------------------ Table structure for sql_users-- ----------------------------DROP TABLE IF EXISTS `sql_users`;CREATE TABLE `sql_users` ( `id` int(11) NOT NULL AUTO_INCREMENT, `PASSWORD` varchar(128) NOT NULL COMMENT '密码', `last_login` datetime(6) DEFAULT NULL COMMENT '上次登录', `is_superuser` tinyint(4) NOT NULL COMMENT '超级⽤户状态:1是,0否', `username` varchar(150) NOT NULL COMMENT '⽤户名', `first_name` varchar(30) NOT NULL COMMENT '名,⽆值', `last_name` varchar(150) NOT NULL COMMENT '姓,⽆值', `email` varchar(254) NOT NULL COMMENT '电⼦邮箱地址', `is_staff` tinyint(4) NOT NULL COMMENT '职员状态(是否能管理django后台):1是,0否', `is_active` tinyint(4) NOT NULL COMMENT '有效(禁⽤⽤户标签):1是,0否', `date_joined` datetime(6) NOT NULL COMMENT '加⼊⽇期(第⼀次登录时间)', `display` varchar(50) NOT NULL COMMENT '显⽰的中⽂名', `failed_login_count` int(11) NOT NULL COMMENT '登陆失败次数', `last_login_failed_at` datetime DEFAULT NULL COMMENT '上次失败登录时间', PRIMARY KEY (`id`), UNIQUE KEY `idx_uni_username` (`username`)) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;-- ------------------------------ Table structure for sql_users_groups-- ----------------------------DROP TABLE IF EXISTS `sql_users_groups`;CREATE TABLE `sql_users_groups` ( `id` int(11) NOT NULL AUTO_INCREMENT, `users_id` int(11) NOT NULL, `group_id` int(11) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `idx_uni_uid__gid` (`users_id`,`group_id`), KEY `idx_gid` (`group_id`), CONSTRAINT `fk_gid__auth_group_id` FOREIGN KEY (`group_id`) REFERENCES `auth_group` (`id`), CONSTRAINT `fk_usersid__sql_users_id` FOREIGN KEY (`users_id`) REFERENCES `sql_users` (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;-- ------------------------------ Table structure for sql_users_user_permissions-- ----------------------------DROP TABLE IF EXISTS `sql_users_user_permissions`;CREATE TABLE `sql_users_user_permissions` ( `id` int(11) NOT NULL AUTO_INCREMENT, `users_id` int(11) NOT NULL, `permission_id` int(11) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `idx_uni_uid__pid` (`users_id`,`permission_id`), KEY `idx_pid` (`permission_id`), CONSTRAINT `fk_pid__auth_permission_id` FOREIGN KEY (`permission_id`) REFERENCES `auth_permission` (`id`), CONSTRAINT `fk_uid__sql_users_id` FOREIGN KEY (`users_id`) REFERENCES `sql_users` (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;-- ------------------------------ Table structure for sql_workflow-- ----------------------------DROP TABLE IF EXISTS `sql_workflow`;CREATE TABLE `sql_workflow` ( `id` int(11) NOT NULL AUTO_INCREMENT, `workflow_name` varchar(50) NOT NULL, `group_id` int(11) NOT NULL, `group_name` varchar(100) NOT NULL, `instance_id` int(11) NOT NULL, `db_name` varchar(64) NOT NULL COMMENT '数据库', `engineer` varchar(30) NOT NULL, `engineer_display` varchar(50) NOT NULL, `audit_auth_groups` varchar(255) NOT NULL, `create_time` datetime(6) NOT NULL, `finish_time` datetime(6) DEFAULT NULL, `STATUS` varchar(50) NOT NULL, `is_backup` tinyint(4) NOT NULL COMMENT '是否备份', `is_manual` tinyint(4) NOT NULL, `syntax_type` tinyint(4) NOT NULL COMMENT '⼯单类型 1、DDL,2、DML', PRIMARY KEY (`id`), KEY `idx_iid` (`instance_id`), CONSTRAINT `fk_iid__sql_instance_id` FOREIGN KEY (`instance_id`) REFERENCES `sql_instance` (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;-- ------------------------------ Table structure for sql_workflow_content-- ----------------------------DROP TABLE IF EXISTS `sql_workflow_content`;CREATE TABLE `sql_workflow_content` ( `id` int(11) NOT NULL AUTO_INCREMENT, `workflow_id` int(11) NOT NULL COMMENT 'SQL⼯单ID', `sql_content` longtext NOT NULL COMMENT '提交的SQL⽂本', `review_content` longtext NOT NULL COMMENT '⾃动审核内容的JSON格式', `execute_result` longtext NOT NULL COMMENT '执⾏结果的JSON格式', PRIMARY KEY (`id`), UNIQUE KEY `idx_uni_workflow_id` (`workflow_id`), CONSTRAINT `fk_wfid__sql_workflow_id` FOREIGN KEY (`workflow_id`) REFERENCES `sql_workflow` (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;-- ------------------------------ Table structure for workflow_audit-- ----------------------------DROP TABLE IF EXISTS `workflow_audit`;CREATE TABLE `workflow_audit` ( `audit_id` int(11) NOT NULL AUTO_INCREMENT, `group_id` int(11) NOT NULL, `group_name` varchar(100) NOT NULL, `workflow_id` bigint(20) NOT NULL, `workflow_type` tinyint(4) NOT NULL, `workflow_title` varchar(50) NOT NULL, `workflow_remark` varchar(140) NOT NULL, `audit_auth_groups` varchar(255) NOT NULL, `current_audit` varchar(20) NOT NULL, `next_audit` varchar(20) NOT NULL, `current_status` tinyint(4) NOT NULL, `create_user` varchar(30) NOT NULL, `create_user_display` varchar(50) NOT NULL, `create_time` datetime(6) NOT NULL, `sys_time` datetime(6) NOT NULL, PRIMARY KEY (`audit_id`), UNIQUE KEY `idx_uni_wfid__workflow_type` (`workflow_id`,`workflow_type`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;-- ------------------------------ Table structure for workflow_audit_detail-- ----------------------------DROP TABLE IF EXISTS `workflow_audit_detail`;CREATE TABLE `workflow_audit_detail` ( `audit_detail_id` int(11) NOT NULL AUTO_INCREMENT, `audit_id` int(11) NOT NULL, `audit_user` varchar(30) NOT NULL, `audit_time` datetime(6) NOT NULL, `audit_status` tinyint(4) NOT NULL, `remark` varchar(140) NOT NULL, `sys_time` datetime(6) NOT NULL, PRIMARY KEY (`audit_detail_id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;-- ------------------------------ Table structure for workflow_audit_setting-- ----------------------------DROP TABLE IF EXISTS `workflow_audit_setting`;CREATE TABLE `workflow_audit_setting` ( `audit_setting_id` int(11) NOT NULL AUTO_INCREMENT, `group_id` int(11) NOT NULL, `group_name` varchar(100) NOT NULL, `workflow_type` tinyint(4) NOT NULL, `audit_auth_groups` varchar(255) NOT NULL, `create_time` datetime(6) NOT NULL, `sys_time` datetime(6) NOT NULL, PRIMARY KEY (`audit_setting_id`), UNIQUE KEY `idx_uni_gid__workflow_type` (`group_id`,`workflow_type`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;-- ------------------------------ Table structure for workflow_log-- ----------------------------DROP TABLE IF EXISTS `workflow_log`;CREATE TABLE `workflow_log` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键', `audit_id` bigint(20) NOT NULL COMMENT '⼯单审批id', `operation_type` tinyint(4) NOT NULL COMMENT '操作类型,0提交/待审核、1审核通过、2审核不通过、3审核取消/取消执⾏、4定时执⾏、5执⾏⼯单、6执⾏结束', `operation_type_desc` char(10) NOT NULL COMMENT '操作类型描述', `operation_info` varchar(200) NOT NULL COMMENT '操作信息', `operator` varchar(30) NOT NULL COMMENT '操作⼈', `operator_display` varchar(50) NOT NULL COMMENT '操作⼈中⽂名', `operation_time` datetime(6) NOT NULL COMMENT '操作时间', PRIMARY KEY (`id`), KEY `idx_aid` (`audit_id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;SET FOREIGN_KEY_CHECKS = 1;3.4.创建管理⽤户cd /opt/archery150/python3 createsuperuserUsername: archery_admin # ⼿动输⼊Email address: xx@sword: xxxx #输⼊密码Password (again): xxxxx #确认密码Superuser created successfully.4.数据库升级4.1.导出线上库# su -mysqldump -S xx/ --single-transaction --master-data=2 --set-gtid-purged=OFF archery > 4.2.在⽬标实例上恢复数据# su -mysql -S eate database archery138to150 charset utf8mb4;qmysql -S xx/ archery138to150 < 4.3.中间库执⾏数据库升级脚本# su -cd /opt/archery150/src/init_sqlmysql -h -P3306 -uxx -p archery138to150 < v1.3.8_ql -h -P3306 -uxx -p archery138to150 < v1.4.2_ql -h -P3306 -uxx -p archery138to150 < v1.4.3_ql -h -P3306 -uxx -p archery138to150 < v1.4.5_4.4.数据库标准化更新——新增——新版本数据库执⾏4.4.1.添加慢⽇志收集表、添加阿⾥云参数mysql -h -P3306 -uxx -p archery150 < mysql_slow_query_ql -h -P3306 -uxx -p archery150 < rds_param_4.4.2.标准化SQL脚本,调整索引名称、外键名称、字段类型等4.4.3.字段添加注释SQL脚本,已PR到1.5.3版本代码中。mysql -h -P3306 -uxx -p archery138to150 < 1.5.3_4.4.4.导出恢复库升级数据,并导⼊ archery 数据库。SET FOREIGN_KEY_CHECKS = 0;insert into _rds_config select * from _rds_config;insert into _group select * from _group;insert into _masking_columns select * from _masking_columns;insert into _masking_rules select * from _masking_rules;insert into _admin_log select * from _admin_log;insert into _session select * from _session;insert into _slow_query_review select * from _slow_query_review;insert into _slow_query_review_history select * from _slow_query_review_history;insert into _log select * from _log;insert into _privileges select * from _privileges;insert into _privileges_apply select * from _privileges_apply;insert into ce_group select * from ce_group;insert into ce_group_relations select * from ce_group_relations;insert into _instance select * from _instance;truncate table _users;insert into _users select * from _users;insert into _users_groups select * from _users_groups;insert into _workflow select * from _workflow;insert into _workflow_content select * from _workflow_content;insert into ow_audit select * from ow_audit;insert into ow_audit_detail select * from ow_audit_detail;insert into ow_audit_setting select * from ow_audit_setting;insert into ow_log select * from ow_log;5.启动5.1. ⽅式 1(推荐):gunicorn+nginx启动server{ listen 9999; # 监听的端⼝ server_name archery150; client_max_body_size 20M; # 处理Request Entity Too Large proxy_read_timeout 600s; # 超时时间与Gunicorn超时时间设置⼀致,主要⽤于在线查询 location / { proxy_pass 127.0.0.1:8888; proxy_set_header Host $host:9123; # 解决重定向404的问题,和listen端⼝保持⼀致,如果是docker则和宿主机映射端⼝保持⼀致 proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } location /static { alias /opt/archery/static; # 此处指向配置项STATIC_ROOT⽬录的绝对路径,⽤于nginx收集静态资源 } error_page 404 /; location = / { } error_page 500 502 503 504 /; location = / { }cd /opt/archery/archery-1.5.0/source /opt/venv4archery150/bin/activatesed -i 's#8000#8888#g' 5.1.1.报错启动不正常先检查nginx 是否安装、是否正常启动再检查nginx 配置是否正确检查 qcluster 启动是否正常,是否可以看到进程查看 的 nohup ⽇志信息5.2.⽅式2(不推荐)——runserver 启动:# 杀掉已有进程ps aux | grep python3 | grep -v grep | awk '{print $2}' | xargs kill -9cd /opt/archery/archery150/source /opt/venv4archery/bin/activatepython3 qcluster &source /opt/venv4archery/bin/activatepython3 runserver 0.0.0.0:9999 --insecure &
6.配置ion配置访问INCEPTION_HOST 10.33.66.241INCEPTION_PORT 6669REMOTE_BACKUP_HOST 10.33.66.231REMOTE_BACKUP_PORT 3306REMOTE_BACKUP_USER incepREMOTE_BACKUP_PASSWORD xxxx6.2.功能模块配置上线CRITICAL_DDL_REGEX ^drop|^truncate|^renameAUTO_REVIEW_WRONG 2AUTO_REVIEW 查询QUERY_CHECK ONDISABLE_STARDATA_MASKING ONMAX_EXECUTION_TIMEADMIN_QUERY_LIMIT
优化SQLADVISOR_PATH /opt/archery/sqladvisorSOAR_PATH /opt/archery/soarSOAR_TEST_DSN xxx:xxxx@:3307/archery1506.3.通知配置ARCHERY_BASE_URL L ONMAIL_SSL ONMAIL_SMTP_SERVER L_SMTP_PORT xxMAIL_SMTP_USER xx@L_SMTP_PASSWORD
DDL_NOTIFY_AUTH_GROUP dinglu@G ON6.4.其他配置SCHEMASYNC /opt/archery/schemasyncBINLOG2SQL /opt/archery/ULT_AUTH_GROUP RDDEFAULT_RESOURCE_GROUP ALLLOCK_TIME_THRESHOLDLOCK_CNT_THRESHOLD
SIGN_UP_ENABLED OFF7.修改修改后需要重启 qcluster 或者重启python3服务,才能⽣效。
发布评论