MySQL多实例配置(二)

简介:     MySQL数据库的集中化运维,可以通过在一台MySQL数据库服务器上,部署多个MySQL实例。该功能是通过mysqld_multi来实现。mysqld_multi用于管理多个mysqld的服务进程,这些mysqld服务进程程序可以用不同的socket或是监听于不同的端口,同时将数据文件分布到不同的磁盘以分散IO。

    MySQL数据库的集中化运维,可以通过在一台MySQL数据库服务器上,部署多个MySQL实例。该功能是通过mysqld_multi来实现。mysqld_multi用于管理多个mysqld的服务进程,这些mysqld服务进程程序可以用不同的socket或是监听于不同的端口,同时将数据文件分布到不同的磁盘以分散IO。mysqld_multi提供简单的命令用于启动,关闭和报告所管理的服务器的状态。从而减少生产环境的维护成本,方便后续的迁移和清理等工作,借助多实例绑定的方式提高服务器的整体资源利用率.对于多实例的配置有2种方式,一种是在my.cnf为所有实例提供配置,一种是使用每一个实例一个配置文件。本文主要描述第二种方式。
  第一种多实例配置方式请参考:MySQL多实例配置(一)
  有关MySQL单实例的安装请参考:Linux 下MySQL源码安装完整版
  

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/data3606  
  suse11:~ # mkdir -p /u01/app/mysqldata/data3706
  suse11:~ # chown mysql:mysql -R /u01/app/mysqldata/data3606
  suse11:~ # chown mysql:mysql -R /u01/app/mysqldata/data3706
  
  #初始化实例
  suse11:~ # cd /u01/app/mysql
  suse11:/u01/app/mysql # ./scripts/mysql_install_db --user=mysql --ldata=/u01/app/mysqldata/data3606/
  suse11:/u01/app/mysql # ./scripts/mysql_install_db --user=mysql --ldata=/u01/app/mysqldata/data3706/
  # Author : Leshami
  # Blog   :
http://blog.csdn.net/leshami

 

4、配置各实例的my.cnf文件
  # vi /u01/app/mysqldata/data3606/my3606.cnf
  
  [mysqld]
  socket = /tmp/mysql3606.sock 
  port = 3606
  pid-file = /u01/app/mysqldata/data3606/mysql3606.pid
  datadir = /u01/app/mysqldata/data3606
  basedir = /u01/app/mysql
  user = mysql
  server-id=3606
  [client]
  port = 3606
  socket = /tmp/mysql3606.sock 
  
  [mysql]
  no-auto-rehash
  socket = /tmp/mysql3606.sock 
  prompt=\\u@\\h[\\d]> \\
  
  # vi /u01/app/mysqldata/data3706/my3706.cnf
  
  [mysqld]
  socket = /tmp/mysql3706.sock 
  port = 3706
  pid-file = /u01/app/mysqldata/data3706/mysql3706.pid
  datadir = /u01/app/mysqldata/data3706
  basedir = /u01/app/mysql
  user = mysql
  server-id=3706
  [client]
  port = 3706
  socket = /tmp/mysql3706.sock 
  
  [mysql]
  no-auto-rehash
  socket = /tmp/mysql3706.sock
  prompt=\\u@\\h[\\d]> \\
  
  suse11:~ # chown -R mysql:mysql /u01/app/mysqldata/data3606/my3606.cnf
  suse11:~ # chown -R mysql:mysql /u01/app/mysqldata/data3706/my3706.cnf

 

5、启动关闭多实例
  suse11:~ # mysqld_safe --defaults-file=/u01/app/mysqldata/data3606/my3606.cnf &
  suse11:~ # mysqld_safe --defaults-file=/u01/app/mysqldata/data3706/my3706.cnf &  
  suse11:~ # netstat -nltp|grep mysql
  tcp        0      0 :::3606                 :::*                    LISTEN      64277/mysqld       
  tcp        0      0 :::3706                 :::*                    LISTEN      64597/mysqld 
  
  suse11:~ # mysqladmin -uroot password 'xxx' -S /tmp/mysql3606.sock
  suse11:~ # mysqladmin -uroot password 'xxx' -S /tmp/mysql3706.sock
  
  #下面使用套接字方式连接到实例
  suse11:~ # mysql -uroot -pxxx -S /tmp/mysql3606.sock
  
