一、基础环境安装
1、升级Python
yum install epel-release
yum install python36 python36-pip
2、安装virtualenv
pip3.6 install virtualenv -i https://mirrors.aliyun.com/pypi/simple/
3、关闭SELinux
# vim /etc/sysconfig/selinux
SELINUX=enforcing 改为 SELINUX=disabled
二、安装Archery
1、准备虚拟环境
cd /usr/local/
virtualenv venv4archery --python=python3.6
source /usr/local/venv4archery/bin/activate(可利用deactivate退出)
2、安装依赖包
yum install gcc gcc-c++ python-devel python36-devel mysql-devel openldap-devel unixODBC-devel gettext
若mysql-devel安装报错,如下操作后重新执行即可
cd /etc/yum.repos.d/
rpm -ivh http://repo.mysql.com/mysql57-community-release-el7-8.noarch.rpm
yum install mysql-devel
3、下载源码包,安装Python相关依赖包
cd /usr/local
git clone https://github.com/hhyo/Archery.git
cd Archery
pip3.6 install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/
三、MySQL及Pt工具集的安装
5.7版本,略
Percona-Toolkits,略
四、goInception
1、go环境安装
# wget -c https://dl.google.com/go/go1.13.4.linux-amd64.tar.gz
# tar zxvf go1.13.4.linux-amd64.tar.gz -C /usr/local/
# echo "export PATH=$PATH:/usr/local/go/bin" >> /etc/profile
# source /etc/profile
# go version
输出:go version go1.13.4 linux/amd64,表示安装成功
2、安装goInception
mkdir /usr/local/goInception
tar zxvf goInception-linux-amd64-v1.1.5.tar.gz -C /usr/local/goInception
cp /usr/local/goInception/config/config.toml.default /usr/local/goInception/config/config.toml
config.toml配置如下,基本配置为host、port,以及[inc] 内的备份库连接信息(需要SELECT, INSERT, CREATE权限)
# IP地址
host = "127.0.0.1"
# 端口
port = 4000
# TiDB数据库目录
path = "/tmp/tidb"
[log]
# 日志级别: debug, info, warn, error, fatal.
level = "info"
# 日志格式, one of json, text, console.
format = "text"
# 禁用时间戳输出
disable-timestamp = false
# 日志文件
[log.file]
# 日志文件名
filename = ""
# 日志文件的最大上限(MB)
max-size = 300
# Max日志文件的保存天数,默认值 `0`,即不清理
max-days = 0
# 要保留的最大旧日志文件数,默认值 `0`,即不清理
max-backups = 0
# 日志轮询,默认值 `true`,即开启
log-rotate = true
[inc]
backup_host = "127.0.0.1"
backup_port = 3306
backup_user = "inception_bak"
backup_password = "123456"
enable_nullable = true
enable_drop_table = false
enable_set_engine = true
enable_change_column = true
check_timestamp_count = true
check_table_comment = false
check_column_comment = false
# 审核列类型变更
check_column_type_change = true
# explain判断受影响行数时使用的规则, 默认值"first"
# 可选值: "first", "max"
# "first": 使用第一行的explain结果作为受影响行数
# "max": 使用explain结果中的最大值作为受影响行数
explain_rule = "first"
# 安全更新是否开启(mysql自身的功能).
# -1 表示不做操作,基于远端数据库 [默认值]
# 0 表示关闭安全更新
# 1 表示开启安全更新
sql_safe_updates = -1
support_charset = "utf8,utf8mb4"
support_engine = "innodb"
lang = "en-US"
# 全量日志
general_log = false
[osc]
# 用来设置在arkit返回结果集中,对于原来OSC在执行过程的标准输出信息是不是要打印到结果集对应的错误信息列中,
# 如果设置为1,就不打印,如果设置为0,就打印。而如果出现了错误,则都会打印。默认值:OFF
osc_print_none = false
# 对应参数pt-online-schema-change中的参数--print。默认值:OFF
osc_print_sql = false
# 全局的OSC开关,默认是打开的,如果想要关闭则设置为OFF,这样就会直接修改。默认值:OFF
osc_on = false
# 这个参数实际上是一个OSC开关,如果设置为0,则全部ALTER语句都使用OSC方式,
# 如果设置为非0,则当这个表占用空间大小大于这个值时才使用OSC方式。
# 单位为M,这个表大小的计算方式是通过语句
# select (DATA_LENGTH + INDEX_LENGTH)/1024/1024 from information_schema.tables
# where table_schema = 'dbname' and table_name = 'tablename' 来实现的。默认值:16
# [0-1048576]
osc_min_table_size = 16
# 对应参数pt-online-schema-change中的参数alter-foreign-keys-method,具体意义可以参考OSC官方手册。默认值:none
# [auto | none | rebuild_constraints | drop_swap]
osc_alter_foreign_keys_method = "none"
# 对应参数pt-online-schema-change中的参数recursion_method,具体意义可以参考OSC官方手册。默认值:processlist
# [processlist | hosts | none]
osc_recursion_method = "processlist"
# 对应参数pt-online-schema-change中的参数--max-lag。默认值:3
osc_max_lag = 3
# 对应参数pt-online-schema-change中的参数--[no]check-alter。默认值:ON
osc_check_alter = true
# 对应参数pt-online-schema-change中的参数--[no]check-replication-filters。默认值:ON
osc_check_replication_filters = true
# 对应参数pt-online-schema-change中的参数--[no]drop-old-table。默认值:ON
osc_drop_old_table = true
# 对应参数pt-online-schema-change中的参数--[no]drop-new-table。默认值:ON
osc_drop_new_table = true
# 对应参数pt-online-schema-change中的参数--max-load中的thread_running部分。默认值:80
osc_max_thread_running = 80
# 对应参数pt-online-schema-change中的参数--max-load中的thread_connected部分。默认值:1000
osc_max_thread_connected = 1000
# 对应参数pt-online-schema-change中的参数--critical-load中的thread_running部分。默认值:80
osc_critical_thread_running = 80
# 对应参数pt-online-schema-change中的参数--critical-load中的thread_connected部分。默认值:1000
osc_critical_thread_connected = 1000
# 对应参数pt-online-schema-change中的参数--chunk-time。默认值:1
osc_chunk_time = 1.0
# 对应参数pt-online-schema-change中的参数--chunk-size-limit。默认值:4
osc_chunk_size_limit = 4
# 对应参数pt-online-schema-change中的参数--chunk-size。默认值:1000
osc_chunk_size = 1000
# 对应参数pt-online-schema-change中的参数--check-interval,意义是Sleep time between checks for --max-lag。默认值:5
osc_check_interval = 5
osc_bin_dir = "/usr/local/bin"
[ghost]
# 略
[inc_level]
# 略
指定该配置文件启动:
/usr/local/goInception/goInception -config=/usr/local/goInception/config/config.toml &
使用4000端口连接(默认):mysql -h127.0.0.1 -P4000
五、SOAR
详见另一篇博文:
六、Nginx
touch /etc/yum.repos.d/nginx.repo,填入以下yum源信息
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
yum install nginx
修改配置文件 /etc/nginx/conf.d/nginx.conf
server{
listen 9123; # 监听的端口
server_name archery;
client_max_body_size 20M; # 处理Request Entity Too Large
proxy_read_timeout 600s; # 超时时间与Gunicorn超时时间设置一致,主要用于在线查询
location / {
proxy_pass http://127.0.0.1:8000;
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 /usr/local/Archery/static; # 此处指向settings.py配置项STATIC_ROOT目录的绝对路径,用于nginx收集静态资源
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
/etc/sysconfig/iptables中开放9123端口
systemctl start iptables
systemctl restart nginx
七、Redis
wget -c http://download.redis.io/releases/redis-5.0.7.tar.gz
tar zxvf redis-5.0.7.tar.gz
cd redis-5.0.7
make
make install PREFIX=/usr/local/redis
mkdir /usr/local/redis/etc
cp redis.conf /usr/local/redis/etc
修改/usr/local/redis/etc/redis.conf:
#实现后台运行
daemonize yes
运行(配置文件有更新,直接再次运行,重载配置)
redis-server /usr/local/redis/etc/redis.conf
登录
redis-cli
127.0.0.1:6379> CONFIG SET requirepass "123456"
OK
127.0.0.1:6379> AUTH 123456
后续登录先输入密码
八、Archery配置
1、配置信息修改
配置文件:/usr/local/Archery/archery/settings.py,必要配置项如下:
# secret key用于敏感信息加密,必须启用,且需要自行替换为其他随机值
SECRET_KEY = 'hfusaf2m4ot#7)fkw#di2bu6(cv0@opwmafx5n#6=3d%x^hpl6'
# 关闭debug模式
DEBUG = False
# 设置ALLOWED_HOSTS,建议限制内网访问
ALLOWED_HOSTS = [
'.example.com', # Allow domain and subdomains
'.example.com.', # Also allow FQDN and subdomains
# 请求SQL大小限制,可按需修改,默认15M
DATA_UPLOAD_MAX_MEMORY_SIZE = 15728640
#MySQL配置
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'archery', #数据库名
'USER': 'root', #数据用户名
'PASSWORD': '', #数据库密码
'HOST': '127.0.0.1',
'PORT': '3306',
'OPTIONS': {
'init_command': "SET sql_mode='STRICT_TRANS_TABLES'",
'charset': 'utf8mb4'
},
'TEST': {
'NAME': 'test_archery',
'CHARSET': 'utf8mb4',
},
}
}
#Redis配置
CACHES = {
"default": {
"BACKEND": "django_redis.cache.RedisCache",
"LOCATION": "redis://127.0.0.1:6379/0",
"OPTIONS": {
"CLIENT_CLASS": "django_redis.client.DefaultClient",
"PASSWORD": "123456"
}
},
"dingding": {
"BACKEND": "django_redis.cache.RedisCache",
"LOCATION": "redis://127.0.0.1:6379/1",
"OPTIONS": {
"CLIENT_CLASS": "django_redis.client.DefaultClient",
"PASSWORD": ""
}
}
}
2、数据库初始化
# 创建 archery 数据库
create database archery default character set=utf8mb4;
cd /usr/local/Archery
python3.6 manage.py makemigrations sql
python3.6 manage.py migrate
python3.6 manage.py loaddata initial_data.json
python3.6 manage.py createsuperuser
此时会要求输入用户名密码,用于web页面登录
Username: admin
Email address: admin@WD.com
Password: adminpass
3、启动
source /usr/local/venv4archery/bin/activate
cd /usr/local/Archery/
功能测试:
python3.6 manage.py test -v 3
启动:
./startup.sh &
Web默认地址:http://127.0.0.1:9123
九、功能模块配置
1、goInception
(1)
2、SOAR
(1)SOAR
附、参考资料