• mysql多实例配置


    一、安装MySQL。步骤请参考安装文档

    安装完mysql之后先不要进行初始化。在配置完双实例之后再进行数据库的初始化。

    二、双实例配置

    1、创建实例的数据目录

    mkidr -p /data/3306/data
    mkidr -p /data/3307/data
    mkdir -p /data/3306/binlog       
    chown -R mysql:mysql /data

    2、添加环境变量

    echo "export PATH=/usr/local/mysql/bin:$PATH" >> /etc/profile        # 如果系统自带mysql或者没卸载感觉,path写的顺序有可能出现问题
    source /etc/profile

    3、编写两个实例的配置文件

    ###################   3306实例的配置文件  ############################
    [
    client] port = 3306 socket = /data/3306/mysql.sock [mysqld] port = 3306 socket = /data/3306/mysql.sock basedir = /usr/local/mysql datadir = /data/3306/data open_files_limit = 1024 pid-file = /data/3306/mysqld.pid log-bin = /data/3306/binlog/mysqld-bin expire_logs_days = 7 server-id = 1 [mysqldump] quick max_allowed_packet = 2M [mysqld_safe] log-error = /data/3306/mysql3306.err #提前创建,否则初始化报错 pid-file = /data/3306/mysqld.pid
    ###################   3307实例的配置文件  ############################


     [client]
     port = 3307
     socket = /data/3307/mysql.sock

     [mysqld]
     port = 3307
     socket = /data/3307/mysql.sock
     basedir = /usr/local/mysql
     datadir = /data/3307/data
     open_files_limit = 1024
     pid-file = /data/3307/mysqld.pid

     # log-bin = /data/3307/binlog/mysqld-bin
     # expire_logs_days = 7

     server-id = 3


     [mysqldump]
     quick
     max_allowed_packet = 2M

     [mysqld_safe]
     log-error = /data/3307/mysql3307.err
     pid-file = /data/3307/mysqld.pid

    ###################################################################

    4、编写自定义启动脚本,即自定义mysqld。模板为3306实例的服务,3307的请自行修改。修改成属主mysql。可执行权限

    #!/bin/bash
    #
    #
    #
    #init
    port=3306
    mysql_user="root"
    mysql_pwd="111111"
    CmdPath="/usr/local/mysql/bin"
    mysql_sock="/data/${port}/mysql.sock"
     
    #startup function
    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 "Stopping 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

    5、对两个实例进行初始化(初始化的过程会生成两个临时的密码。需要记住以方便后边登陆并对密码进行修改)

    cd /usr/local/mysql
    ./bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/data/3306/data/
    ./bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/data/3307/data/

     6、启动双实例

    ./data/3306/mysqld start
    ./data/3307/mysqld start

    7、查看连个端口的运行状态 

    netstat -tunlp | grep 330*

    [root@mysql2 3306]# netstat -tunlp|grep 330*
    tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      1331/sshd           
    tcp        0      0 :::3307                     :::*                        LISTEN      58215/mysqld        
    tcp        0      0 :::22                       :::*                        LISTEN      1331/sshd           
    tcp        0      0 :::3306                     :::*                        LISTEN      57820/mysqld  

    8、登陆两个实例并配置数据库

    mysql -u root -p -S /data/3307/mysql.sock
    mysql -u root -p -S /data/3307/mysql.sock
    # 分别执行
    SET PASSWORD = PASSWORD("new password");
    ALTER USER ‘root’@‘localhost’ PASSWORD EXPIRE NEVER;
    flush privileges; 

    9、双实例配置完成,如果要增加实例。按照上述步骤继续添加即可

    多实例的优点:

    (1)、有效利用服务器资源。当单个服务器资源过剩时,可以充分利用剩余的资源提供更多的服务

    (2)、节约服务器资源,当公司资金紧张,但数据库又需要数据库之间各自提供服务时,并且还想使用主从同步等技术,此时多实例就再好不过了

    (3)、方便后期架构扩展,某个项目才启动时,启动初期并不一定有很大的用户量,因此可以先用一组物理数据库服务器,在上面部署多个实例,方便后续架构扩展、迁移

    多实例的缺点:

    (1)、资源互相抢占问题当某个服务实例并发很高或者有慢查询时,整个实例会消耗更多的内存、CPU和IO资源,这将导致服务器上的其它实例提供服务的质量下降。这就比如说合租房的各个租客,每当早晨上班时,都会洗漱,此时卫生间的占用率就大,各个租客总会发生等待。

  • 相关阅读:
    磁盘及分区管理
    用户和文件权限管理
    分割文件命令split
    去除重复命令uniq
    数据连接命令join
    数据剪切命令cut和数据粘贴命令pastte
    排序命令sort
    koa-router
    koa入门
    require.ensure的用法;异步加载-代码分割;
  • 原文地址:https://www.cnblogs.com/jkin/p/10154062.html
Copyright © 2020-2023  润新知