mysql安装check requirements出错_介绍一个 MySQL 自动化运维利器-Inception

引子

最近打算做一个 MySQL 的数据库运维平台。这里面有一个非常重要的功能就是 SQL 的审核,如果完全靠人工去实现就没必要做成一个平台了。正没头绪如何去实现的时候,google 了一下,看下有没有现成的开源方案。果不其然,github 上发现一个『去哪儿网』开源的一个数据库运维工具 Inception, 它是一个集审核、执行、备份及生成回滚语句于一身的 MySQL 自动化运维工具。

Inception 介绍

Inception 的架构图如下图所示,简单来说,Inception 就是一个 MySQL 的代理,能够帮助你审核 SQL,执行 SQL,备份 SQL 影响的记录。Inception 是一个 C/S 的软件架构。我们可以通过原生的 MySQL 客户端 去连接,也可以通过远程的接口去连接,目前执行只支持通过C/C++接口、Python接口来对Inception访问。

f0b685dcaed5ecadf67580f57a39c058.png执行流程图如下:f0caa5af26fdfeeff72b66489afb0ba9.png

安装 Inception

我安装的环境

OS: Ubuntu 16.04.2 LTS

安装依赖

  • 下载 bison: 版本最好是2.6之前的(Ubuntu 16.04.2 LTS 版本下安装的是 bison-2.5.1),最新的可能会有问题,下载之后,需要自己编译源码来安装,具体安装方法,可以参数网上的一些说明。

  • cmake 安装:``apt-get install cmake`

  • ncurses 安装:apt-get install libncurses5-dev

  • 安装openssl:apt-get install libssl-dev

  • 安装 g++:sudo apt-get install g++

  • 安装 m4: apt-get install m4

编译安装 Inception

git clone https://github.com/mysql-inception/inception.git sh inception_build.sh debug [linux] (如果不指定就是linux平台,而如果要指定是Xcode,就后面指定Xcode) 复制代码

可执行文件在 debug/sql/Debug/ 目录下面(不同平台有可能不相同)。

启动 Inception

创建一个配置文件 inc.cnf, 里面主要是配置 Inception 启动的端口,SQL 审核的策略,备份数据库的配置等等,更多可参考官方文档。

[inception] general_log=1 general_log_file=inception.log port=6669 # Inception 的监听的端口 socket=/tmp/inc.socket character-set-client-handshake=0 character-set-server=utf8 inception_remote_system_password=root # 备份数据库密码 inception_remote_system_user=wzf1 # 备份数据库用户名 inception_remote_backup_port=3306 # 备份数据库端口 inception_remote_backup_host=127.0.0.1 # 备份数据库地址 inception_support_charset=utf8mb4 inception_enable_nullable=0 inception_check_primary_key=1 inception_check_column_comment=1 inception_check_table_comment=1 inception_osc_min_table_size=1 inception_osc_bin_dir=/data/temp inception_osc_chunk_time=0.1 inception_enable_blob_type=1 inception_check_column_default_value=1 复制代码

启动

./Inception --defaults-file=inc.cnf 复制代码

访问

  1. 通过原生的 MySQL 客户端的方式。主要注意的是,请不要将的 SQL 语句块,放到 MySQL 客户端中执行,因为这是一个自动化运维工具,如果使用交互式的命令行来使用的话没有意义,所有的 SQL 执行应该都通过接口的方式,这个方式仅仅可用来查看和设置上诉配置文件里的配置,如 inception get variables;可查看所有的变量,更多请参考官方文档。

mysql -uroot -h127.0.0.1 -P6669 复制代码
  1. 通过接口的方式。下面是官方示例中的 Python 代码,需要注意的是如果使用 Python3 的 pymsql 去连接会有异常,目前的解决方案是需要修改pymysql 的源码,具体 issue:

#!/usr/bin/python #-*-coding: utf-8-*- import MySQLdb sql='/*--user=username;--password=password;--host=127.0.0.1;--execute=1;--port=3306;*/ inception_magic_start; use mysql; CREATE TABLE adaptive_office(id int); inception_magic_commit;' try: conn=MySQLdb.connect(host='127.0.0.1',user='',passwd='',db='',port=9998) 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], "|
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值