zoukankan      html  css  js  c++  java
  • mysql多实例安装脚本

    #! /bin/bash
    # v.mysql-5.6.30-linux-glibc2.5-x86_64.tar.gz
    # only install master mysql
    # time:2016-08-15
    
    # pkg dir
    pkg_dir=`pwd`
    
    # mysql base dir
    data_dir="/data/mysql_root/mysql"
    base_dir="/usr/local/mysql"
    
    # create MySQL group and user
    echo "start create mysql group and user" >> ${pkg_dir}/install.log
    
    groupadd mysql
    useradd -g mysql mysql  -s /sbin/nologin
    
    echo "end mysql group and user" >> ${pkg_dir}/install.log
    
    # mysql datafile path
    # install mysqld 
    # grant privileges
    mkdir -p ${data_dir}/data 2>/dev/null
    chown -R mysql:mysql ${data_dir}/data
    # un_tar.gz and install mysql programmer
    echo "start un_tar.gz..." >> ${pkg_dir}/install.log
    cd ${pkg_dir} && tar -xf mysql-5.6.30-linux-glibc2.5-x86_64.tar.gz  -C /usr/local && cd /usr/local && mv mysql-5.6.30-linux-glibc2.5-x86_64 mysql;
    
    echo "end install mysql"  >> ${pkg_dir}/install.log
    
    echo "set mysql my.cnf params" >> ${pkg_dir}/install.log
    
    # stored mysqld multi execute log
    mkdir -p ${base_dir}/multi_log 2>/dev/null
    
    # comm parameter of my.cnf 
    cat<<EOF > ${base_dir}/my.cnf
    # The mysqld multi instance
    [mysqld_multi]
    mysqld = ${base_dir}/bin/mysqld_safe
    mysqladmin = ${base_dir}/bin/mysqladmin
    log =${base_dir}/multi_log/mysqld_multi.log
    
    [mysqldump]
    quick
    max_allowed_packet = 16M
    
    [mysql]
    no-auto-rehash
    
    [myisamchk]
    key_buffer_size = 256M
    sort_buffer_size = 256M
    read_buffer = 2M
    write_buffer = 2M
    
    [mysqlhotcopy]
    interactive-timeout
    
    EOF
    
    # other my.cnf parameter part 
    pre_install_mysqld(){
    cat<<EOF >> ${base_dir}/my.cnf
    # The MySQL server
    [mysqld${port:2}]
    port		= ${port} 
    socket		= ${data_dir}/data${port}/mysql.socket
    max-connections = 800
    skip-name-resolve
    skip-external-locking
    key_buffer_size = 384M
    max_allowed_packet = 1073M 
    table_open_cache = 512
    sort_buffer_size = 512K 
    read_buffer_size = 512K
    read_rnd_buffer_size = 512K
    join_buffer_size = 128K
    myisam_sort_buffer_size = 64M
    thread_cache_size = 256
    query_cache_size = 0
    query_cache_type = 0
    tmp_table_size = 64M
    max_heap_table_size = 64M
    
    basedir=${base_dir}
    datadir=${data_dir}/data${port}
    
    pid-file = ${data_dir}/data${port}/mysql.pid
    log_error = ${data_dir}/data${port}/mysql.err
    
    # set binary logging is required for replication
    log-bin=mysql-bin
    binlog_cache_size = 32M
    
    # event_scheduler shutoff in mysqld slave
    event_scheduler = 1 
    binlog_format=row
    expire_logs_days = 3
    
    # set slow log
    slow_query_log = 1
    long_query_time = 2
    
    #set 字符
    character_set_server = utf8
    
    #set 大小写敏感
    
    lower_case_table_names=1
    
    # set mysqld server_id
    server-id	= ${port}
    
    # set innodb params
    innodb_data_home_dir = ${data_dir}/data${port} 
    innodb_log_group_home_dir = ${data_dir}/data${port} 
    innodb_buffer_pool_size = 5972M
    innodb_additional_mem_pool_size = 10M
    innodb_log_file_size = 512M
    innodb_log_buffer_size = 16M
    innodb_flush_log_at_trx_commit = 2 
    innodb_flush_method = O_DIRECT
    innodb_file_per_table = 1
    innodb_lock_wait_timeout = 10
    innodb_file_format = Barracuda
    innodb_file_format_max = Barracuda
    innodb_stats_on_metadata = 0
    innodb_purge_threads = 1
    innodb_read_io_threads = 12
    innodb_write_io_threads = 12
    innodb_purge_threads = 1
    innodb_open_files = 500
    innodb_thread_concurrency = 0
    innodb_io_capacity = 600
    
    [client]
    default-character-set = utf8
    
    EOF
    # initizal mysql Db 
    chmod +x ${base_dir}/scripts/mysql_install_db
    ${base_dir}/scripts/mysql_install_db --basedir=${base_dir} --datadir=${data_dir}/data${port} --user=mysql --defaults-file=${base_dir}/my.cnf >> ${pkg_dir}/install.log
    echo "end mysqld install." >> ${pkg_dir}/install.log
    }
    
    # mysql datafile path
    for port in 2016 3017 4018 5019 6020 
    do
            # check mysql base and data dir folder
            if [ ! -d ${data_dir}/data${port} ];then
                    mkdir -p ${data_dir}/data${port}
                    # function mysqld_install to mysql programmer
                    pre_install_mysqld $port
            else
                    pre_install_mysqld $port
            fi
    done
    
    #mysql data
    chown -R mysql:mysql ${data_dir}/data
    chown -R mysql:mysql ${base_dir}/data
    
    #环境变量
    echo 'export PATH=$PATH:/usr/local/mysql/bin' >>  /etc/profile
    source /etc/profile
    

      

  • 相关阅读:
    第一款上位机的笔记(MFC)——VS2010
    C++随笔(四)
    C++随笔(三)
    C++随笔(二)障眼法
    C++随笔
    matlab中的数据图像拟合
    在keil中调试汇编程序
    redis常见的面试题及答案
    spring定时任务的几种实现方式
    【SpringMVC】从Fastjson迁移到Jackson,以及对技术选型的反思
  • 原文地址:https://www.cnblogs.com/fujinzhou/p/5772693.html
Copyright © 2011-2022 走看看