中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

自動化運維工具inception+archer

發布時間:2020-08-09 18:58:26 來源:ITPUB博客 閱讀:592 作者:守望567 欄目:MySQL數據庫


#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 -h227.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
自動化運維工具inception+archer
這個界面已經好久不更新了,而且也只能做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'

  自動化運維工具inception+archer

配置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登錄界面:
自動化運維工具inception+archer

使用上面第5步創建的用戶名密碼(admin/和密碼)登錄:
自動化運維工具inception+archer

點擊右側Add用戶配置,用戶名密碼自定義,至少創建一個工程師和一個審核人(用admin用戶可以登錄)后續新的工程師和審核人用戶請用LDAP導入sql_users表或django admin增加

自動化運維工具inception+archer
配置主庫地址
通過瀏覽器訪問 http://192.168.1.123:9123/admin/sql/master_config
點擊右側Add master_config。這一步是為了告訴archer你要用inception去哪些mysql主庫里執行SQL,所用到的用戶名密碼、端口等。
自動化運維工具inception+archer
自動化運維工具inception+archer
正式訪問主頁
http://192.168.1.123:9123/login/

登陸成功后

自動化運維工具inception+archer

如果遇到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

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

抚松县| 彭阳县| 西城区| 榕江县| 吕梁市| 油尖旺区| 城口县| 高安市| 饶河县| 道孚县| 莲花县| 兴业县| 深泽县| 锡林郭勒盟| 胶州市| 宜章县| 西林县| 临高县| 当雄县| 洛隆县| 阳朔县| 建瓯市| 汶上县| 虹口区| 临江市| 耿马| 左贡县| 即墨市| 达拉特旗| 涞源县| 西乌| 萨嘎县| 利辛县| 安平县| 湟中县| 红安县| 北京市| 湛江市| 洛川县| 调兵山市| 正安县|