您好,欢迎访问一九零五行业门户网

MySQL多实例配置详解

mysql数据库的集中化运维,可以通过在一台mysql数据库服务器上,部署多个mysql实例。该功能是通过mysqld_multi来实现。mysqld_mu
mysql数据库的集中化运维,可以通过在一台mysql数据库服务器上,部署多个mysql实例。该功能是通过mysqld_multi来实现。mysqld_multi用于管理多个mysqld的服务进程,这些mysqld服务进程程序可以用不同的socket或是监听于不同的端口,同时将数据文件分布到不同的磁盘以分散io。mysqld_multi提供简单的命令用于启动,关闭和报告所管理的服务器的状态。从而减少生产环境的维护成本,方便后续的迁移和清理等工作,借助多实例绑定的方式提高服务器的整体资源利用率。对于多实例的配置有2种方式,一种是在my.cnf为所有实例提供配置,一种是使用每一个实例一个配置文件。本文主要描述第一种方式。
  第二种多实例配置方式请参考:mysql多实例配置(二)
  有关mysql单实例的安装请参考:linux 下mysql源码安装完整版
--------------------------------------分割线 --------------------------------------
ubuntu 14.04下安装mysql
《mysql权威指南(原书第2版)》清晰中文扫描版 pdf
ubuntu 14.04 lts 安装 lnmp nginx\php5 (php-fpm)\mysql
ubuntu 14.04下搭建mysql主从服务器
ubuntu 12.04 lts 构建高可用分布式 mysql 集群
ubuntu 12.04下源代码安装mysql5.6以及python-mysqldb
mysql-5.5.38通用二进制安装
--------------------------------------分割线 --------------------------------------
1、各数据库多实例的差异
  mssql
      mssql中的实例指的是一个sql server服务器上仅有一个缺省实例。缺省实例名即为机器名servername(或ip)。
      如果在同一台机器上再安装sql server,,我们可以对实例命名如servername/instancename。
      即一台sql server服务器上可以存在多个不同的实例。一个实例下可以存在多个不同的数据库。
      对于不同实例下的数据库的访问,使用servername/instancename:portno即可实现访问,缺省实例为servername:portno。
      对不同的实例配置ip地址,相关的访问协议,端口等等。
      实例的可访问性需要启动该实例对应的相关服务。此处需要注意的是实例名和实例的服务名并不是相同的。
      缺省的实例的服务名为mssqlserver,而命名实例的服务名为mssql$instance_name。
oracle 
      一个oracle server由一个oracle实例和一个oracle数据库组成。即:oracle server = oracle instance + oracle database
      在oracle的实例主要是由sga,pga以及一堆的后台进程来组成,此称之为实例。
      一系列物理文件的集合包括控制文件、数据文件、联机日志文件、参数文件、密码文件等称之为数据库。
      一个实例只能访问一个数据库,一个数据库可以被多个实例访问。
mysql
      mysql实例的概念与mssql差不多,一个mysql实例下可以存在或访问n个数据库。
      不同的实例间可以用不同的端口号来区分,各个实例的数据可以使用不同的磁盘目录。
      mysql多实例通过mysqld_multi工具来进行管理。
2、现有的环境
  mysql安装路径: /u01/app/mysql
  mysql数据路径: /u01/app/mysqldata/data3306
  mysql端口号: 3306
  mysql  版本:5.6.12 source distribution
  os    环境:suse linux enterprise server 11 sp3  (x86_64)
3、初始化实例
  #为新实例创建数据目录并赋权
  suse11:~ # mkdir -p /u01/app/mysqldata/data3406 
  suse11:~ # mkdir -p /u01/app/mysqldata/data3506
  suse11:~ # chown mysql:mysql -r /u01/app/mysqldata/data3406
  suse11:~ # chown mysql:mysql -r /u01/app/mysqldata/data3506
#初始化实例
  suse11:~ # cd /u01/app/mysql
  suse11:/u01/app/mysql # ./scripts/mysql_install_db --user=mysql --ldata=/u01/app/mysqldata/data3406/
  suse11:/u01/app/mysql # ./scripts/mysql_install_db --user=mysql --ldata=/u01/app/mysqldata/data3506/
  # author : leshami
  # blog  :
4、修改配置文件
  suse11:~ # more /etc/my.cnf        #本配置文件中仅提供了多实例的基本参数,生产环境根据情形自行添加
  [mysqld_multi]
  mysqld = /u01/app/mysql/bin/mysqld_safe
  mysqladmin = /u01/app/mysql/bin/mysqladmin
  user = admin      #此帐户用于多实例关闭时使用,需要在每个实例上创建并授权
  password = xxx    #使用统一的密码便于管理
[mysqld3306]
  socket = /tmp/mysql3306.sock
  port = 3306
  pid-file = /u01/app/mysqldata/data3306/mysql3306.pid
  datadir = /u01/app/mysqldata/data3306
  basedir = /u01/app/mysql
  user = mysql
  server-id=3306
[mysqld3406]
  socket = /tmp/mysql3406.sock
  port = 3406
  pid-file = /u01/app/mysqldata/data3406/mysql3406.pid
  datadir = /u01/app/mysqldata/data3406
  basedir = /u01/app/mysql
  user = mysql
  server-id=3406
[mysqld3506]
  socket = /tmp/mysql3506.sock
  port = 3506
  pid-file = /u01/app/mysqldata/data3506/mysql3506.pid
  datadir = /u01/app/mysqldata/data3506
  basedir = /u01/app/mysql
  user = mysql
  server-id=3506
其它类似信息

推荐信息