#yum install cmake bison  ncurses-devel gcc gcc-c++  openssl-devel
下载,解压   wget https://github.com/mysql-inception/inception/archive/master.zip
# mkdir /usr/local/inception   安装目录
# mkdir /inception
# mkdir {data,logs}
# cd inception-master

# cmake .

# cmake -DWITH_DEBUG=OFF -DCMAKE_INSTALL_PREFIX=/usr/local/inception  -DMYSQL_DATADIR=/data/inception -DWITH_SSL=yes -DCMAKE_BUILD_TYPE=RELEASE-DWITH_ZLIB=bundled-DMY_MAINTAINER_CXX_WARNINGS="-Wall -Wextra -Wunused -Wwrite-strings -Wno-strict-aliasing  -Wno-unused-parameter -Woverloaded-virtual" -DMY_MAINTAINER_C_WARNINGS="-Wall -Wextra -Wunused -Wwrite-strings -Wno-strict-aliasing -Wdeclaration-after-statement"

# make && make install

编辑配置文件(自己创建)
# vim /etc/inc.cnf
[inception]
general_log=1 #这个参数就是原生的MySQL的参数,用来记录在Inception服务上执行过哪些语句,用来定位一些问题等
general_log_file=/usr/local/inception/data/inception.log #设置general log写入的文件路径
port=6669   #Inception的服务端口
socket=/usr/local/inception/data/inc.socket #Inception的套接字文件存放位置
character-set-server=utf8 #mysql原生参数

#Inception 审核规则
inception_check_autoincrement_datatype=1 #当建表时自增列的类型不为int或者bigint时报错
inception_check_autoincrement_init_value=1 #当建表时自增列的值指定的不为1,则报错
inception_check_autoincrement_name=1 #建表时,如果指定的自增列的名字不为ID,则报错,说明是有意义的,给提示
inception_check_column_comment=1 #建表时,列没有注释时报错
inception_check_column_default_value=0 #检查在建表、修改列、新增列时,新的列属性是不是要有默认值
inception_check_dml_limit=1 #在DML语句中使用了LIMIT时,是不是要报错
inception_check_dml_orderby=1 #在DML语句中使用了Order By时,是不是要报错
inception_check_dml_where=1 #在DML语句中没有WHERE条件时,是不是要报错
inception_check_identifier=1 #打开与关闭Inception对SQL语句中各种名字的检查,如果设置为ON,则如果发现名字中存在除数字、字母、下划线之外的字符时,会报Identifier "invalidname" is invalid, valid options: [a-z,A-Z,0-9,_].
inception_check_index_prefix=1 #是不是要检查索引名字前缀为"idx_",检查唯一索引前缀是不是"uniq_"
inception_check_insert_field=1  #是不是要检查插入语句中的列链表的存在性
inception_check_primary_key=1 #建表时,如果没有主键,则报错
inception_check_table_comment=1 #建表时,表没有注释时报错
inception_check_timestamp_default=0 #建表时,如果没有为timestamp类型指定默认值,则报错
inception_enable_autoincrement_unsigned=1 #自增列是不是要为无符号型
inception_enable_blob_type=0 #检查是不是支持BLOB字段,包括建表、修改列、新增列操作 默认开启
inception_enable_column_charset=0 #允许列自己设置字符集
inception_enable_enum_set_bit=0 #是不是支持enum,set,bit数据类型
inception_enable_foreign_key=0 #是不是支持外键
inception_enable_identifer_keyword=0 #检查在SQL语句中,是不是有标识符被写成MySQL的关键字,默认值为报警。
inception_enable_not_innodb=0 #建表指定的存储引擎不为Innodb,不报错
inception_enable_nullable=0 #创建或者新增列时如果列为NULL,不报错
inception_enable_orderby_rand=0 #order by rand时是不是报错
inception_enable_partition_table=0 #是不是支持分区表
inception_enable_select_star=0 #Select*时是不是要报错
inception_enable_sql_statistic=1 #设置是不是支持统计Inception执行过的语句中,各种语句分别占多大比例,如果打开这个参数,则每次执行的情况都会在备份数据库实例中的inception库的statistic表中以一条记录存储这次操作的统计情况,每次操作对应一条记录,这条记录中含有的信息是各种类型的语句执行次数情况。
inception_max_char_length=16 #当char类型的长度大于这个值时,就提示将其转换为VARCHAR
inception_max_key_parts=5 #一个索引中,列的最大个数,超过这个数目则报错
inception_max_keys=16 #一个表中,最大的索引数目,超过这个数则报错
inception_max_update_rows=10000 #在一个修改语句中,预计影响的最大行数,超过这个数就报错
inception_merge_alter_table=1 #在多个改同一个表的语句出现是,报错,提示合成一个
 #inception 支持 OSC 参数
