美文网首页
单台linux部署多个mysql实例实战

单台linux部署多个mysql实例实战

作者: 超凡陆战队 | 来源:发表于2017-09-04 16:12 被阅读988次
    1. 了解什么是mysql多实例

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

    1. 部署mysql多实例的两种方式

    (1) 使用多个配置文件启动不同的进程来实现多实例,这种方式的优势逻辑简单,配置简单,缺点是管理起来不太方便;
    (2) 通过官方自带的mysqld_multi使用单独的配置文件来实现多实例,这种方式定制每个实例的配置不太方面,优点是管理起来很方便,集中管理;

    本文使用的是第二种方法来实现mysql的多实例;

    1. 安装环境准备
      linxu环境:centos 7.1
      mysql安装包: mysql-5.7.18-linux-glibc2.5-x86_64.tar.gz(使用的是免编译二进制包安装)
    2. 解压与迁移
    tar -xvf mysql-5.7.18-linux-glibc2.5-x86_64.tar.gz  
    mv mysql-5.7.18-linux-glibc2.5-x86_64 /test/mysql/mysql
    
    1. 创建相关目录
    mkdir -p /test/mysql/mysql/data
    mkdir /test/mysql/mysql/data/mysql1
    mkdir /test/mysql/mysql/data/mysql2
    mkdir -p /test/mysql/mysql/data/log
    mkdir -p /test/mysql/mysql/data/log/mysql1
    mkdir -p /test/mysql/mysql/data/log/mysql2
    
    1. 创建mysql用户和组
    groupadd -r mysql
    useradd -r -g mysql mysql
    

    授权

    chown -R mysql:mysql /test/mysql/mysql/ 
    
    1. 添加环境变量
    echo 'export PATH=$PATH:/test/mysql/mysql/bin' >> /etc/profile
    source /etc/profile
    
    1. etc目录下创建my.cnf
      好像从5.7开始包中没有提供my-default.cnf配置文件,我是从网上找了一个my.cnf然后修改的,可以直接复制下面的配置文件
    2. 修改my.cnf配置
      这里要注意一下server_id和port不要冲突了
    [client]
    port=3306
    socket=/test/mysql/mysql/mysql1.sock
    
    [mysqld_multi]
    mysqld = /test/mysql/mysql/bin/mysqld_safe
    mysqladmin = /test/mysql/mysql/bin/mysqladmin
    log = /test/mysql/mysql/data/log/mysqld_multi.log
    
    [mysqld]
    user=mysql
    basedir =/test/mysql/mysql
    sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
    
    [mysqld1]
    mysqld=mysqld
    mysqladmin=mysqladmin
    datadir=/test/mysql/mysql/data/mysql1
    port=3306
    server_id=mysql1
    socket=/test/mysql/mysql/mysql1.sock
    log-output=file
    slow_query_log = 1
    long_query_time = 1
    slow_query_log_file = /test/mysql/mysql/data/log/mysql1/slow.log
    log-error = /test/mysql/mysql/data/log/mysql1/error.log
    
    
    [mysqld2]
    mysqld=mysqld
    mysqladmin=mysqladmin
    datadir=/test/mysql/mysql/data/mysql2
    port=3307
    server_id=mysql2
    socket=/test/mysql/mysql/mysql2.sock
    log-output=file
    slow_query_log = 1
    long_query_time = 1
    slow_query_log_file = /test/mysql/mysql/data/log/mysql2/slow.log
    log-error = /test/mysql/mysql/data/log/mysql2/error.log
    
    
    1. 初始化数据库
      初始化mysql1的数据库
    /test/mysql/mysql/bin/mysql_ssl_rsa_setup --basedir=/test/mysql/mysql/  --datadir=/test/mysql/mysql/data/mysql1  --defaults-file=/etc/my.cnf  
    

    初始化mysql2的数据库

    /test/mysql/mysql/bin/mysql_ssl_rsa_setup --basedir=/test/mysql/mysql/  --datadir=/test/mysql/mysql/data/mysql2  --defaults-file=/etc/my.cnf  
    
    1. 检查数据库是否初始化成功
    [root@mysql ~]# cd /test/mysql/mysql/data/mysql1
    [root@mysql data]# ls
    auto.cnf  ibdata1  ib_logfile0  ib_logfile1  mysql  mysql.pid  performance_schema  test
    

    看一下目录下面文件有没有创建成功,mysql2同上

    1. 启动mysql:
    bin/mysqld_multi start
    

    查看启动状态:

    bin/mysqld_multi report
    
    1. 登陆mysql并修改密码:
    mysql -u root -p -S mysql1.sock
    set password for root@'localhost'=password('123456'); 
    flush privileges; 
    

    ps:这里说明一下,mysql5.7开始会初始化一个mysql密码,详见linux下mysql5.7初始密码查看及忘记密码重置

    本文参考自http://www.cnblogs.com/xuchenliang/p/6843990.html/后实际操作记录

    相关文章

      网友评论

          本文标题:单台linux部署多个mysql实例实战

          本文链接:https://www.haomeiwen.com/subject/bmuejxtx.html