root@localhost[(none)]>
  
  suse11:~ # mysql -uroot -pxxx -S /tmp/mysql3706.sock
  
root@localhost[(none)]>
  
  #下面使用TCP方式连接到实例
  suse11:~ # mysql -uroot -pxxx -P3606 --protocol=tcp
  
root@localhost[(none)]> exit
  
  suse11:~ # mysql -uroot -pxxx -P3706 --protocol=tcp
  
root@localhost[(none)]>
  
  #关闭mysql实例
  suse11:~ # mysqladmin -uroot -pxxx -S /tmp/mysql3606.sock shutdown
  suse11:~ # mysqladmin -uroot -pxxx -S /tmp/mysql3706.sock shutdown

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
目录
相关文章
|
SQL 存储 缓存
MySQL多实例
MySQL多实例
223 0
|
关系型数据库 MySQL 数据库
MySQL 多版本多实例
MySQL 多版本多实例
|
关系型数据库 MySQL Linux
MySQL 同版本多实例
MySQL 同版本多实例
|
存储 SQL Oracle
源代码编译安装 MySQL 和多实例| 学习笔记
快速学习源代码编译安装 MySQL 和多实例
|
JSON 监控 关系型数据库
zabbix低自动发现--监控mysql多实例(二十九)
zabbix低级自动发现监控mysql多实例 1.低级自动发现概念 低级自动发现本身就是一个key,在这个自动发现规则中包含有很多个监控原型,这些的监控原型都是依靠于自动发现规则根据各种过滤器最后匹配到的结果进行监控 低级自动发现经常适用于在同一台机器上有很多重复的监控项,人工操作非常繁重,这时候就可以配置一个低级自动发现,将自动发现做成模板,让对应的主机进行链接,经过一段时间的扫描后会自动的加入到监控中
846 0
zabbix低自动发现--监控mysql多实例(二十九)
|
关系型数据库 MySQL 数据安全/隐私保护
MySQL 多实例的安装
MySQL 多实例的安装Step 1 . 准备工作关闭防火墙; 安装 MySQL依赖于libaio 库;下载,解压,重命名 MySQL的执行文件;新建用户组和用户 等准备工作在此不再赘述。 可执行文件目录为 /data/mysql57 添加用户和组的指令 groupadd mysql useradd mysql -g mysql Step 2 . 添加环境变量在/etc/profile文件中,追加 PATH=${PATH}:/data/mysql57/bin/ 保存后,如需要立即生效,可执行 source /etc/profile 。
1738 0
|
关系型数据库 MySQL 数据库
Amazon EC2安装mysql多实例并配置主从复制
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq1010885678/article/details/47955717 1、My...
1699 0
|
SQL 运维 关系型数据库
Mysql 多实例配置实践(学习笔记三)
其实Mysql多实例就是在一个 mysql 服务上面启动三个实例,相当于三个分离开来的数据库,至于为什么要做这个,你也可以选择分别安装三个MySQL,只是过于麻烦,多实例中只需要一个配置档my.cnf,并且通过mysql_330x.sock 便于管理数据库。
1361 0
|
关系型数据库 MySQL Linux
MySQL 多实例安装
在生产中有时候会遇到一台主机要运行多个MySQL服务器----叫做多实例 下面演示多实例的安装 首先我们规划下 基于二进制安装 1、创建mysql用户 useradd -r -s /sbin/nologin -d /app/mysql -m mysql # # 2、解压下载的二进制mariadb包 tar xvf mariadb-10.
1824 0
|
Web App开发 关系型数据库 MySQL
Mysql 数据库单机多实例部署手记
最近的研发机器需要部署多个环境,包括数据库。为了管理方便考虑将mysql数据库进行隔离,即采用单机多实例部署的方式。找了会资料发现用的人也不是太多,一般的生产环境为了充分发挥机器性能都是单机单实例运行,再进行一系列的配置调优.
1266 0

推荐镜像

更多