inception_osc_bin_dir=/user/bin #用于指定pt-online-schema-change脚本的位置,不可修改,在配置文件中设置
inception_osc_check_interval=5 #对应OSC参数--check-interval,意义是Sleep time between checks for --max-lag.
inception_osc_chunk_size=1000 #对应OSC参数--chunk-size
inception_osc_chunk_size_limit=4 #对应OSC参数--chunk-size-limit
inception_osc_chunk_time=0.1 #对应OSC参数--chunk-time
inception_osc_critical_thread_connected=1000 #对应参数--critical-load中的thread_connected部分
inception_osc_critical_thread_running=80 #对应参数--critical-load中的thread_running部分
inception_osc_drop_new_table=1 #对应参数--[no]drop-new-table
inception_osc_drop_old_table=1 #对应参数--[no]drop-old-table
inception_osc_max_lag=3 #对应参数--max-lag
inception_osc_max_thread_connected=1000 #对应参数--max-load中的thread_connected部分
inception_osc_max_thread_running=80 #对应参数--max-load中的thread_running部分
inception_osc_min_table_size=0 # 这个参数实际上是一个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'"来实现的
inception_osc_on=1 #一个全局的OSC开关,默认是打开的,如果想要关闭则设置为OFF,这样就会直接修改
inception_osc_print_none=1 #用来设置在Inception返回结果集中,对于原来OSC在执行过程的标准输出信息是不是要打印到结果集对应的错误信息列中,如果设置为1,就不打印,如果设置为0,就打印。而如果出现错误了,则都会打印
inception_osc_print_sql=1 #对应参数--print 
 #备份服务器信息,注意改成你的机器
inception_remote_system_password=123456
inception_remote_system_user=root
inception_remote_backup_port=3306
inception_remote_backup_host=192.168.99.205
inception_support_charset=utf8 #表示在建表或者建库时支持的字符集,如果需要多个,则用逗号分隔,影响的范围是建表、设置会话字符集、修改表字符集属性等

启动
# nohup /usr/local/inception/bin/Inception --defaults-file=/etc/inc.cnf  &  
# netstat -tulpn | grep 6669       //inception的默认端口是6669
# cd /usr/local/inception/bin/
# ./mysql -uroot -h127.0.0.1 -P6669  //联接inception,和mysql一样的方式
# inception get variables;    //查看inception的所有参数

目前inception支持python、c、c++接口。
# vim aaa.py   
#!/usr/bin/python
#-*- coding: utf-8 -*-
import MySQLdb
sql='/*--user=user;--password=pass;--host=x.x.x.x;--port=3306;--execute=1;*/\            #这里的都是你的mysql的地址和用户
inception_magic_start;\
use optest;\
CREATE TABLE xxx(id int unsigned not null auto_increment comment "aaaa",username varchar(10) not null default 0 comment "xxx",primary key(id))engine = innodb  charset=utf8 comment "dddd";\
inception_magic_commit;'
#insert into adaptive_office(username) values("ASD"),("ZXC"),("EST");
try:
    conn=MySQLdb.connect(host='127.0.0.1',user='admin',passwd='123456',db='',port=6669)           #这里的是备份数据库的的(我的inception和mysql安装在一个机器上了)
    cursor=conn.cursor()
    cursor.execute(sql)
    results = cursor.fetchall()
    column_name_max_size=max(len(i[0]) for i in cursor.description)
    row_num=0
    for result in results:
        row_num=row_num+1
        print '*'.ljust(27,'*'),row_num,'.row', '*'.ljust(27,'*')
        row = map(lambda x, y: (x,y), (i[0] for i in cursor.description), result)
        for each_column in row:
            if each_column[0] != 'errormessage':
                print each_column[0].rjust(column_name_max_size),":",each_column[1]
            else:
                print each_column[0].rjust(column_name_max_size),':',each_column[1].replace('\n','\n'.ljust(column_name_max_size+4))
    cursor.close()
    conn.close()
except MySQLdb.Error,e:
     print "Mysql Error %d: %s" % (e.args[0], e.args[1])

************************** INCEPTION_WEB ***************************
升级python到2.7
# wget https://www.python.org/ftp/python/2.7.10/Python-2.7.10.tgz --no-check-certificate
# tar -xvf Python-2.7.10.tar
# cd Python-2.7.10
# ./configure && make && make install
# /usr/local/bin/python -V
# mv /usr/bin/python /usr/bin/python2.6.6
# ln -s /usr/local/bin/python /usr/bin/python
# python -V //验证版本
# vim /usr/bin/yum    
修改#!/usr/bin/python 为#!/usr/bin/python2.6.6,因为yum安装依赖的是2.6版本的python

