zoukankan      html  css  js  c++  java
  • linux下Mysql多实例实现

    什么是MySQL多实例
    MySQL多实例就是在一台机器上开启多个不同的服务端口(如:3306,3307),运行多个MySQL服务进程,通过不同的socket监听不同的服务端口来提供各自的服务:;

    Mysql多实例实现的3种方式

    mysql 多实例常规来讲,有三种方案可以实现,这三种方案各有利弊,如下:

    1、基于多配置文件

    通过使用多个配置文件来启动不同的进程,以此来实现多实例。

    配置文件:

    [client]
    port =3307
    socket =/data/3307/mysql.sock
    [mysql]
    no-auto-rehash
    [mysqld]
    user = mysql
    port =3307
    socket =/data/3307/mysql.sock
    basedir =/application/mysql
    datadir =/data/3307/data
    open_files_limit =1024
    back_log =600
    max_connections =800
    max_connect_errors =3000
    table_cache =614
    external-locking = FALSE
    max_allowed_packet =8M
    sort_buffer_size =1M
    join_buffer_size =1M
    thread_cache_size =100
    thread_concurrency =2
    query_cache_size =2M
    [root@web001 3307]# cat my.cnf 
    [client]
    port =3307
    socket =/data/3307/mysql.sock
    [mysql]
    no-auto-rehash
    [mysqld]
    user = mysql
    port =3307
    socket =/data/3307/mysql.sock
    basedir =/application/mysql
    datadir =/data/3307/data
    open_files_limit =1024
    back_log =600
    max_connections =800
    max_connect_errors =3000
    table_cache =614
    external-locking = FALSE
    max_allowed_packet =8M
    sort_buffer_size =1M
    join_buffer_size =1M
    thread_cache_size =100
    thread_concurrency =2
    query_cache_size =2M
    query_cache_limit =1M
    query_cache_min_res_unit =2k
    #default_table_type = InnoDB
    thread_stack =192K
    #transaction_isolation = READ-COMMITTED
    tmp_table_size =2M
    max_heap_table_size =2M
    #long_query_time = 1
    #log_long_format
    #log-error = /data/3307/error.log
    #log-slow-queries = /data/3307/slow.log
    pid-file =/data/3307/mysql.pid
    #log-bin = /data/3307/mysql-bin
    relay-log =/data/3307/relay-bin
    relay-log-info-file =/data/3307/relay-log.info
    binlog_cache_size =1M
    max_binlog_cache_size =1M
    max_binlog_size =2M
    expire_logs_days =7
    key_buffer_size =16M
    read_buffer_size =1M
    read_rnd_buffer_size =1M
    bulk_insert_buffer_size =1M
    #myisam_sort_buffer_size = 1M
    #myisam_max_sort_file_size = 10G
    #myisam_max_extra_sort_file_size = 10G
    #myisam_repair_threads = 1
    #myisam_recover
    lower_case_table_names =1
    skip-name-resolve
    slave-skip-errors =1032,1062
    replicate-ignore-db=mysql
    server-id = 7
    innodb_additional_mem_pool_size =4M
    innodb_buffer_pool_size =32M
    innodb_data_file_path = ibdata1:128M:autoextend
    innodb_file_io_threads =4
    innodb_thread_concurrency =8
    innodb_flush_log_at_trx_commit =2
    innodb_log_buffer_size =2M
    innodb_log_file_size =4M
    innodb_log_files_in_group =3
    innodb_max_dirty_pages_pct =90
    innodb_lock_wait_timeout =120
    innodb_file_per_table =0
    [mysqldump]
    quick
    max_allowed_packet =2M
    [mysqld_safe]
    log-error=/data/3307/mysql_oldboy3307.err
    pid-file=/data/3307/mysqld.pid
    View

    优点:逻辑简单,配置简单

    缺点:管理起来不方便

    mysql启动停止脚本。

    #!/bin/sh
    
    #init
    
    port=3307
    mysql_user="root"
    mysql_pwd="111111"
    CmdPath="/application/mysql/bin"
    mysql_sock="/data/${port}/mysql.sock"
    
    function_start_mysql()
    {
            if [ ! -e "$mysql_sock" ];then
                    printf "Starting MySql...
    "
                    /bin/sh ${CmdPath}/mysqld_safe --defaults-file=/data/${port}/my.cnf 2>&1 >/dev/null &
    
            else
                    printf "Mysql is running...
    "
                    exit
            fi
    }
    
    #stop function
    function_stop_mysql()
    {
            if [ ! -e "$mysql_sock" ];then
                    printf "MySql is stopped...
    "
                    exit
            else
                    printf "Stoping MySQL...
    "
                    ${CmdPath}/mysqladmin -u ${mysql_user} -p${mysql_pwd} -S /data/${port}/mysql.sock shutdown
            fi
    }
    
    #restart function
    function_restart_mysql()
    {
            printf "Restarting Mysql...
    "
            function_stop_mysql
            sleep 2
            function_start_mysql
    
    }
    
    case $1 in
    start)
            function_start_mysql
    ;;
    stop)
            function_stop_mysql
    ;;
    restart)
            function_restart_mysql
    ;;
    *)
            printf "Usage /data/${port}/mysql {start|stop|restart}
    "
    ;;
    esac 
    View Code

    2、基于mysqld_multi

    通过官方自带的 mysqld_multi 工具,使用单独配置文件来实现多实例

    优点: 便于集中管理管理

    缺点: 不方便针对每个实例配置进行定制

    3、基于IM

    使用 MySQL 实例管理器(MYSQLMANAGER),这个方法好像比较好不过也有点复杂

    优点:便于集中管理

    缺点:耦合度高。IM一挂,实例全挂

    不方便针对每个实例配置进行定制

  • 相关阅读:
    IDEA激活及使用丶
    内网渗透-windows认证
    应急响应必备技能
    云计算期末考试---
    常见GetShell
    SQL Sever提权
    Socks协议以及代理转发工具分析
    最近两场HVV总结
    ATK&CK红队评估实战靶场 (一)的搭建和模拟攻击过程全过程
    应急响应之勒索病毒
  • 原文地址:https://www.cnblogs.com/william126/p/8495190.html
Copyright © 2011-2022 走看看