源码编译altas mysql_使用mysql5.7.16头文件库文件编译安装atlas

本文档详细介绍了如何在已升级到 MySQL 5.7.16 的环境中,重新编译 Atlas 中间件。首先,由于 CentOS 6.6 自带的 glib 版本过低,需要升级到 2.34.3。接着,编译安装 pcre 8.35 和 Atlas。在编译 Atlas 过程中遇到了‘CLIENT_SECURE_CONNECTION’未声明的错误,原因是 MySQL 5.7.16 头文件中的变量名变化,需要修改 Atlas 源码。通过替换源码中的 CLIENT_SECURE_CONNECTION 为 CLIENT_RESERVED2,解决了编译问题。最后,导入 MySQL 5.7.16 的库文件,并启动 Atlas。
摘要由CSDN通过智能技术生成

最近mysql数据库升级到5.7.16,而中间件atlas之前是基于mysql5.6编译的,打算重新编译下atlas并使用mysql5.7.16的库文件头文件。这里主要介绍下编译过程遇到问题及解决方法。

由于需要glib版本要大于2.32以上,centos6.6系统自带的glib版本为2.28,因此需要重新编译安装2.32以上的glib,这里安装2.34版本的glib需要依赖pcre大于8.31

一、编译安装pcre8.35

# ./configure --prefix=/usr/local/pcre

# make

# make install

二、编译安装glib-2.34.3.tar.xz

# ./configure --prefix=/usr/local/glib --with-pcre=/usr/local/pcre/

# make

# make install

三、编译安装Atlas-2.2.1.tar.gz

1.解决依赖关系

# yum install libffi-devel lua-devel libevent libevent-devel jemalloc jemalloc-devel openssl-devel

2.修改源码中mysql版本代码,这里mysql版本为5.7.16

找到plugins/proxy/proxy-plugin.c文件

修改1974行:challenge->server_version_str = g_strdup("5.0.81-log");

为:challenge->server_version_str = g_strdup("5.7.16-log");

修改1974行:challenge->server_version = 50081;

为:challenge->server_version = 50716;

3.安装atlas

修改bootstrap.sh#!/bin/sh

base=$(cd "$(dirname "$0")"; pwd)

cd $base

PKG_CONFIG_PATH=/usr/local/glib/lib/pkgconfig ./configure --with-mysql=/usr/local/mysql5.7.16/bin/mysql_config --prefix=/usr/local/mysql-proxy CFLAGS="-DHAVE_LUA_H -O2" CPPFLAGS="-I/usr/local/mysql5.7.16/include/" LDFLAGS="-lm -ldl -lcrypto -ljemalloc" LUA_CFLAGS="-I/usr/include/" LUA_LIBS="-L/usr/lib64 -llua"

执行

# ./bootstrap.sh

# make && make install

4.执行make时会报错:

错误1:

libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I.. -I/usr/local/mysql5.7/include -I/usr/local/glib/include/glib-2.0 -I/usr/local/glib/lib/glib-2.0/include -pthread -I/usr/local/glib/include/glib-2.0 -I/usr/local/glib/lib/glib-2.0/include -g -O2 -MT libmysql_proxy_la-network-mysqld-packet.lo -MD -MP -MF .deps/libmysql_proxy_la-network-mysqld-packet.Tpo -c network-mysqld-packet.c  -fPIC -DPIC -o .libs/libmysql_proxy_la-network-mysqld-packet.o

network-mysqld-packet.c: In function ‘network_mysqld_auth_challenge_new’:

network-mysqld-packet.c:1147: error: ‘CLIENT_SECURE_CONNECTION’ undeclared (first use in this function)

network-mysqld-packet.c:1147: error: (Each undeclared identifier is reported only once

network-mysqld-packet.c:1147: error: for each function it appears in.)

network-mysqld-packet.c: In function ‘network_mysqld_proto_get_auth_challeng

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值