zoukankan      html  css  js  c++  java
  • CentOS7.3 部署两个实例 MySQL

    描述

    在同一台服务器中安装两个MySQL数据库。目的是为了配置主从分离,所以需要多安装一台用于从数据库。使用mysqld_multi启动多个实例。
    mysql官网下载 需要安装的版本。

    下载与安装

    /usr/local/下创建mysqltemp(用于临时下载数据库安装包)。

    [root@localhost local]# cd /usr/local
    [root@localhost local]# mkdir mysqltemp
    [root@localhost local]# cd mysqltemp
    [root@localhost mysql3307]# wget https://cdn.mysql.com/archives/mysql-5.7/mysql-5.7.28-linux-glibc2.12-i686.tar.gz
    [root@localhost mysql3307]# tar -xvf mysql-5.7.28-linux-glibc2.12-i686.tar.gz
    
    //  重命名解压的文件为mysql,并移动mysql到/usr/local/mysql
    [root@localhost mysql3307]# mv mysql-5.7.28-linux-glibc2.12-i686 /usr/local/mysql
    

    下载、解压和重命名之后,完整路径是/usr/local/mysql。接下来进入mysql文件夹,创建data文件夹,并在data文件夹中创建3306、3307、log文件夹备用。在3306和3307文件夹中分别创建data、log、tmp文件夹备用。

    [root@localhost mysql]# mkdir data
    [root@localhost mysql]# cd data
    [root@localhost data]# mkdir {3306,3307,log}
    [root@localhost data]# cd 3306
    [root@localhost 3306]# mkdir {data,log,tmp}
    [root@localhost 3306]# cd ../3307
    [root@localhost 3307]# mkdir {data,log,tmp}
    

    配置

    配置/etc/my.cnf文件

    # vim /etc/my.cnf
    

    使用以下配置

    # 启动多个mysql实例
    [client] 
    default-character-set = utf8mb4
    
    [mysqld_multi] 
    mysqld = /usr/local/mysql/bin/mysqld_safe
    mysqladmin = /usr/local/mysql/bin/mysqladmin
    log = /usr/local/mysql/data/log/mysqld_multi.log
    
    [mysqld3306] 
    mysqld=mysqld
    mysqladmin=mysqladmin
    datadir=/usr/local/mysql/data/3306/data
    port=3306
    user=mysql
    performance_schema = off
    server_id=3306
    socket=/tmp/mysql_3306.sock
    MyISAM_buffer_pool_size = 32M         #设置MyISAM 缓存大小
    bind_address = 0.0.0.0                  #设置监听IP地址
    skip-name-resolve = 0                 #关闭DNS反向解析 
    log-output=file
    slow_query_log = 1
    long_query_time = 1
    slow_query_log_file = /usr/local/mysql/data/3306/log/slow.log
    log-error = /usr/local/mysql/data/3306/log/error.log
    binlog_format = mixed
    log-bin = /usr/local/mysql/data/3306/log/mysql3306_bin
    explicit_defaults_for_timestamp=true
    lower_case_table_names = 1
      
    [mysqld3307] 
    mysqld=mysqld
    mysqladmin=mysqladmin
    datadir=/usr/local/mysql/data/3307/data
    port=3307
    user=mysql
    server_id=3307
    performance_schema = off
    MyISAM_buffer_pool_size = 32M         #设置MyISAM 缓存大小
    bind_address = 0.0.0.0                  #设置监听IP地址
    skip-name-resolve = 0                 #关闭DNS反向解析 
    socket=/tmp/mysql_3307.sock
    log-output=file
    slow_query_log = 1
    long_query_time = 1
    slow_query_log_file = /usr/local/mysql/data/3307/log/slow.log
    log-error = /usr/local/mysql/data/3307/log/error.log
    binlog_format = mixed
    log-bin = /usr/local/mysql/data/3307/log/mysql3307_bin
    explicit_defaults_for_timestamp=true
    lower_case_table_names = 1
    

    添加好配置文件之后,需要添加mysql用户(如果没有该用户的话)

    # groupadd mysql
    # useradd -g mysql mysql
    # chown -R mysql:mysql /usr/local/mysql
    

    初始化数据库

    添加好配置之后,就可以初始化3306和3307的数据库了。执行命令之后,会出现临时密码,这个密码需要记住,用来首次登录mysql数据库。

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

    执行初始化命令,如果出现以下错误,则执行相应的安装命令即可。

    ./bin/mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory
    
    // 根据相应的提示,选择对应的安装命令
    yum install -y libaio.so.1
    yum install -y libnuma.so.1
    yum install --setopt=protected_multilib=false libnuma.so.1
    

    初始化数据库没有出现异常,最后会看到以下信息,说明初始化数据库成功,这也就是数据库的临时密码。

    [Note] A temporary password is generated for root@localhost: 3/MasxQll5u
    
    [Note] A temporary password is generated for root@localhost: 8tqGMruu8d?l
    

    可以进入到data里面看看数据库有没有初始化成功。

    # cd /usr/local/mysql/data/3306/data/
    # cd /usr/local/mysql/data/3307/data/
    

    启动

    mysqld_multi多实例管理的基本命令

    启动全部实例
    # /usr/local/mysql/bin/mysqld_multi start
    
    查看全部实例状态
    # /usr/local/mysql/bin/mysqld_multi report
    
    启动单个实例
    # /usr/local/mysql/bin/mysqld_multi start 3306
    # /usr/local/mysql/bin/mysqld_multi start 3307
    停止单个实例
    # /usr/local/mysql/bin/mysqld_multi stop 3306
    # /usr/local/mysql/bin/mysqld_multi stop 3307
    查看单个实例状态
    # /usr/local/mysql/bin/mysqld_multi report 3306
    # /usr/local/mysql/bin/mysqld_multi report 3307
    

    使用命令,启动两个数据库实例

    # /usr/local/mysql/bin/mysqld_multi start
    

    执行命令没有报错,我们可以看一下日志有没有错误。

    [root@localhost log]# cat /usr/local/mysql/data/log/mysqld_multi.log 
    mysqld_multi log file version 2.16; run: 二 4月  7 13:04:42 2020
    
    Starting MySQL servers
    

    为了确保两个数据库实例已经启动,可以通过命令查看相应端口是否有进程。

    # ps -ef | grep 3306
    # ps -ef | grep 3307
    

    或者查看相应的实例中的日志信息

    # cat /usr/local/mysql/data/3307/log/error.log
    # cat /usr/local/mysql/data/3307/log/error.log
    

    登录

    以上都没有错误,我们就可以登录mysql进行修改密码等配置了。

    直接使用mysql -u root -p会报以下错误。

    ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
    

    所以要使用在配置文件中配置的sock地址mysql -S /tmp/mysql_3306.sock -p密码,加上刚刚生成的临时密码。(其他配置可参考 CentOS7 环境配置(持续更新)

    mysql -S /tmp/mysql_3306.sock -p3/MasxQll5u
    
    // 设置密码
    mysql> set password=password('Root@123');
    // 设置允许远程登录
    mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'Root@123' WITH GRANT OPTION;
    mysql> flush privileges;
    
    mysql> show variables like '%character%';
    mysql> show variables like "%case%";
    

    3307数据库同样跟3306操作一样。

    mysql -S /tmp/mysql_3307.sock -p8tqGMruu8d?l
    
    // 设置密码
    mysql> set password=password('Root@123');
    // 设置允许远程登录
    mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'Root@123' WITH GRANT OPTION;
    mysql> flush privileges;
    
    mysql> show variables like '%character%';
    mysql> show variables like "%case%";
    

    关闭数据库,发现使用/usr/local/mysql/bin/mysqld_multi stop不能关闭。可以先查询端口进程,然后用kill命令关闭。

    # ps -ef | grep 3306
    # kill -9 进程ID
    

    以上,两个数据库实例已经配置并启动成功。可以通过客户端连接操作。如果需要配置读写分离,可以参考: SpringBoot 整合 MyCat 实现读写分离


    参考文章:

    首发地址: https://muycode.com/article/mysql20200407.html

    centos下mysql多实例安装3306、3307实例(2014-10-15)

    生活还爱着你 ^_^
  • 相关阅读:
    第6课.内联函数分析
    第5课.引用的本质分析
    第4课.布尔类型和引用
    第3课.进化后的const
    第2课.C到C++的升级
    c语言深度解剖(笔记)
    你必须知道的495个c语言问题(笔记)
    JS弹出框
    车牌号正则表达式
    input输入文字后背景色变成了黄色 CSS改变(去掉黄色背景)
  • 原文地址:https://www.cnblogs.com/muycode/p/12653997.html
Copyright © 2011-2022 走看看