zoukankan      html  css  js  c++  java
  • Mysql Atlas 安装记录

    Atlas是360团队弄出来的一套基于MySQL-Proxy基础之上的代理,修改了MySQL-Proxy的一些BUG,并且优化了很多东西。
    Atlas官方链接: https://github.com/Qihoo360/Atlas/blob/master/README_ZH.md
    Atlas下载链接: https://github.com/Qihoo360/Atlas/releases

    依赖包安装
    ****************************************************************************************

    lua安装
    -------------------------------------------
    yum install -y libtermcap-devel ncurses-devel libevent-devel readline-devel
    tar -zxvf lua-5.1.5.tar.gz
    chown -R root.root *
    cd lua-5.1.5/

    修改当前目录下的“Makefile”中的 INSTALL_TOP= /usr/local为 INSTALL_TOP= /usr/local/lua
    主要是为了避免与系统自带的lua库发生冲突的可能
    vim Makefile
    INSTALL_TOP= /usr/local/lua
    make linux install


    glib-2.49安装
    ----------------------------------------
    rpm -q ncurses readline readline-devel lua libffi libffi-devel libiconv xz glib2 cmake popt libnl libevent libevent-devel openssl-devel libtermcap-devel ncurses-devel
    yum install -y libffi-devel libtermcap-devel
    http://www.rpmfind.net/linux/rpm2html/search.php?query=libevent-devel
    rpm -ivh libevent-devel-2.0.21-4.el7.x86_64.rpm

    libiconv依赖包
    tar xvzf libiconv-1.14.tar.gz
    chown -R root.root *
    cd libiconv-1.14
    cd srclib
    sed -i -e '/gets is a security/d' ./stdio.in.h
    cd ..
    注意不要建立独立目录,一定要安装在/usr/local目录下,不然安装glib时会报/usr/bin/ld: cannot find -liconv
    ./configure --prefix=/usr/local gl_cv_header_working_stdint_h=yes
    make
    make install


    pkg安装
    tar -zxvf pkg-config-0.29.2.tar.gz
    chown -R root.root *
    cd pkg-config-0.29.2/
    ./configure --enable-iconv=no --with-libiconv=gnu --with-internal-glib
    make
    make install

    ln -s /usr/local/lib/libiconv.so.2 /usr/lib/libiconv.so.2
    ln -s /usr/local/lib/libiconv.so.2 /usr/lib64/libiconv.so.2
    pkg-config --version
    0.29.2

    pcre安装
    tar -zxvf pcre-8.39.tar.gz
    chown -R root.root *
    cd pcre-8.39/
    ./configure --enable-utf8 --enable-unicode-properties
    make
    make install
    ln -s /usr/local/lib/libpcre.so.1 /lib
    ln -s /usr/local/lib/libpcreposix.so.0 /lib


    glib安装
    rpm -q libffi-devel
    xz -d glib-2.49.7.tar.xz
    chown -R root.root *
    tar -xvf glib-2.49.7.tar

    mkdir /usr/local/glib-2.49.7
    cd glib-2.49.7/
    ./configure --prefix=/usr/local/glib-2.49.7 --with-libiconv=gnu LIBFFI_CFLAGS="-I/usr/local/include" LIBFFI_LIBS="-L/usr/local/lib -lffi"
    make
    make install


    配置PKG-CONFIG
    # find /usr/ -name pkgconfig
    /usr/lib64/pkgconfig
    /usr/share/pkgconfig
    /usr/local/lib/pkgconfig
    /usr/local/lib64/pkgconfig
    /usr/local/mysql/lib/pkgconfig
    /usr/local/glib-2.49.7/lib/pkgconfig

    # cd /usr/local/glib-2.49.7/lib/pkgconfig
    # ls
    gio-2.0.pc gio-unix-2.0.pc glib-2.0.pc gmodule-2.0.pc gmodule-export-2.0.pc gmodule-no-export-2.0.pc gobject-2.0.pc gthread-2.0.pc

    vim .bash_profile
    export PKG_CONFIG_PATH=/usr/local/glib-2.49.7/lib/pkgconfig:/usr/lib64/pkgconfig:/usr/local/lib64/pkgconfig:/usr/local/mysql/lib/pkgconfig:$PKG_CONFIG_PATH
    . ./.bash_profile

    测试glib pkg
    vim hello.c
    #include <stdio.h>
    #include <glib.h>
    int main(int argc, char** argv){
    GList* list=NULL;
    list=g_list_append(list,"Hello world!");
    list=g_list_append(list,"made by pcat");
    list=g_list_append(list,"http://www.cnblogs.com/perfei/");
    printf("The first item is %s\n",g_list_first(list)->data);
    return 0;
    }

    编译如下:
    gcc hello.c -o hello $(pkg-config --cflags --libs glib-2.0)

    # ls -ltr | grep hello
    -rw-r--r-- 1 root root 305 11月 20 16:47 hello.c
    -rwxr-xr-x 1 root root 8648 11月 20 17:05 hello

    # ./hello
    The first item is Hello world!

    Atlas数据库中间件安装配置
    ****************************************************************************************

    安装
    --------------------------------------------------------------------------------------------
    tar -zxvf Atlas-2.2.1.tar.gz
    chown -R root.root *
    cd Atlas-2.2.1/
    mkdir /usr/local/mysql-proxy
    ./configure --prefix=/usr/local/mysql-proxy \
    --with-lua=/usr/local/lua \
    --with-mysql=/usr/local/mysql \
    GLIB_CFLAGS="-I/usr/local/glib-2.49.7/include/glib-2.0" \
    GLIB_LIBS="-L/usr/local/glib-2.49.7/lib/ -lglib-2.0" \
    GMODULE_CFLAGS="-I/usr/local/glib-2.49.7/include" \
    GMODULE_LIBS="-L/usr/local/glib-2.49.7/lib -lgmodule-2.0" \
    GTHREAD_CFLAGS="-I/usr/local/glib-2.49.7/include" \
    GTHREAD_LIBS="-L/usr/local/glib-2.49.7/lib -lgthread-2.0" \
    LUA_CFLAGS="-I/usr/local/lua/include" \
    LUA_LIBS="-L/usr/local/lua/lib -llua-5.1" \
    CFLAGS="-DHAVE_LUA_H -O2" \
    LDFLAGS="-L/usr/local/lib -L/usr/local/lib64 -lm -ldl -lcrypto"

    Atlas2.2.1 对应的是 mysql5.6 的版本,使用mysql5.7时需要进行以下调整
    共四处需要替换,详见错误信息
    vim src/network-mysqld-packet.c
    :%s/CLIENT_SECURE_CONNECTION/CLIENT_RESERVED2/g
    共一处需要替换,详见错误信息
    vim ./plugins/admin/admin-plugin.c
    :%s/CLIENT_SECURE_CONNECTION/CLIENT_RESERVED2/g

    make
    make如果报错处理,可进行以下处理
    ln -s /usr/local/glib-2.49.7/lib/glib-2.0/include/glibconfig.h /usr/local/glib-2.49.7/include/glib-2.0

    make install
    ----------------------------------------------------------------------
    Libraries have been installed in:
    /usr/local/mysql-proxy/lib/mysql-proxy/plugins

    If you ever happen to want to link against installed libraries
    in a given directory, LIBDIR, you must either use libtool, and
    specify the full pathname of the library, or use the `-LLIBDIR'
    flag during linking and do at least one of the following:
    - add LIBDIR to the `LD_LIBRARY_PATH' environment variableduring execution
    - add LIBDIR to the `LD_RUN_PATH' environment variableduring linking
    - use the `-Wl,-rpath -Wl,LIBDIR' linker flag
    - have your system administrator add LIBDIR to `/etc/ld.so.conf'

    See any operating system documentation about shared libraries for
    more information, such as the ld(1) and ld.so(8) manual pages.
    ----------------------------------------------------------------------

    cd /usr/local
    mv mysql-proxy atlas-2.2.1 && ln -s atlas-2.2.1 mysql-proxy

    配置文件
    --------------------------------------------------------------------------------------------
    /usr/local/mysql-proxy/bin/encrypt Admin_123
    ywy55weCQG6TZ6zxvGQr9A==
    /usr/local/mysql-proxy/bin/encrypt rootroot
    MdUKAaW7vcwa8s/oWZlMvQ==

    vim /usr/local/mysql-proxy/conf/atlas.cnf
    [mysql-proxy]
    admin-username = atlasadmin
    admin-password = Admin_123

    proxy-backend-addresses = 10.168.21.186:3306
    proxy-read-only-backend-addresses = 10.168.21.186:3306@1,10.168.21.187:3306@2,10.168.21.188:3306@2

    pwds = admin:ywy55weCQG6TZ6zxvGQr9A==,root:MdUKAaW7vcwa8s/oWZlMvQ==

    daemon = true
    keepalive = true
    event-threads = 16

    log-level = message
    log-path = /usr/local/mysql-proxy/log
    sql-log = ON

    proxy-address = 0.0.0.0:3309
    admin-address = 0.0.0.0:3307

    charset = utf8

    启动
    --------------------------------------------------------------------------------------------
    /usr/local/mysql-proxy/bin/mysql-proxyd atlas start
    OK: MySQL-Proxy of atlas is started

    # ps -ef | grep atlas
    root 26516 1 0 14:42 ? 00:00:00 /usr/local/mysql-proxy/bin/mysql-proxy --defaults-file=/usr/local/mysql-proxy/conf/atlas.cnf
    root 26517 26516 0 14:42 ? 00:00:00 /usr/local/mysql-proxy/bin/mysql-proxy --defaults-file=/usr/local/mysql-proxy/conf/atlas.cnf

    启动脚本
    # vim /etc/init.d/atlas

    #!/bin/sh
    #
    # mysql-proxy This script starts and stops the mysql-proxy daemon
    #
    # chkconfig: - 78 30
    # processname: mysql-proxy
    # description: mysql-proxy is a proxy daemon to mysql
    # config: /usr/local/mysql-proxy/conf/mysql-proxy.cnf
    # pidfile: /usr/local/mysql-proxy/log/mysql-proxy.pid
    #
    PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

    DAEMON="/usr/local/mysql-proxy/bin/mysql-proxy"
    CONFIGFILE="/usr/local/mysql-proxy/conf/atlas.cnf"
    PIDFILE="/usr/local/mysql-proxy/log/mysql-proxy.pid"
    LOCKFILE="/var/lock/subsys/mysql-proxy"
    PROG=`basename $DAEMON`

    RETVAL=0

    start() {
    echo -n $"Starting ${PROG}......"
    [ -x $DAEMON ] || exit 5
    [ -f $CONFIGFILE ] || exit 6
    ${DAEMON} --defaults-file=${CONFIGFILE} || echo -n "${PROG} already running"

    RETVAL=$?
    echo
    [[ $RETVAL -eq 0 ]] && touch $LOCKFILE

    return $RETVAL
    }

    stop() {
    echo -n $"Stopping ${PROG}......"
    if [[ `ps aux | grep bin/mysql-proxy | grep -v grep | wc -l` -gt 0 ]]; then
    kill -TERM `ps -A -oppid,pid,cmd | grep bin/mysql-proxy | grep -v grep | awk '{print $2}'`
    fi

    RETVAL=$?
    echo
    [[ $RETVAL -eq 0 ]] && rm -f $LOCKFILE $PIDFILE

    return $RETVAL
    }

    restart() {
    stop
    sleep 1
    start
    }

    case "$1" in
    start)
    start
    ;;

    stop)
    stop
    ;;

    restart)
    restart
    ;;

    condrestart)
    [[ -e $LOCKFILE ]] && restart
    ;;

    *)
    echo "Usage: $0 {start|stop|restart|condrestart}"
    RETVAL=1
    ;;
    esac

    exit $RETVAL

    chmod +x /etc/init.d/atlas
    chmod 0660 /usr/local/mysql-proxy/conf/atlas.cnf
    service atlas stop
    service atlas start


    # service atlas stop
    Stopping mysql-proxy......
    # service atlas start
    Unit atlas.service could not be found.
    Starting mysql-proxy......

    # /etc/init.d/atlas stop
    Stopping mysql-proxy......
    # /etc/init.d/atlas start
    Starting mysql-proxy......

    # ps -ef | grep atlas
    root 27560 1 0 14:49 ? 00:00:00 /usr/local/mysql-proxy/bin/mysql-proxy --defaults-file=/usr/local/mysql-proxy/conf/atlas.cnf
    root 27561 27560 0 14:49 ? 00:00:00 /usr/local/mysql-proxy/bin/mysql-proxy --defaults-file=/usr/local/mysql-proxy/conf/atlas.cnf
    root 27591 15666 0 14:49 pts/1 00:00:00 grep --color=auto atlas


    连接
    ------------------------------------------------------------------

    管理接口登录,即DBA数据库管理使用的接口
    # mysql -h127.0.0.1 -P3307 -uatlasadmin -pAdmin_123
    [oracle@12cgc oms]$ mysql -h10.168.21.187 -P3307 -uatlasadmin -pAdmin_123
    mysql: [Warning] Using a password on the command line interface can be insecure.
    Welcome to the MySQL monitor. Commands end with ; or \g.
    Your MySQL connection id is 1
    Server version: 5.0.99-agent-admin

    Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.

    Oracle is a registered trademark of Oracle Corporation and/or its
    affiliates. Other names may be trademarks of their respective
    owners.

    Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
    mysql> select * from help;
    +-------------------------------+---------------------------------------------------------+
    | command | description |
    +-------------------------------+---------------------------------------------------------+
    | SELECT * FROM help | shows this help |
    | SELECT * FROM backends | lists the backends and their state |
    | SET OFFLINE $backend_id | offline backend server, $backend_id is backend_ndx's id |
    | SET ONLINE $backend_id | online backend server, ... |
    | ADD MASTER $backend | example: "add master 127.0.0.1:3306", ... |
    | ADD SLAVE $backend | example: "add slave 127.0.0.1:3306", ... |
    | REMOVE BACKEND $backend_id | example: "remove backend 1", ... |
    | SELECT * FROM clients | lists the clients |
    | ADD CLIENT $client | example: "add client 192.168.1.2", ... |
    | REMOVE CLIENT $client | example: "remove client 192.168.1.2", ... |
    | SELECT * FROM pwds | lists the pwds |
    | ADD PWD $pwd | example: "add pwd user:raw_password", ... |
    | ADD ENPWD $pwd | example: "add enpwd user:encrypted_password", ... |
    | REMOVE PWD $pwd | example: "remove pwd user", ... |
    | SAVE CONFIG | save the backends to config file |
    | SELECT VERSION | display the version of Atlas |
    +----------------------------+---------------------------------------------------------+
    16 rows in set (0.00 sec)

    工作接口,即应用访问的接口
    # mysql -h10.168.21.187 -P3309 -uadmin -pAdmin_123

    [oracle@12cgc oms]$ mysql -h10.168.21.187 -P3309 -uadmin -pAdmin_123
    mysql: [Warning] Using a password on the command line interface can be insecure.
    Welcome to the MySQL monitor. Commands end with ; or \g.
    Your MySQL connection id is 1
    Server version: 5.0.81-log MySQL Community Server (GPL)

    Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.

    Oracle is a registered trademark of Oracle Corporation and/or its
    affiliates. Other names may be trademarks of their respective
    owners.

    Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

    mysql> show databases;
    +--------------------+
    | Database |
    +--------------------+
    | information_schema |
    | mysql |
    | performance_schema |
    | sys |
    +--------------------+
    4 rows in set (0.17 sec)

  • 相关阅读:
    AJAX从后台接收的字符串如何与前台字符串比较
    ojdbc6.jar导入maven依赖失败(亲测有效)
    IDEA怎样创建maven项目
    yum下载rpm包以及相关依赖包
    pip离线安装包
    Python的print的底层实现
    django查询集-17
    django的数据库操作-16
    django数据库迁移-15
    django定义模型类-14
  • 原文地址:https://www.cnblogs.com/automng/p/7930150.html
Copyright © 2011-2022 走看看