MySQL多实例配置(一)

    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/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   : http://blog.csdn.net/leshami

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

5、启动关闭多实例   suse11:~ # mysqld_multi report   Reporting MySQL servers   MySQL server from group: mysqld3306 is not running   MySQL server from group: mysqld3406 is not running   MySQL server from group: mysqld3506 is not running   suse11:~ # mysqld_multi start 3306   suse11:~ # mysqld_multi start 3406,3506     #可以同时启动多个实例   suse11:~ # netstat -ntlp  | grep mysql   tcp        0      0 :::3306                 :::*                    LISTEN      14786/mysqld          tcp        0      0 :::3406                 :::*                    LISTEN      15103/mysqld          tcp        0      0 :::3506                 :::*                    LISTEN      15371/mysqld   suse11:/tmp # ls *.sock   mysql3306.sock  mysql3406.sock  mysql3506.sock #为新实例修改密码及创建账户   suse11:/tmp # mysql -uroot -pxxx -S ./mysql3306.sock  #3306已经有初始密码 root@localhost[(none)]> grant shutdown on *.* to 'admin'@'localhost' identified by 'xxx' with grant option;   suse11:/tmp # mysql -uroot -p -S ./mysql3406.sock   Enter password:  #此时密码为空 root@localhost[(none)]> set password for 'root'@'localhost'=password('xxx'); root@localhost[(none)]> grant shutdown on *.* to 'admin'@'localhost' identified by 'xxx' with grant option;   suse11:/tmp # mysql -uroot -p -S ./mysql3506.sock   Enter password:  #此时密码为空 root@localhost[(none)]> set password for 'root'@'localhost'=password('xxx'); root@localhost[(none)]> grant shutdown on *.* to 'admin'@'localhost' identified by 'xxx' with grant option;

#使用TCP方式登录测试   suse11:/tmp # mysql -uroot -pxxx -P3506 root@localhost[(none)]> #检查多实例的状态   suse11:/tmp # mysqld_multi report   Reporting MySQL servers   MySQL server from group: mysqld3306 is running   MySQL server from group: mysqld3406 is running   MySQL server from group: mysqld3506 is running

#停止多实例服务器   suse11:~ # mysqld_multi stop 3306   suse11:~ # mysqld_multi report 3306   Reporting MySQL servers   MySQL server from group: mysqld3306 is not running   suse11:~ # mysqld_multi stop 3406   suse11:~ # mysqld_multi stop 3506

#多实例服务器的日志   suse11:~ # tail /u01/app/mysql/share/mysqld_multi.log   Stopping MySQL servers   Warning: Using a password on the command line interface can be insecure.   141017 23:40:09 mysqld_safe mysqld from pid file /u01/app/mysqldata/data3406/mysql3406.pid ended   mysqld_multi log file version 2.16; run: Fri Oct 17 23:40:09 2014   Stopping MySQL servers   Warning: Using a password on the command line interface can be insecure.   141017 23:40:11 mysqld_safe mysqld from pid file /u01/app/mysqldata/data3506/mysql3506.pid ended #一次启动多个实例   suse11:~ # mysqld_multi start 3306-3506   suse11:~ # mysqld_multi report   Reporting MySQL servers   MySQL server from group: mysqld3306 is running   MySQL server from group: mysqld3406 is running   MySQL server from group: mysqld3506 is running

6、配置多实例的自启动   # echo "/u01/app/mysql/bin/mysqld_multi start 3306-3506" >>/etc/init.d/boot.local

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏醉梦轩

Ubuntu 16.04 部署MySQL服务

MySQL是一款开源的关系型数据库管理系统,大量公司都在使用它,或是在它的基础上做二次开发。有时,我们会需要在Linux系统上部署MySQL服务用于测试。

11710
来自专栏日常分享

Oracle常用数据库系统表单以及SQL的整理

  因为最近涉及到了一些数据库的归档,备份等工作,所以一部分的重心放在了数据库上,毕竟之前对数据库的了解也只停留在了一般的建表,查询,最多最多再写一写触发器之类...

16310
来自专栏张善友的专栏

SQL Server : Browser服务

SQL Server : Browser服务是SQL Server 2005新增的,简单的说,如果一个物理服务器上面有多个SQL Server实例,那么为了确保...

23850
来自专栏窗户

C语言/原子/编译,你真的明白了吗?

  说到原子,类似于以下的代码可能人人都可以看出猫腻。 /* http://www.cnblogs.com/Colin-Cai */ #include <std...

23390
来自专栏全栈架构

elasticsearch5xx使用logstash同步mysql

下载地址:https://www.elastic.co/downloads/logstash

10140
来自专栏散尽浮华

Mysql备份系列(1)--备份方案总结性梳理

mysql数据库备份有多么重要已不需过多赘述了,废话不多说!以下总结了mysql数据库的几种备份方案: 一、binlog二进制日志通常作为备份的重要资源,所以再...

80990
来自专栏乐沙弥的世界

MySQL 修改用户密码及重置root密码

    为数据库用户修改密码是DBA比较常见的工作之一。对于MySQL用户账户的密码修改,有几种不同的方式,推荐的方式使用加密函数来修改密码。本文主要描述了通过...

59920
来自专栏流媒体

Linux下Mysql安装配置

安装包 这里以centos 6.8 为例。下载Bundle包。然后解压:

18010
来自专栏数据和云

经典故障分析 -用好UTL_FILE包其实并不是太容易

作者介绍 ? 崔华 网名 dbsnake Oracle ACE Director,ACOUG 核心专家 UTL_FILE包可以用来读写操作系统上的文本文件...

38590
来自专栏Java成神之路

mysql_异常_01_Access denied for user 'root'@'192.168.1.13' (using password: YES)

使用navicat premuim 连接 虚拟机mysql数据库时 ,抛出如下错误:

10630

扫码关注云+社区

领取腾讯云代金券