MySQL多实例部署

什么是多实例?

  1. 多套后台进程+线程+内存结构

  2. 多个配置文件

  3. 多个端口

  4. 多个socket

  5. 多个数据目录(datadir)

    mkdir /data/{3307..3309}  #创建数据存放目录
    
    vim /data3307/my.cnf        #编写配置文件内容如下:
    
    [mysqld]
    basedir=/usr/local/mysql/
    datadir=/data3307/data
    socket=/data3307/data/mysql.sock
    port=3307
    log_error=/data3307/mysql.err
    log-bin=/data3307/mysql-bin
    server_id=7
    
    # 将配置文件cp到3308和3309实例中根据以上配置文件进行修改
    目录结构为
    [root@db02 /]# tree /data330*
    /data3307
    `-- my.cnf
    /data3308
    `-- my.cnf
    /data3309
    `-- my.cnf
    
    更改数据目录所有者:
     chown -R mysql. /data330* #更改目录所有者和所属组
     [root@db02 scripts]\# ll /data330* -d
    drwxr-xr-x 3 mysql mysql 120 Jun 14 22:22 /data3307
    drwxr-xr-x 2 mysql mysql  20 Jun 14 22:12 /data3308
    drwxr-xr-x 2 mysql mysql  20 Jun 14 22:12 /data3309
    
    #初始化数据库
    [root@db02 /]\# cd /usr/local/mysql/scripts/
    ./mysql_install_db --defaults-file=/data3307/my.cnf --user=mysql --basedir=/usr/local/mysql --datadir=/data3307/data
    ./mysql_install_db --defaults-file=/data3308/my.cnf --user=mysql --basedir=/usr/local/mysql --datadir=/data3308/data
    ./mysql_install_db --defaults-file=/data3309/my.cnf --user=mysql --basedir=/usr/local/mysql --datadir=/data3309/data
    
    #启动多实例
    mysqld_safe --defaults-file=/data3307/my.cnf & 	#可写入/usr/local/bin/自定义名称,快捷操作
    mysqld_safe --defaults-file=/data3308/my.cnf & 	#可写入/usr/local/bin/自定义名称,快捷操作
    mysqld_safe --defaults-file=/data3309/my.cnf & 	#可写入/usr/local/bin/自定义名称,快捷操作
    
    #查看是否启动
    [root@db02 scripts]# ss -lntup |grep 330*
    tcp    LISTEN     0      80     [::]:3306               [::]:*                   users:(("mysqld",pid=6155,fd=13))
    tcp    LISTEN     0      80     [::]:3307               [::]:*                   users:(("mysqld",pid=6888,fd=11))
    tcp    LISTEN     0      80     [::]:3308               [::]:*                   users:(("mysqld",pid=7060,fd=11))
    tcp    LISTEN     0      80     [::]:3309               [::]:*                   users:(("mysqld",pid=7232,fd=11))
    
    #配置root用户密码
    [root@db02 scripts]# mysqladmin -uroot -p -S /data3307/data/mysql.sock password 'echo'
    [root@db02 scripts]# mysqladmin -uroot -p -S /data3308/data/mysql.sock password 'echo'
    [root@db02 scripts]# mysqladmin -uroot -p -S /data3309/data/mysql.sock password 'echo'
    
    #连接多实例
    mysql -uroot -p -S /data3307/data/mysql.sock # socket连接(本地) 可写入/usr/local/bin/自定义名称,快捷操作
    例:
    vim /usr/local/bin/mysql3308
    写入内容如下:
    mysql  $*  -S /data3308/data/mysql.sock  #使用$*进行传参
    chmod 700 /usr/local/bin/mysql3308
    
    #授权远程用户后可远程登录
    mysql -uroot -p -h172.16.1.52 -P3307           # tcp/ip连接(远程)
    
    #关闭多实例
     mysqladmin -uroot -p -S /data3308/data/mysql.sock shutdown # (可写入/usr/local/bin/自定义名称,快捷操作)
    例:
    vim /usr/local/bin/mysql3308
    写入内容如下:
    mysqladmin  $*  -S /data3308/data/mysql.sock  shutdown #使用$*进行传参
    chmod 700 /usr/local/bin/mysql3308