• Mysql5.6 自动化部署


    主机环境:Centos6.5

    前提:

    1. 配置yum源

    2. 移除系统自带的mysql

    3. 删除原先的mysql用户

    4. 使用mysql二进制安装包:https://dev.mysql.com/downloads/file/?id=473278

    [root@mysql ~]# ls -lrt

    -rw-r--r-- 1 root root 328739574 Nov 11 00:40 mysql-5.6.38-linux-glibc2.12-x86_64.tar.gz
    -rw-r--r-- 1 root root 7302 Nov 11 00:41 mysql_auto_install.sh
    -rw-r--r-- 1 root root 866364 Nov 11 00:46 mysql-install.log

    mysql_install.sh:注意替换软件包版本

    [root@mysql ~]# cat mysql_auto_install.sh
    ###### 二进制自动安装数据库脚本root密码mysqld将脚本和安装包放在/root目录即可###############
    ######数据库目录/usr/local/mysql############
    ######数据目录/data/mysql############
    ######日志目录/log/mysql############
    ######端口号默认3306其余参数按需自行修改############
    ##################
    #author:rrhelei@126.com#
    ##################
    #!/bin/bash
    PATH=/bin:/sbin:/usr/bin:/usr/sbin:/opt/bin:/opt/sbin:~/bin
    export PATH
    # Check if user is root
    if [ $(id -u) != "0" ]; then
    echo "Error: You must be root to run this script, please use root to install"
    exit 1
    fi
    clear
    echo "========================================================================="
    echo "A tool to auto-compile & install MySQL 5.6.38 on Redhat/CentOS Linux "
    echo "========================================================================="
    cur_dir=$(pwd)
    #set mysql root password
    echo "==========================="
    mysqlrootpwd="mysqld"
    echo -e "Please input the root password of mysql:"
    read -p "(Default password: mysqld):" mysqlrootpwd
    if [ "$mysqlrootpwd" = "" ]; then
    mysqlrootpwd="mysqld"
    fi
    echo "==========================="
    echo "MySQL root password:$mysqlrootpwd"
    echo "==========================="
    #which MySQL Version do you want to install?
    echo "==========================="
    isinstallmysql56="n"
    echo "Install MySQL 5.6.38,Please input y"
    read -p "(Please input y , n):" isinstallmysql56
    case "$isinstallmysql56" in
    y|Y|Yes|YES|yes|yES|yEs|YeS|yeS)
    echo "You will install MySQL 5.6.38"
    isinstallmysql56="y"
    ;;
    *)
    echo "INPUT error,You will exit install MySQL 5.6.38"
    isinstallmysql56="n"
    exit
    esac
    get_char()
    {
    SAVEDSTTY=`stty -g`
    stty -echo
    stty cbreak
    #dd if=/dev/tty bs=1 count=1 2> /dev/null
    stty -raw
    stty echo
    stty $SAVEDSTTY
    }
    echo ""
    echo "Press any key to start...or Press Ctrl+c to cancel"
    char=`get_char`
    # Initialize the installation related content.
    function InitInstall()
    {
    cat /etc/issue
    uname -a
    MemTotal=`free -m | grep Mem | awk '{print $2}'`
    echo -e " Memory is: ${MemTotal} MB "
    #Set timezone
    #rm -rf /etc/localtime
    #ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
    #Delete Old Mysql program
    rpm -qa|grep mysql
    rpm -e mysql
    #yum -y remove mysql-server mysql mysql-libs
    #yum -y remove php-mysql
    #yum -y install yum-fastestmirror
    #yum -y update
    #Disable SeLinux
    if [ -s /etc/selinux/config ]; then
    sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
    fi
    setenforce 0
    }
    #Installation of depend on and optimization options.
    function InstallDependsAndOpt()
    {
    cd $cur_dir
    cat >>/etc/security/limits.conf<<EOF
    * soft nproc 65535
    * hard nproc 65535
    * soft nofile 65535
    * hard nofile 65535
    EOF
    echo "fs.file-max=65535" >> /etc/sysctl.conf
    }
    #Install MySQL
    function InstallMySQL56()
    {
    echo "============================Install MySQL 5.6.22=================================="
    cd $cur_dir
    #Backup old my.cnf
    #rm -f /etc/my.cnf
    if [ -s /etc/my.cnf ]; then
    mv /etc/my.cnf /etc/my.cnf.`date +%Y%m%d%H%M%S`.bak
    fi
    #mysql directory configuration
    groupadd mysql -g 512
    useradd -u 512 -g mysql -s /sbin/nologin -d /home/mysql mysql
    tar xvf /root/mysql-5.6.38-linux-glibc2.12-x86_64.tar.gz
    mv /root/mysql-5.6.38-linux-glibc2.12-x86_64 /usr/local/mysql
    mkdir -p /data/mysql
    mkdir -p /log/mysql
    chown -R mysql:mysql /data/mysql
    chown -R mysql:mysql /usr/local/mysql
    chown -R mysql:mysql /log
    #edit /etc/my.cnf
    SERVERID=`ifconfig eth0 | grep "inet addr" | awk '{ print $2}'| awk -F. '{ print $3$4}'`
    cat >>/etc/my.cnf<<EOF
    [client]
    port= 3306
    socket= /tmp/mysql.sock
    default-character-set=utf8
    [mysql]
    default-character-set=utf8
    [mysqld]
    port= 3306
    socket= /tmp/mysql.sock
    basedir= /usr/local/mysql
    datadir= /data/mysql
    open_files_limit = 3072
    back_log = 103
    max_connections = 800
    max_connect_errors = 100000
    table_open_cache = 512
    external-locking = FALSE
    max_allowed_packet = 32M
    sort_buffer_size = 2M
    join_buffer_size = 2M
    thread_cache_size = 51
    query_cache_size = 32M
    tmp_table_size = 96M
    max_heap_table_size = 96M
    slow_query_log = 1
    slow_query_log_file = /log/mysql/slow.log
    log-error = /log/mysql/error.log
    long_query_time = 1
    server-id = $SERVERID
    log-bin = mysql-bin
    sync_binlog = 1
    binlog_cache_size = 4M
    max_binlog_cache_size = 4096M
    max_binlog_size = 1024M
    expire_logs_days = 60
    key_buffer_size = 32M
    read_buffer_size = 1M
    read_rnd_buffer_size = 16M
    bulk_insert_buffer_size = 64M
    character-set-server=utf8
    default-storage-engine = InnoDB
    binlog_format = row
    innodb_buffer_pool_dump_at_shutdown = 1
    innodb_buffer_pool_load_at_startup = 1
    binlog_rows_query_log_events = 1
    explicit_defaults_for_timestamp = 1
    #log_slave_updates=1
    #gtid_mode=on
    #enforce_gtid_consistency=1
    #innodb_write_io_threads = 8
    #innodb_read_io_threads = 8
    #innodb_thread_concurrency = 0
    transaction_isolation = REPEATABLE-READ
    innodb_additional_mem_pool_size = 16M
    innodb_buffer_pool_size = 512M
    #innodb_data_home_dir =
    innodb_data_file_path = ibdata1:1024M:autoextend
    innodb_flush_log_at_trx_commit = 1
    innodb_log_buffer_size = 16M
    innodb_log_file_size = 512M
    innodb_log_files_in_group = 2
    innodb_max_dirty_pages_pct = 50
    innodb_file_per_table = 1
    innodb_locks_unsafe_for_binlog = 0
    wait_timeout = 14400
    interactive_timeout = 14400
    skip-name-resolve
    [mysqldump]
    quick
    max_allowed_packet = 32M
    EOF
    /usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/data/mysql --defaults-file=/etc/my.cnf --user=mysql
    cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
    chmod 700 /etc/init.d/mysqld
    chkconfig --add mysqld
    chkconfig --level 2345 mysqld on
    cat >> /etc/ld.so.conf.d/mysql-x86_64.conf<<EOF
    /usr/local/mysql/lib
    EOF
    ldconfig
    if [ -d "/proc/vz" ];then
    ulimit -s unlimited
    fi
    /etc/init.d/mysqld start
    cat >> /etc/profile <<EOF

    export PATH=/usr/local/mysql/bin:$PATH

    export LD_LIBRARY_PATH=/usr/local/mysql/lib:$LD_LIBRARY_PATH

    EOF
    source /etc/profile
    /usr/local/mysql/bin/mysqladmin -u root password $mysqlrootpwd
    cat > /tmp/mysql_sec_script<<EOF
    use mysql;
    delete from mysql.user where user!='root' or host!='localhost';
    grant all privileges on *.* to 'sys_admin'@'%' identified by 'mysqld';
    flush privileges;
    EOF
    /usr/local/mysql/bin/mysql -u root -p$mysqlrootpwd -h localhost < /tmp/mysql_sec_script
    #rm -f /tmp/mysql_sec_script
    /etc/init.d/mysqld restart
    echo "============================MySQL 5.6.38 install completed========================="
    }
    function CheckInstall()
    {
    echo "===================================== Check install ==================================="
    clear
    ismysql=""
    echo "Checking..."
    if [ -s /usr/local/mysql/bin/mysql ] && [ -s /usr/local/mysql/bin/mysqld_safe ] && [ -s /etc/my.cnf ]; then
    echo "MySQL: OK"
    ismysql="ok"
    else
    echo "Error: /usr/local/mysql not found!!!MySQL install failed."
    fi
    if [ "$ismysql" = "ok" ]; then
    echo "Install MySQL 5.6.38 completed! enjoy it."
    echo "========================================================================="
    netstat -ntl
    else
    echo "Sorry,Failed to install MySQL!"
    echo "You can tail /root/mysql-install.log from your server."
    fi
    }
    #The installation log
    InitInstall 2>&1 | tee /root/mysql-install.log
    CheckAndDownloadFiles 2>&1 | tee -a /root/mysql-install.log
    InstallDependsAndOpt 2>&1 | tee -a /root/mysql-install.log
    InstallMySQL56 2>&1 | tee -a /root/mysql-install.log
    CheckInstall 2>&1 | tee -a /root/mysql-install.log

    安装过程:
    [root@mysql ~]# sh mysql_auto_install.sh
    =========================================================================
    A tool to auto-compile & install MySQL 5.6.38 on Redhat/CentOS Linux
    =========================================================================
    ===========================
    Please input the root password of mysql:
    (Default password: mysqld):
    ===========================
    MySQL root password:mysqld
    ===========================
    ===========================
    Install MySQL 5.6.38,Please input y
    (Please input y , n):y
    You will install MySQL 5.6.38

    Press any key to start...or Press Ctrl+c to cancel
    CentOS release 6.5 (Final)
    Kernel on an m

    Linux mysql 2.6.32-431.el6.x86_64 #1 SMP Fri Nov 22 03:15:09 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux

    Memory is: 1862 MB
    error: package mysql is not installed
    setenforce: SELinux is disabled
    mysql_auto_install.sh: line 243: CheckAndDownloadFiles: command not found
    ============================Install MySQL 5.6.22==================================
    mysql-5.6.38-linux-glibc2.12-x86_64/share/polish/errmsg.sys
    mysql-5.6.38-linux-glibc2.12-x86_64/share/russian/errmsg.sys
    mysql-5.6.38-linux-glibc2.12-x86_64/share/german/errmsg.sys
    mysql-5.6.38-linux-glibc2.12-x86_64/share/spanish/errmsg.sys
    mysql-5.6.38-linux-glibc2.12-x86_64/share/italian/errmsg.sys
    mysql-5.6.38-linux-glibc2.12-x86_64/share/mysql_test_data_timezone.sql
    mysql-5.6.38-linux-glibc2.12-x86_64/share/norwegian/errmsg.sys
    mysql-5.6.38-linux-glibc2.12-x86_64/share/slovak/errmsg.sys
    mysql-5.6.38-linux-glibc2.12-x86_64/share/serbian/errmsg.sys
    mysql-5.6.38-linux-glibc2.12-x86_64/share/dutch/errmsg.sys
    mysql-5.6.38-linux-glibc2.12-x86_64/share/mysql_security_commands.sql
    mysql-5.6.38-linux-glibc2.12-x86_64/share/dictionary.txt
    mysql-5.6.38-linux-glibc2.12-x86_64/share/charsets/latin1.xml
    mysql-5.6.38-linux-glibc2.12-x86_64/share/charsets/Index.xml
    mysql-5.6.38-linux-glibc2.12-x86_64/share/charsets/latin2.xml
    mysql-5.6.38-linux-glibc2.12-x86_64/share/charsets/hp8.xml
    mysql-5.6.38-linux-glibc2.12-x86_64/share/charsets/latin7.xml
    mysql-5.6.38-linux-glibc2.12-x86_64/share/charsets/macroman.xml
    mysql-5.6.38-linux-glibc2.12-x86_64/share/charsets/ascii.xml
    mysql-5.6.38-linux-glibc2.12-x86_64/share/charsets/keybcs2.xml
    mysql-5.6.38-linux-glibc2.12-x86_64/share/charsets/greek.xml
    mysql-5.6.38-linux-glibc2.12-x86_64/share/charsets/hebrew.xml
    mysql-5.6.38-linux-glibc2.12-x86_64/share/charsets/cp1257.xml
    mysql-5.6.38-linux-glibc2.12-x86_64/share/charsets/swe7.xml
    mysql-5.6.38-linux-glibc2.12-x86_64/share/charsets/cp866.xml
    Installing MySQL system tables...2017-11-11 00:44:28 0 [Note] Ignoring --secure-file-priv value as server is running with --bootstrap.
    2017-11-11 00:44:28 0 [Note] /usr/local/mysql/bin/mysqld (mysqld 5.6.38-log) starting as process 3016 ...
    OK

    Filling help tables...2017-11-11 00:45:25 0 [Note] Ignoring --secure-file-priv value as server is running with --bootstrap.
    2017-11-11 00:45:25 0 [Note] /usr/local/mysql/bin/mysqld (mysqld 5.6.38-log) starting as process 3040 ...
    OK

    To start mysqld at boot time you have to copy
    support-files/mysql.server to the right place for your system

    PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !
    To do so, start the server, then issue the following commands:

    /usr/local/mysql/bin/mysqladmin -u root password 'new-password'
    /usr/local/mysql/bin/mysqladmin -u root -h 192.168.48.50 password 'new-password'

    Alternatively you can run:

    /usr/local/mysql/bin/mysql_secure_installation

    which will also give you the option of removing the test
    databases and anonymous user created by default. This is
    strongly recommended for production servers.

    See the manual for more instructions.

    You can start the MySQL daemon with:

    cd . ; /usr/local/mysql/bin/mysqld_safe &

    You can test the MySQL daemon with mysql-test-run.pl

    cd mysql-test ; perl mysql-test-run.pl

    Please report any problems at http://bugs.mysql.com/

    The latest information about MySQL is available on the web at

    http://www.mysql.com

    Support MySQL by buying support/licenses at http://shop.mysql.com

    New default config file was created as /usr/local/mysql/my.cnf and
    will be used by default by the server when you start it.
    You may edit this file to change server settings

    WARNING: Default config file /etc/my.cnf exists on the system
    This file will be read by default by the MySQL server
    If you do not want to use this, either remove it, or use the
    --defaults-file argument to mysqld_safe when starting the server

    Starting MySQL.. SUCCESS!
    Warning: Using a password on the command line interface can be insecure.
    Warning: Using a password on the command line interface can be insecure.
    Shutting down MySQL.. SUCCESS!
    Starting MySQL.. SUCCESS!
    ============================MySQL 5.6.38 install completed=========================
    ^C===================================== Check install ===================================
    Checking...
    MySQL: OK
    Install MySQL 5.6.38 completed! enjoy it.

    转:https://blog.csdn.net/gumengkai/article/details/78502131

  • 相关阅读:
    sql两个字段相加减,第三个字段没有值的原因.
    CF 447B(DZY Loves Strings-贪心)
    Appium AndroidKeyCode
    初探Java多线程
    模拟实现Spring IoC功能
    Cordova 5 架构学习 Weinre远程调试技术
    快学Scala习题解答—第三章 数组相关操作
    org.hibernate.AssertionFailure: null id in com.you.model.User entry (don&#39;t flush the Session after a
    Swift3.0语言教程替换子字符串
    DHCP欺骗(DHCP Sproofing)
  • 原文地址:https://www.cnblogs.com/andy6/p/9546288.html
Copyright © 2020-2023  润新知