Inception是集审核、执行、回滚于一体的一个SQL自动化运维系统,基于MySQL代码修改,官方文档地址:https://mysql-inception.github.io/inception-document/

一、Inception部署篇

官方部署说明:https://mysql-inception.github.io/inception-document/install/

我的环境:centos7.4

我的安装步骤:

1. 安装依赖

yum -y install gcc gcc-c++ make cmake openssl-devel ncurses-devel perl unzip m4 MySQL-python perl-ExtUtils-Embed perl-DBI perl-DBD-MySQL perl-Digest-MD5 perl-Data-Dumper

(Ubuntu下执行apt-get install cmake libncurses5-dev libssl-dev g++ m4,没有perl的话也要安装)

2. 安装bison,官方建议2.6版本之前

wget -c https://static.saintic.com/download/inception/bison-2.5.1.tar && tar xf bison-2.5.1.tar && cd bison-2.5.1 && ./configure && make && make install

3. 安装percona-toolkit,在线修改大表用的工具

wget -c https://static.saintic.com/download/inception/percona-toolkit-2.2.20.tar.gz && tar zxf percona-toolkit-2.2.20.tar.gz && cd percona-toolkit-2.2.20 && perl Makefile.PL && make install

4. 安装主程序inception

git clone https://github.com/mysql-inception/inception && cd inception

编译inception可以用官方的方法,sh inception_build.sh,也可以cmake编译,我这里用cmake演示(因为后面docker编译用cmake没有问题)。

cmake -DWITH_DEBUG=OFF -DCMAKE_INSTALL_PREFIX=/Inception -DMYSQL_DATADIR=/Inception/data -DWITH_SSL=bundled -DCMAKE_BUILD_TYPE=RELEASE -DWITH_ZLIB=bundled -DMY_MAINTAINER_CXX_WARNINGS="-Wall -Wextra -Wunused -Wno-dev -Wwrite-strings -Wno-strict-aliasing -Wno-unused-parameter -Woverloaded-virtual" -DMY_MAINTAINER_C_WARNINGS="-Wall -Wextra -Wno-dev -Wunused -Wwrite-strings -Wno-strict-aliasing -Wdeclaration-after-statement" && make && make install

注意红色部分,编译好的程序目录即可,可执行命令在这目录的bin下。

5. 启动

/Inception/bin/Inception --defaults-file=/etc/inception.cnf   #此配置文件参见底部附录

二、Docker镜像

上述过程已经被我打包成镜像,基于centos7.4,可以直接使用,镜像支持OSC,默认配置文件为官方推荐配置(参见底部附录),可以自定义挂载覆盖/etc/inception.cnf,默认了以下参数可以设置环境变量:

bind_address,默认127.0.0.1。
port,默认6669
inception_support_charset,字符集,默认utf8mb4
inception_remote_backup_host,远程备份服务器的地址
inception_remote_backup_port,远程备份服务器的端口
inception_remote_system_user,远程备份服务器的用户
inception_remote_system_password,远程备份服务器的密码
inception_osc_on, 是否开启osc,1是开启,0是关闭(默认)

1. 拉取镜像

docker pull registry.cn-beijing.aliyuncs.com/staugur/inception:v0.1

2. 运行镜像(可以跳过第一步,此处假定远程备份地址127.0.0.1,端口3306,账号root,密码123456)

docker run -tdi --name inception -e bind_address=0.0.0.0 -e port=6669 -e inception_remote_backup_host=127.0.0.1 -e inception_remote_backup_port=3306 -e inception_remote_system_user=root -e inception_remote_system_password=123456 --net=host registry.cn-beijing.aliyuncs.com/staugur/inception:v0.1

查看日志:docker logs inception

The inception listens for 0.0.0.0:6669

2018-07-19 03:40:15 0 [Note] Welcome to use Inception2.1.50

2018-07-19 03:40:15 6 [Note] Server hostname (bind-address): '0.0.0.0'; port: 6669

2018-07-19 03:40:15 6 [Note]   - '0.0.0.0' resolves to '0.0.0.0';

2018-07-19 03:40:15 6 [Note] Server socket created on IP: '0.0.0.0'.

三、访问

使用mysql命令即可,需要指定inception的ip地址和端口,如mysql -h127.0.0.1 -P6669
    登录成功界面如下图,此时执行 inception get variables; 命令可以获取系统参数。

四、附录

1. 配置文件/etc/inception.cnf

此配置文件基本是官方参数默认值,docker运行时可以使用 -v 你的配置文件:/etc/inception.cnf 覆盖它。