安装模块
# yum -y install python-pip      //这种安装处理是2.6版本的
# wget  https://bootstrap.pypa.io/ez_setup.py  --no-check-certificate    //下载一个ez_setup 安装pip2.7版本的
# python2.7   ez_setup.py
# easy_install-2.7   pip
# pip2.7 install   MySQL-python
# yum install mysql-devel        //如果报错看看是不是缺失mysql-devel包。在重新装MySQL-python
# pip2.7 install flask_wtf
# pip2.7  install flask-script
# pip2.7 install flask-debugtoolbar

安装
# unzip inception_web-master.zip
# cd inception_web-master/app
# vim inception.py //修改配置文件,注意下边的配置的主机和密码。
#coding=utf-8
import MySQLdb
def table_structure(mysql_structure):
    sql1='/*--user=root;--password=123456;--host=127.0.0.1;--execute=1;--port=3306;*/\            #####实际数据库的
            inception_magic_start;\
            use mysql;'
    sql2='inception_magic_commit;'
    sql = sql1 + mysql_structure + sql2
    try:
        conn=MySQLdb.connect(host='127.0.0.1',user='root',passwd='',db='',port=6669,use_unicode=True, charset="utf8")         ####备份数据库的
        cur=conn.cursor()
        ret=cur.execute(sql)
        result=cur.fetchall()
        num_fields = len(cur.description)
        field_names = [i[0] for i in cur.description]
        print field_names
        for row in result:
            print row[0], "|",row[1],"|",row[2],"|",row[3],"|",row[4],"|",row[5],"|",row[6],"|",row[7],"|",row[8],"|",row[9],"|",row[10]
        cur.close()
        conn.close()
    except MySQLdb.Error,e:
        print "Mysql Error %d: %s" % (e.args[0], e.args[1])
    return result[1][4].split("\n")

启动
 ./run.py runserver --host 0.0.0.0  &

输入ip:5000

这个界面已经好久不更新了,而且也只能做sql审核,不能做别的。

***************************************************************archer安装部署*****************************************************

版本

python:3.4

django:1.8

mysql : 5.6以上

linux : 64位linux

# mkdir /op/archer_web/

# cd /opt/archer_web

# git clone https://github.com/jly8866/archer.git

安装python3

# cd /opt

# wget https://www.python.org/ftp/python/3.4.1/Python-3.4.1.tgz

# tar -zxvf Python-3.4.1.tgz

# cd Python-3.4.1

# ./configure --prefix=/opt/python3 && make && make install

# vim /etc/profile

添加:export  PATH="/opt/python3/bin:$PATH"

# source /etc/profile

# python3

安装setuptools

# wget --no-check-certificate  https://pypi.python.org/packages/source/s/setuptools/setuptools-19.6.tar.gz#md5=c607dd118eae682c44ed146367a17e26

# tar -zxvf setuptools-19.6.tar.gz

# cd setuptools-19.6

# python3 setup.py build

# python3 setup.py install

可以看到安装到python3下面了

安装pip

# wget --no-check-certificate  https://pypi.python.org/packages/source/p/pip/pip-8.0.2.tar.gz#md5=3a73c4188f8dbad6a1e6f6d44d117eeb

# tar -zxvf pip-8.0.2.tar.gz

# cd pip-8.0.2

# python3 setup.py build

# python3 setup.py install

安装Django

# wget https://pypi.python.org/packages/44/41/bf93934082e9897a56a591a67bacbd9fb74e71244f3f42253432a9e627e6/Django-1.8.17.tar.gz#md5=e76842cdfbcb31286bd44f51e087a04c

# tar -zxvf Django-1.8.17.tar.gz

# cd Django-1.8.17

# python3 setup.py install

# python3

Python 3.4.1 (default, Apr 15 2017, 14:11:11)

[GCC 4.4.7 20120313 (Red Hat 4.4.7-18)] on linux

Type "help", "copyright", "credits" or "license" for more information.

>>> django.VERSION

(1, 8, 17, 'final', 0)

>>> exit()

安装Crypto和pymysql

# pip3 install Crypto

# pip3 install pycrypto

# pip3 install pymysql

这里遇到了错误

# pip3 install Crypto

-bash: ./pip3: /usr/bin/python3: bad interpreter: No such file or directory

解决方法:

python3.4 -m pip install Crypto

