• 自动化部署MySQL 5.6 步骤 制作到ftp共享,永远使用


    首先需要搭建ftpserver

    yum install vsftpd
     
    service vsftpd start
    

    这样ftp服务就起来了,这里只是简单的使用,所以没有使用配置文件。这样我们只要将需要的文件置于/var/ftp/pub/文件夹下,匿名用户就可以copy文件到本机了。

    安装rpm-build

    build需要用到rpm-build,这里简单安装即可

    yum install rpm-build
    

    下面开始rpm打包

    mget http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.21.tar.gz
    cd /u01/mysql-5.6.21
    mkdir rpm
    cd rpm
     
    
    

    修改mysql.spec

    Name: mysql-rpm
    Version:5.6.21
    Release: renfengjun
    License: GPL
    URL: http://dev.mysql.com/
    Group: applications/database
    BuildRoot:%{_tmppath}/%{name}-%{version}-%{release}-root
    BuildRequires: cmake
    Packager: dexter.ren.jl@gmail.com
    Autoreq: no
    prefix: /u01/mysql
    Summary: mysql-5.6.21.tar.gz
     
    %description
    The MySQL(TM) software delivers a very fast,multi-threaded, multi-user,
    and robust SQL (Structured Query Language)database server. MySQL Server
    is intended for mission-critical, heavy-loadproduction systems as well
    as for embedding into mass-deployed software.
     
    %define MYSQL_USER mysql
    %define MYSQL_GROUP mysql
    %define __os_install_post %{nil}
     
    %build
    cd $OLDPWD/../
    CFLAGS="-O3 -g -fno-exceptions-static-libgcc -fno-omit-frame-pointer -fno-strict-aliasing"
    CXX=g++
    CXXFLAGS="-O3 -g -fno-exceptions -fno-rtti-static-libgcc -fno-omit-frame-pointer -fno-strict-aliasing"
    export CFLAGS CXX CXXFLAGS
     
    cmake .                                                 
     -DSYSCONFDIR:PATH=%{prefix}                            
     -DCMAKE_INSTALL_PREFIX:PATH=%{prefix}                  
     -DCMAKE_BUILD_TYPE:STRING=Release                      
     -DENABLE_PROFILING:BOOL=ON                             
     -DWITH_DEBUG:BOOL=OFF                                  
     -DWITH_VALGRIND:BOOL=OFF                               
      -DENABLE_DEBUG_SYNC:BOOL=OFF                           
     -DWITH_EXTRA_CHARSETS:STRING=all                       
     -DWITH_SSL:STRING=bundled                              
     -DWITH_UNIT_TESTS:BOOL=OFF                             
     -DWITH_ZLIB:STRING=bundled                             
     -DWITH_PARTITION_STORAGE_ENGINE:BOOL=ON                
     -DWITH_INNOBASE_STORAGE_ENGINE:BOOL=ON                 
     -DWITH_ARCHIVE_STORAGE_ENGINE:BOOL=ON                  
     -DWITH_BLACKHOLE_STORAGE_ENGINE:BOOL=ON                
     -DWITH_PERFSCHEMA_STORAGE_ENGINE:BOOL=ON               
     -DDEFAULT_CHARSET=utf8                                 
     -DDEFAULT_COLLATION=utf8_general_ci                    
     -DWITH_EXTRA_CHARSETS=all                             
     -DENABLED_LOCAL_INFILE:BOOL=ON                         
     -DWITH_EMBEDDED_SERVER=0                               
     -DINSTALL_LAYOUT:STRING=STANDALONE                     
     -DCOMMUNITY_BUILD:BOOL=ON                              
      -DMYSQL_SERVER_SUFFIX='-r5436';
     
    make -j `cat /proc/cpuinfo | grep processor| wc-l`
     
    %install
    cd $OLDPWD/../
    make DESTDIR=$RPM_BUILD_ROOT install
     
    %clean
    rm -rf $RPM_BUILD_ROOT
     
    %files
    %defattr(-, %{MYSQL_USER}, %{MYSQL_GROUP})
    %attr(755, %{MYSQL_USER}, %{MYSQL_GROUP})%{prefix}/*
     
    %pre
    mkdir -p /u01/mysql/data
    mkdir -p /u01/mysql/run
    mkdir -p /u01/mysql/log
    groupadd mysql
    useradd -g mysql mysql
    chown -R mysql:mysql /u01/mysql/data
    chown -R mysql:mysql /u01/mysql/log
    chown -R mysql:mysql /u01/mysql/run
    echo "exportPATH=$PATH:/u01/mysql/bin" >> /home/mysql/.bash_profile
     
    %post
    ln -s %{prefix}/lib %{prefix}/lib64
    cp /u01/mysql/support-files/mysql.server/etc/init.d/mysql
    chkconfig mysql on
     
     
    %preun
    chkconfig --del mysql
    rm -rf /u01
    userdel mysql
    rm -rf /var/spool/mail/mysql
    rm -rf /etc/init.d/mysql
    rm -rf /home/mysql
     
    %changelog
     

    执行打包命令

    rpmbuild -bb ./mysql.spec

    输出:

    Requires(pre): /bin/sh
    Requires(post): /bin/sh
    Requires(preun): /bin/sh
    Checking for unpackaged file(s):/usr/lib/rpm/check-files /var/tmp/mysql-rpm-5.6.21-renfengjun-root
    warning: Could not canonicalize hostname:centos511
    Wrote:/usr/src/redhat/RPMS/x86_64/mysql-rpm-5.6.21-renfengjun.x86_64.rpm
    Executing(%clean): /bin/sh -e /var/tmp/rpm-tmp.62530
    + umask 022
    + cd /usr/src/redhat/BUILD
    + rm -rf/var/tmp/mysql-rpm-5.6.21-renfengjun-root
    + exit 0

    生成的rpm包在这里:

    /usr/src/redhat/RPMS/x86_64/mysql-rpm-5.6.21-renfengjun.x86_64.rpm

    打包数据模板

    打包的时候记得关闭mysql。这里写了一点测试数据:

    mysql> select * from dexdb.t ;
    +------+------------+
    | id   |name       |
    +------+------------+
    |    1 |renfengjun |
    +------+------------+
    1 row in set (0.00 sec)

    数据模板打包,记得ibdata1打包上

    cd /u01/mysql/data

    tar cf data.tar ibdata1 mysql/ dexdb/performance_schema/ test/

    修改my.cnf

    my.cnf文件内容:

    [mysqld_safe]
    pid-file=/u01/mysql/run/mysqld.pid
    #malloc-lib=/u01/mysql/lib/libjemalloc.so
     
    [mysql]
    port=3306
    prompt=\u@\d \r:\m:\s>
    default-character-set=gbk
    no-auto-rehash
     
    [client]
    port=3306
    socket=/u01/mysql/run/mysql.sock
     
    [mysqld]
    #dir
    basedir=/u01/mysql
    datadir=/u01/mysql/data
    tmpdir=/tmp
    lc_messages_dir=/u01/mysql/share
    log-error=/u01/mysql/log/alert.log
    slow_query_log_file=/u01/mysql/log/slow.log
    general_log_file=/u01/mysql/log/general.log
    socket=/u01/mysql/run/mysql.sock
     
    #innodb
    innodb_data_home_dir=/u01/mysql/data
    innodb_log_group_home_dir=/u01/mysql/data
    innodb_data_file_path=ibdata1:12M
    innodb_buffer_pool_size=10G
    innodb_buffer_pool_instances=4
    innodb_log_files_in_group=2
    innodb_log_file_size=1G
    innodb_log_buffer_size=200M
    innodb_flush_log_at_trx_commit=1
    innodb_additional_mem_pool_size=20M
    innodb_max_dirty_pages_pct=60
    innodb_io_capacity=1000
    innodb_thread_concurrency=16
    innodb_read_io_threads=8
    innodb_write_io_threads=8
    innodb_open_files=60000
    innodb_file_format=Barracuda
    innodb_file_per_table=1
    innodb_flush_method=O_DIRECT
    innodb_change_buffering=inserts
    innodb_adaptive_flushing=1
    innodb_old_blocks_time=1000
    innodb_stats_on_metadata=0
    innodb_read_ahead=0
    innodb_use_native_aio=0
    innodb_lock_wait_timeout=5
    innodb_rollback_on_timeout=0
    innodb_purge_threads=1
    innodb_strict_mode=1
    transaction-isolation=READ-COMMITTED
     
    #myisam
    key_buffer=64M
    myisam_sort_buffer_size=64M
    concurrent_insert=2
    delayed_insert_timeout=300
     
    #replication
    master-info-file=/u01/mysql/log/master.info
    relay-log=/u01/mysql/log/relaylog
    relay_log_info_file=/u01/mysql/log/relay-log.info
    relay-log-index=/u01/mysql/log/mysqld-relay-bin.index
    slave_load_tmpdir=/u01/mysql/tmp
    slave_type_conversions="ALL_NON_LOSSY"
    slave_net_timeout=4
    skip-slave-start
    sync_master_info=1000
    sync_relay_log_info=1000
     
    #binlog
    log-bin=/u01/mysql/log/mysql-bin
    #server_id=2552763370
    binlog_cache_size=32K
    max_binlog_cache_size=2G
    max_binlog_size=500M
    binlog-format=ROW
    sync_binlog=1000
    log-slave-updates=1
    expire_logs_days=0
     
    #server
    default-storage-engine=INNODB
    character-set-server=gbk
    lower_case_table_names=1
    skip-external-locking
    open_files_limit=65536
    safe-user-create
    local-infile=1
    #sqlmod="STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE"
    performance_schema=0
     
    log_slow_admin_statements=1
    log_warnings=1
    long_query_time=1
    slow_query_log=1
    general_log=0
     
    query_cache_type=0
    query_cache_limit=1M
    query_cache_min_res_unit=1K
     
    table_definition_cache=65536
    #table_cache=65536
     
    thread_stack=512K
    thread_cache_size=256
    read_rnd_buffer_size=128K
    sort_buffer_size=256K
    join_buffer_size=128K
    read_buffer_size=128K
     
    port=3306
    skip-name-resolve
    skip-ssl
    max_connections=4500
    max_user_connections=4000
    max_connect_errors=65536
    max_allowed_packet=128M
    connect_timeout=8
    net_read_timeout=30
    net_write_timeout=60
    back_log=1024

    serverid在自动化安装脚本中自动生成。

    将上面的data.tar 、my.cnf、生成的rpm包copy到ftp的pub目录下

    /var/ftp/pub/

    自动化安装脚本

    auto_install_mysql.sh:

    #!/bin/sh
    yum install -y cmake gcc g++ bisonncurses-devel zlib
     
    ftp -n<<EOF
    open 192.168.0.33
    user anonymous dexter
    binary
    cd pub
    prompt
    mget *
    EOF
     
    rpm -ivh mysql-rpm-5.6.21-renfengjun.x86_64.rpm
    tar -xvf data.tar -C /u01/mysql/data/
    chown -R mysql:mysql /u01/mysql/
     
    unique_id=`date "+%Y%m%d%M%S"`
    echo 'server_id='$unique_id >> my.cnf
     
    cp my.cnf /u01/mysql/


    执行远程自动安装命令

    执行远程拷贝(dcli命令是我从一体机里面拿出来的脚本,py编写,其实和scp差不多,有需要的可以发邮箱)

    如果批量的安装,需要先使用-k选项初始化一下ssh。

    将脚本copy到远程

    [root@centos511 ~]# ./dcli -l root -c192.168.0.36 -f ./auto_install_mysql.sh

    执行远程命令,也可以放在后台

    [root@centos511 ~]#./dcli -l root -c192.168.0.36 /root/ auto_install_mysql.sh

    输出:

    [[root@centos511 ~]# ./dcli -l root -c192.168.0.36 /root/get_rpm.sh
    root@192.168.0.36's password:
    192.168.0.36: Address 192.168.0.36 maps tolocalhost, but this does not map back to the address - POSSIBLE BREAK-INATTEMPT!
    192.168.0.36: Loaded plugins: fastestmirror,security
    192.168.0.36: Loading mirror speeds from cachedhostfile
    192.168.0.36: * base: mirrors.btte.net
    192.168.0.36: * extras: mirrors.btte.net
    192.168.0.36: * updates: mirrors.yun-idc.com
    192.168.0.36: Setting up Install Process
    192.168.0.36: Packagecmake-2.6.4-5.el5.4.x86_64 already installed and latest version
    192.168.0.36: Package gcc-4.1.2-55.el5.x86_64already installed and latest version
    192.168.0.36: No package g++ available.
    192.168.0.36: Package bison-2.3-2.1.x86_64already installed and latest version
    192.168.0.36: Packagencurses-devel-5.5-24.20060715.x86_64 already installed and latest version
    192.168.0.36: Packagencurses-devel-5.5-24.20060715.i386 already installed and latest version
    192.168.0.36: Package zlib-1.2.3-7.el5.x86_64already installed and latest version
    192.168.0.36: Package zlib-1.2.3-7.el5.i386already installed and latest version
    192.168.0.36: Nothing to do
    192.168.0.36: Please login with USER and PASS.
    192.168.0.36: Please login with USER and PASS.
    192.168.0.36: KERBEROS_V4 rejected as anauthentication type
    192.168.0.36: Interactive mode off.
    192.168.0.36: Preparing...               ##################################################
    192.168.0.36: mysql-rpm                  ##################################################
    .......

    结束。

    验证一下

    [root@study2 ~]# service mysql start
    Starting MySQL.......................[  OK  ]
     
     
    [root@study2 ~]# su - mysql
    mys[mysql@study2 ~]$ mysql
    Welcome to the MySQL monitor.  Commands end with ; or g.
    Your MySQL connection id is 1
    Server version: 5.6.21-r5436-log Sourcedistribution
     
    Copyright (c) 2000, 2014, Oracle and/or itsaffiliates. All rights reserved.
     
    Oracle is a registered trademark of OracleCorporation and/or its
    affiliates. Other names may be trademarks oftheir respective
    owners.
     
    Type 'help;' or 'h' for help. Type 'c' toclear the current input statement.
     
    root@(none) 12:29:11>show databases ;
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | dexdb              |
    | mysql              |
    | performance_schema |
    | test               |
    +--------------------+
    5 rows in set (0.37 sec)
     
    root@(none) 12:29:14>use dexdb ;
    Database changed
    root@dexdb 12:29:17>select * from t ;
    +------+------------+
    | id   |name       |
    +------+------------+
    |    1 |renfengjun |
    +------+------------+
    1 row in set (0.19 sec)
     
    root@dexdb 12:29:19>quit
    Bye
     
    [root@study2 ~]# service mysql stop
    Shutting down MySQL.[  OK  ]

    比较粗糙,还有需要改进的地方。慢慢完善吧。

  • 相关阅读:
    《Node.js 包教不包会》
    (转)Java并发编程:线程池的使用方法
    (原创)定时线程池中scheduleWithFixedDelay和scheduleAtFixedRate的区别
    JAVA线程本地变量ThreadLocal和私有变量的区别
    (原创)确保JAVA线程安全的4种常用方法
    (转)ReentrantLock可重入锁的使用场景
    (原创)JAVA阻塞队列LinkedBlockingQueue 以及非阻塞队列ConcurrentLinkedQueue 的区别
    读/写锁的实现和应用(高并发状态下的map实现)
    Jira API传字符串的换行问题 (文本编辑器使用)
    使用泛型SwingWorker与EDT事件分发线程保持通讯
  • 原文地址:https://www.cnblogs.com/SQL888/p/5776737.html
Copyright © 2020-2023  润新知