官方参数文档地址:https://mysql-inception.github.io/inception-document/variables/

配置文件内容如下($变量请在在docker运行时覆盖):

[inception]
general_log=1
general_log_file=/var/log/inception.log
#这个参数实际上就是MySQL数据库原来的参数,因为Incpetion没有权限验证过程,那么为了实现更安全的访问,可以给Inception服务器的这个参数设置某台机器(Inception上层的应用程序)不地址,这样
#其它非法程序是不可访问的,那么再加上Inception执行的选项中的用户名密码,对MySQL就更加安全
bind_address=$bind_address
port=$port
socket=/var/run/inception.socket
character-set-client-handshake=0
character-set-server=utf8 #备份相关
#需要开启binlog
inception_remote_system_password=$inception_remote_system_password
inception_remote_system_user=$inception_remote_system_user
inception_remote_backup_port=$inception_remote_backup_port
inception_remote_backup_host=$inception_remote_backup_host #在DML语句中没有WHERE条件时,是不是要报错
inception_check_dml_where=1
#在DML语句中使用了LIMIT时,是不是要报错
inception_check_dml_limit=1
#在DML语句中使用了Order By时,是不是要报错
inception_check_dml_orderby=1
#Select*时是不是要报错
inception_enable_select_star=1
#order by rand时是不是报错
inception_enable_orderby_rand=1
#创建或者新增列时如果列为NULL,是不是报错
inception_enable_nullable=1
#是不是支持外键
inception_enable_foreign_key=1
#一个索引中,列的最大个数,超过这个数目则报错(1-64)
inception_max_key_parts=5
#在一个修改语句中,预计影响的最大行数,超过这个数就报错(1-max)
inception_max_update_rows=10000
#一个表中,最大的索引数目,超过这个数则报错(1-1024)
inception_max_keys=16
#建表指定的存储引擎不为Innodb,不报错
inception_enable_not_innodb=0
#表示在建表或者建库时支持的字符集,如果需要多个,则用逗号分隔,影响的范围是建表、设置会话字符集、修改表字符集属性等
inception_support_charset=$inception_support_charset
#建表时,表没有注释时报错
inception_check_table_comment=1
#建表时,列没有注释时报错
inception_check_column_comment=1
#建表时,如果没有主键,则报错
inception_check_primary_key=1
#是不是支持分区表
inception_enable_partition_table=0
#是不是支持enum,set,bit数据类型
inception_enable_enum_set_bit=0
#是不是要检查索引名字前缀为"idx_",检查唯一索引前缀是不是"uniq_"
inception_check_index_prefix=1
#自增列是不是要为无符号型
inception_enable_autoincrement_unsigned=1
#当char类型的长度大于这个值时,就提示将其转换为VARCHAR(1-max)
inception_max_char_length=16
#当建表时自增列的值指定的不为1,则报错
inception_check_autoincrement_init_value=1
#当建表时自增列的类型不为int或者bigint时报错
inception_check_autoincrement_datatype=1
#建表时,如果没有为timestamp类型指定默认值,则报错
inception_check_timestamp_default=0
#允许列自己设置字符集
inception_enable_column_charset=0
#建表时,如果指定的自增列的名字不为ID,则报错,说明是有意义的,给提示
inception_check_autoincrement_name=1
#在多个改同一个表的语句出现时,报错,提示合成一个
inception_merge_alter_table=1
#检查在建表、修改列、新增列时,新的列属性是不是要有默认值
inception_check_column_default_value=1
#检查是不是支持BLOB字段,包括建表、修改列、新增列操作
inception_enable_blob_type=1
#检查在SQL语句中,是不是有标识符被写成MySQL的关键字,默认值为报警。
inception_enable_identifer_keyword=1
#这个参数的作用是为了匹配Python客户端每次自动设置auto_commit=0的,如果取消则会报错,针对Inception本身没有实际意义
#auto_commit=0 #打开与关闭Inception对SQL语句中各种名字的检查,如果设置为ON,则如果发现名字中存在除数字字母下划线之外的字符时,报Identifier "invalidname" is invalid, valid options: [a-z,A-Z,0-9,_].
inception_check_identifier=1 #开启对OSC的支持
inception_osc_on=$inception_osc_on
inception_osc_bin_dir=/usr/local/bin/pt-online-schema-change