或者

vim /opt/python3/bin/pip3

将#!/usr/bin/python3改为#!/opt/python3/bin/python3.4

# vim /opt/python3/lib/python3.4/site-packages/pymysql/connections.py

在if int(self.server_version.split(‘.’, 1)[0]) >= 5: 这一行之前加上以下这一句并保存,记得别用tab键用4个空格缩进:

self.server_version = '5.6.24-72.2-log'

配置archer

1、

# cd /opt/archef_web/archer

# ls

archer  debug.bat  debug.sh  docs  LICENSE  manage.py  nohup.out  README.md  requirements.txt  screenshots  sql  startup.sh  stop.sh

# pip3 install -r requirements.txt

2、创建archer DB和inception DB

进入安装的mysql5.6

create database archer default character set utf8;

grant all on archer.* to archer_rw@'%' identified by 'xxx';

create database inception_db default character set utf8;

grant all on inception_db.* to incep_rw@'%' identified by 'xxx';

flush privileges;

3、修改/opt/archef_web/archer/archer/settings.py,如下内容:

#该项目本身的mysql数据库地址

DATABASES = {

'default': {

'ENGINE': 'django.db.backends.mysql',

'NAME': 'archer',

'USER': 'archer_rw',

'PASSWORD': 'xxx',

'HOST': '192.168.1.3',

'PORT': '3306'

}

}

#inception组件所在的地址

INCEPTION_HOST = '192.168.1.123'

INCEPTION_PORT = '6669'

#查看回滚SQL时候会用到,这里要告诉archer去哪个mysql里读取inception备份的回滚信息和SQL.

#注意这里要和inception组件的inception.conf里的inception_remote_XX部分保持一致.

INCEPTION_REMOTE_BACKUP_HOST='192.168.1.3'

INCEPTION_REMOTE_BACKUP_PORT=3306

INCEPTION_REMOTE_BACKUP_USER='admin'

INCEPTION_REMOTE_BACKUP_PASSWORD='XXX'      这个用户就是在部署inception使用的用户。(这用户应该是和上面创建的incep_rw是一个用户,可以不用创建incep_rw)

4、通过model创建archer本身的数据库表

# cd /opt/archef_web/archer

# python3 manage.py makemigrations 或者 python3 manage.py makemigrations sql

Migrations for 'sql':

0001_initial.py:

- Create model users

- Create model master_config

- Create model workflow

# python3 manage.py migrate

Operations to perform:

Synchronize unmigrated apps: messages, staticfiles

Apply all migrations: sessions, auth, contenttypes, sql, admin

Synchronizing apps without migrations:

Creating tables...

Running deferred SQL...

Installing custom SQL...

Running migrations:

Rendering model states... DONE

Applying contenttypes.0001_initial... OK

Applying contenttypes.0002_remove_content_type_name... OK

Applying auth.0001_initial... OK

Applying auth.0002_alter_permission_name_max_length... OK

Applying auth.0003_alter_user_email_max_length... OK

Applying auth.0004_alter_user_username_opts... OK

Applying auth.0005_alter_user_last_login_null... OK

Applying auth.0006_require_contenttypes_0002... OK

Applying sql.0001_initial... OK

Applying admin.0001_initial... OK

Applying sessions.0001_initial... OK

进入数据库查看archer库下的表是否存在

5、创建django admin管理员

# python3 manage.py createsuperuser

Username: admin   自己填写用户名

Email address:     邮箱

Password:          密码

Password (again): 确认密码

Superuser created successfully.

该用户可以登录django admin来管理model。

6、启动acher

# vi debug.sh

#!/bin/bash

python3 manage.py runserver 0.0.0.0:9123    端口为9123

#sh debug.sh 或者 nohup sh debug.sh 2&>1 &

Performing system checks...

System check identified no issues (0 silenced).

April 15, 2017 - 16:39:11

Django version 1.8.17, using settings 'archer.settings'

Starting development server at http://0.0.0.0:9123/

Quit the server with CONTROL-C.

创建 archer 系统登录用户

通过浏览器访问 http://archer部署机器的ip:9123/admin/sql/users/        
可以看到django登录界面:

使用上面第5步创建的用户名密码(admin/和密码)登录:

点击右侧Add用户配置,用户名密码自定义,至少创建一个工程师和一个审核人(用admin用户可以登录)后续新的工程师和审核人用户请用LDAP导入sql_users表或django admin增加


配置主库地址
通过浏览器访问 http://192.168.1.123:9123/admin/sql/master_config
点击右侧Add master_config。这一步是为了告诉archer你要用inception去哪些mysql主库里执行SQL,所用到的用户名密码、端口等。


