MySQL数据库多实例的安装配置

一、什么是MySQL的多实例

mysql多实例就是在一台机器上开启多个不同的服务端口,运行多个mysql服务进程,这些服务进程通过不同的socket监听不同的服务端口来提供各自的服务。这些MySQL多实例公用一套MySQL安装程序,使用不同的(也可以相同)my.cnf配置文件,启动程序,数据文件。在提供服务时多实例MySQL在逻辑生看来是各自独立的,多实例的自身是根据配置文件对应的设定值,来取得服务器相关硬件资源。
MySQL多实例可以有效利用服务器资源但是会消耗更多内存、cpu、磁盘和io资源。
一般用在访问不是特别大的业务上。

二、配置MySQL多实例方法

通过配置多个配置文件以及多个启动程序来实现多实例。这里采用/data目录作为mysql多实例总的根目录。然后规划不同的mysql实例端口号来作为/data下面的二级目录,不同端口号就是不同实例目录。二级目录包含mysql数据文件,配置文件以及启动文件的目录。

  • 创建相关mysql多实例目录

           mkdir -p /data/{3306,3307}/data
           pkill mysql             #结束单实例mysql
           rm -rf /etc/init.d/mysqld     #删除单实例开机启动脚本,以免冲突
    
  • 3306配置文件

     [client]  #客户端
    
     port = 3306
    
       socket = /data/3306/mysql.sock
    
    	[mysqld]  #服务端
    
     port = 3306
    
     socket = /data/3306/mysql.sock
    
     	basedir = /home/application/mysql  #安装位置,也就是初始化软件install—db位置
    
     datadir = /data/3306/data  #mysql数据文件位置
    
     skip-external-locking
    
     key_buffer_size = 16M
    
     max_allowed_packet = 1M
    
     table_open_cache = 64
    
     sort_buffer_size = 512K
    
     net_buffer_length = 8K
    
     read_buffer_size = 256K
    
     read_rnd_buffer_size = 512K
    
     myisam_sort_buffer_size = 8M
    
     skip-name-resolve
    
     log-bin=/data/3306/mysql-bin
    
     binlog_format=mixed
    
     max_binlog_size = 500M
    
     server-id = 1
    
     [mysqld_safe]
    
     log-error=/data/3306/mysql_3306.err
    
     	pid-file=/data/3306/mysql.pid
    
     [mysqldump]
    
     	quick
      
     max_allowed_packet = 16M
    
     [mysql]
    
     	no-auto-rehash
    
     [myisamchk]
    
     key_buffer_size = 20M
    
     sort_buffer_size = 20M
    
     read_buffer = 2M
    
     write_buffer = 2M
    
     [mysqlhotcopy]
    
     interactive-timeout
    

以上是实例3306的my.cnf配置文件,现在我们来配置实例3307的my.cnf。实例3307的配置文件my.cnf我们直接复制实例3306的my.cnf文件,然后通过sed命令把该文件中的3306修改为3307即可。如下:

	cp /data/3306/my.cnf /data/3307/my.cnf

	sed -i 's/3306/3307/g' /data/3307/my.cnf

配置完成后/data目录结构

 tree /data/
/data/
 ├── 3306
    │   ├── data
   │   └── my.cnf
└── 3307
       ├── data
      └── my.cnf
  • 修改mysql实例的数据库目录权限

     chown -R mysql.mysql /data 
     touch //data/3306/mysql_3306.err #创建错误日志目录
     touch //data/3307/mysql_3307.err #创建错误日志目录
    
  • 初始化数据库
    初始化是为了创建基础数据库文件
    mysql-5.1XX初始化路径在/mysql/bin/*目录下
    mysql5.5在/mysql/scripts/*目录下

     /home/application/mysql/scripts/mysql_install_db --basedir=/home/application/mysql --datadir=/data/3306/data --user=mysql   #初始化3306
     
     /home/application/mysql/scripts/mysql_install_db --basedir=/home/application/mysql --datadir=/data/3307/data --user=mysql      #初始化3307
    
  • 启动mysql5.5多实例
    这里要指定不同配置文件的位置

     /home/application/mysql/bin/mysqld_safe  --defaults-file=/data/3306/my.cnf & 
    /home/application/mysql/bin/mysqld_safe  --defaults-file=/data/3307/my.cnf & 
    
  • 查看启动状态

    netstat -lnutp |grep 330[6-7]
    tcp        0      0 0.0.0.0:3306                0.0.0.0:*                   LISTEN      4111/mysqld         
    tcp        0      0 0.0.0.0:3307                0.0.0.0:*                   LISTEN      4442/mysqld 
    
  • 登录mysql
    登录多实例数据库时,我们需要加入该实例的socket文件,才能正常登录。

     mysql -S /data/3306/mysql.sock  #这里要指定socket
     mysql -S /data/3307/mysql.sock
     mysql  -u root -p -S /data/3307/mysql.sock
     mysql -u root -p  -h 127.0.0.1 -p3307    # 远程登录方法,不需要指定socket
    
  • 设置登录密码

    mysqladmin -uroot password "123456" -S /data/3306/mysql.sock  
     mysqladmin -uroot password "123456" -S /data/3307/mysql.sock
    
  • 用密码登录

    mysql -uroot  -S /data/3306/mysql.sock  -p123456
    mysql -S /data/3307/mysql.sock  -p123456  #指定socket
    
  • 停止多实例

    mysqladmin -uroot -p123456  -S /data/3306/mysql.sock shutdown
    mysqladmin -uroot -p123456  -S /data/3307/mysql.sock shutdown
     killall mysqld 
    

猜你喜欢

转载自blog.csdn.net/weixin_44596822/article/details/92965260