Inception部署的更多相关文章

  1. 部署MySQL自动化运维工具inception+archer

    ***************************************************************************部署MySQL自动化运维工具inception+a ...

  2. MySQL自动化审核平台部署说明

    背景: 关于MySQL的审核的重要性就不说明了,本文的自动化审核是通过Inception和SQLAdvisor实现的,具体的使用可以看它们各自的说明文档.这里大致介绍下如何部署和使用它们,其实该文章也 ...

  3. 学习笔记TF022:产品环境模型部署、Docker镜像、Bazel工作区、导出模型、服务器、客户端

    产品环境模型部署,创建简单Web APP,用户上传图像,运行Inception模型,实现图像自动分类. 搭建TensorFlow服务开发环境.安装Docker,https://docs.docker. ...

  4. archer docker安装部署

    1.准备配置文件从archer项目官网下载/archer/settings.py文件,根据自己情况放到相应的目录我下载后放到如下目录[root@lenovo opt]# mkdir -p /opt/a ...

  5. 移动端目标识别(1)——使用TensorFlow Lite将tensorflow模型部署到移动端(ssd)之TensorFlow Lite简介

    平时工作就是做深度学习,但是深度学习没有落地就是比较虚,目前在移动端或嵌入式端应用的比较实际,也了解到目前主要有 caffe2,腾讯ncnn,tensorflow,因为工作用tensorflow比较多 ...

  6. MySQL SQL审核平台 inception+archer2.0(亲测)

    docker run -d --privileged -v `pwd`/archer_data:/data -p 9306:3306 --name archer --hostname archer - ...

  7. inception+archery SQL审核平台

    关闭防火墙和selinux 宿主机安装mysql,创建archery数据库,并给所有权限,允许远程连接到该数据库 grant all privileges on *.* to 'root'@'%' i ...

  8. 2 (自我拓展)部署花的识别模型(学习tensorflow实战google深度学习框架)

    kaggle竞赛的inception模型已经能够提取图像很好的特征,后续训练出一个针对当前图片数据的全连接层,进行花的识别和分类.这里见书即可,不再赘述. 书中使用google参加Kaggle竞赛的i ...

  9. Tensorflow Serving介绍及部署安装

    TensorFlow Serving 是一个用于机器学习模型 serving 的高性能开源库.它可以将训练好的机器学习模型部署到线上,使用 gRPC 作为接口接受外部调用.更加让人眼前一亮的是,它支持 ...

随机推荐

  1. 使用easyui搭建网页架子

    使用踩坑: 一.弹出框上datagrid第二次加载数据,必须在显示状态,datagrid加载数据才会渲染,否则是空白 $('#xq_selKs').window('open').window('cen ...

  2. mvc framework ui component understand.

    mvc: .htm是v,   context和contex中的contextNode 是m,  view controller, custom controller ,component contro ...

  3. Cocos Creator 构建发布... APP ABI(选项)

    APP ABI 选项对应的是设备的 CPU 架构.勾选不同的值,编译出来的 apk 可以适用于不同的设备.勾选的越多,适配的机器越多.但是相应的 apk 包体越大. 需要根据自己的项目实际情况决定要编 ...

  4. Cache Aside Pattern

    Cache Aside Pattern 即旁路缓存是缓存方案的经验实践,这个实践又分读实践,写实践 对于读请求 先读cache,再读db 如果,cache hit,则直接返回数据 如果,cache m ...

  5. 67.web--手机端兼容性问题

    H5页面窗口自动调整到设备宽度,并禁止用户缩放页面 <meta name="viewport" content="width=device-width,initia ...

  6. 个人作业4-Alpha阶段个人总结

    一.个人总结 在alpha 结束之后, 每位同学写一篇个人博客, 总结自己的alpha 过程: 请用自我评价表:http://www.cnblogs.com/xinz/p/3852177.html 有 ...

  7. Vuex 2.0 深入简出

    最近面试充斥了流行框架Vue的各种问题,其中Vuex的使用就相当有吸引力.下面我就将自己深入简出的心得记录如下: 1.在vue-init webpack project (创建vue项目) 2.src ...

  8. jquery autocomplete 设置滚动条

    加入样式 .ui-autocomplete{height:250px; overflow-y: scroll; overflow-x: hidden;}

  9. redis 列表(list)函数

    列表(list)函数 lPush 命令/方法/函数 Description Adds the string value to the head (left) of the list. Creates ...

  10. P1342 请柬

    最近一直在做最短路......所以今天就再做一道最短路吧.... 题目描述 在电视时代,没有多少人观看戏剧表演.Malidinesia古董喜剧演员意识到这一事实,他们想宣传剧院,尤其是古色古香的喜剧片 ...