正式访问主页
http://192.168.1.123:9123/login/

登陆成功后

如果遇到rollback的问题,就是给权限的问题,inception配置的连接的数据库的用户的权限,在

grant select,create,insert on *.* to incep_rw@'%' identified by 'XXX';

也就是我配置的admin的用户。

inception源码地址:https://github.com/mysql-inception/inception
archer 源码地址:https://github.com/jly8866/archer

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26909803/viewspace-2147566/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/26909803/viewspace-2147566/

自动化运维工具inception+archer相关推荐

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

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

  2. archer mysql源码_自动化运维工具inception+archer

    #yum install cmake bison  ncurses-devel gcc gcc-c++  openssl-devel 下载,解压   wget https://github.com/m ...

  3. mysql 自动化运维工具_MySQL使用工具Inception实现自动化运维

    MySQL使用工具Inception实现自动化运维 发布时间:2020-05-27 17:11:14 来源:51CTO 阅读:180 作者:三月 下面一起来了解下MySQL使用工具Inception实 ...

  4. 自动化运维工具Ansible

    ansible简介: ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet.cfengine.chef.func.fabric)的优点,实现了批量系统配置.批 ...

  5. 自动化运维工具----ansible

    自动化运维工具----ansible ansible是新出现的运维工具是基于Python研发的糅合了众多老牌运维工具的优点实现了批量操作系统配置.批量程序的部署.批量运行命令等功能. 主要模块以及功能 ...

  6. 简单介绍自动化运维工具clip

    Clip是一款自动化运维工具,适用于海量服务器的管理场景,可以降低系统误操作风险,提高工作效率等.Clip将传统的IP管理纬度替换为String管理纬度,管理方式的改变使海量运维时更加的便捷.可靠与高 ...

  7. 轻量级自动化运维工具Fabric的安装与实践

    一.背景环境 在运维工作中,经常会遇到重复性的劳动,这个时候为了效率就必须要使用自动化运维工具. 这里我给大家介绍轻量级自动化运维工具Fabric,Fabric是基于Python语言开发的,是开发同事 ...

  8. 自动化运维工具Puppet(管理资源)

    接上文<自动化运维工具Puppet>http://kaliarch.blog.51cto.com/8966921/1973736 利用模块与模版管理agent端资源 一.模块管理 环境安装 ...

  9. python开发web运维工具_【实战小项目】python开发自动化运维工具--批量操作主机...

    有很多开源自动化运维工具都很好用如ansible/salt stack等,完全不用重复造轮子.只不过,很多运维同学学习Python之后,苦于没小项目训练,本篇演示用Python写一个批量操作主机的工具 ...

  10. 自动化运维工具Ansible详细部署

    一.基础介绍 ================================================================================= 1.简介 ansibl ...

最新文章

  1. 引争议!硕导提议高校教师应多配偶,这样就能多生娃!高校的处理通报来了...
  2. 在线作图丨数据降维方法⑥——消除趋势对应分析(Detrended correspondence analysis, DCA)
  3. 如何获取iOS设备的IP地址
  4. 【Spring注解系列04】@Condition条件注解
  5. JSON.stringify() / JSON.parse()
  6. mysql封装执行_解决Mysql封装类执行报错——Mysql::insert() should not be called
  7. 开启sql server2008的1433端口
  8. 中班音乐计算机反思,中班音乐教学反思
  9. 获得对摄像头的访问权
  10. debian6安装后中文乱码
  11. 信号与系统(一) 能量信号和功率信号
  12. NOIp2017 题解
  13. Excel内容自动翻译
  14. 备份VMWare ESXi虚拟机
  15. Android 按钮实现按压水波纹效果
  16. Win7笔记本如何调整屏幕亮度
  17. 基于采样的规划算法之RRT家族(三):RRT*
  18. 计算机测试是指,考驾照电脑测试是什么
  19. 两个向量构成的平行四边形面积的求解 ————简单技巧
  20. c++ sort函数排序---vector

热门文章

  1. 高等代数_证明_对称矩阵属于不同特征值的特征向量正交
  2. 光伏电站清扫机器人_光伏电站清扫机器人_雷曼科林
  3. 为什么软件系统开发公司不会同意技术入股
  4. 2022年--读书笔记
  5. SQL中的DDL、DML、DCL、TCL是什么意思
  6. C/C++类型到Ada
  7. ch340g电路图5v和3.3v供电电路
  8. 天铁托甲catarinite
  9. 雨落无声-开博啦........
  10. 微信小程序开发——调用免费天气api接口(高德、天气API)