linux下mysql多实例安装

1.MySQL多实例介绍

1.1.什么是MySQL多实例

MySQL多实例就是在一台机器上开启多个不同的服务端口(如:3306,3307),运行多个MySQL服务进程,通过不同的socket监听不同的服务端口来提供各自的服务:;

1.2.MySQL多实例的特点有以下几点

1:有效利用服务器资源,当单个服务器资源有剩余时,可以充分利用剩余的资源提供更多的服务。

2:节约服务器资源

3:资源互相抢占问题,当某个服务实例服务并发很高时或者开启慢查询时,会消耗更多的内存、CPU、磁盘IO资源,导致服务器上的其他实例提供服务的质量下降;

1.3.部署mysql多实例的两种方式

第一种是使用多个配置文件启动不同的进程来实现多实例,这种方式的优势逻辑简单,配置简单,缺点是管理起来不太方便;

第二种是通过官方自带的mysqld_multi使用单独的配置文件来实现多实例,这种方式定制每个实例的配置不太方面,优点是管理起来很方便,集中管理;

1.4.同一开发环境下安装两个数据库,必须处理以下问题

  • 配置文件安装路径不能相同
  • 数据库目录不能相同
  • 启动脚本不能同名
  • 端口不能相同
  • socket文件的生成路径不能相同

2.Mysql多实例安装部署

2.1.部署环境

Red Hat Enterprise Linux Server release 6.4

2.2.安装mysql软件版本

2.2.1.免编译二进制包

mysql-5.6.21-linux-glibc2.5-x86_64.tar.gz

2.3.解压和迁移

tar -xvf mysql-5.6.21-linux-glibc2.5-x86_64.tar.gz

mv mysql-5.6.21-linux-glibc2.5-x86_64 /usr/local/mysql

2.4.关闭iptables

临时关闭:service iptables stop 

永久关闭:chkconfig iptables off

2.5.关闭selinux

vi /etc/sysconfig/selinux  

将SELINUX修改为DISABLED,即SELINUX=DISABLED 

临时关闭:

[root@localhost ~]# setenforce 0
[root@localhost ~]# getenforce

2.6.创建mysql用户

groupadd -g 27 mysql

useradd -u 27 -g mysql mysql

id mysql

uid=501(mysql) gid=501(mysql) groups=501(mysql)

2.7.创建相关目录

mkdir -p /data/mysql/ {mysql_3306,mysql_3307}

mkdir /data/mysql/mysql_3306/ {data,log,tmp}

mkdir /data/mysql/mysql_3307/ {data,log,tmp}

2.8.更改目录权限

chown -R mysql:mysql /data/mysql/ 

chown -R mysql:mysql /usr/local/mysql/

2.9. 添加环境变量

echo 'export PATH=$PATH:/usr/local/mysql/bin' >>  /etc/profile 

source /etc/profile  

2.10.复制my.cnf文件到etc目录

cp /usr/local/mysql/support-files/my-default.cnf /etc/my.cnf

2.11.修改my.cnf(在一个文件中修改即可)

[client]  

port=3306  

socket=/tmp/mysql.sock  

 

[mysqld_multi]  

mysqld = /usr/local/mysql /bin/mysqld_safe  

mysqladmin = /usr/local/mysql /bin/mysqladmin  

log = /data/mysql/mysqld_multi.log  

 

[mysqld]  

user=mysql  

basedir = /usr/local/mysql  

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES  

 

[mysqld3306]  

mysqld=mysqld  

mysqladmin=mysqladmin  

datadir=/data/mysql/mysql_3306/data  

port=3306  

server_id=3306  

socket=/tmp/mysql_3306.sock  

log-output=file  

slow_query_log = 1  

long_query_time = 1  

slow_query_log_file = /data/mysql/mysql_3306/log/slow.log  

log-error = /data/mysql/mysql_3306/log/error.log  

binlog_format = mixed  

log-bin = /data/mysql/mysql_3306/log/mysql3306_bin  

   

[mysqld3307]  

mysqld=mysqld  

mysqladmin=mysqladmin  

datadir=/data/mysql/mysql_3307/data  

port=3307  

server_id=3307  

socket=/tmp/mysql_3307.sock  

log-output=file  

slow_query_log = 1  

long_query_time = 1  

slow_query_log_file = /data/mysql/mysql_3307/log/slow.log  

log-error = /data/mysql/mysql_3307/log/error.log  

binlog_format = mixed  

log-bin = /data/mysql/mysql_3307/log/mysql3307_bin

2.12. 初始化数据库

2.12.1. 初始化3306数据库 

/usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql/ --datadir=/data/mysql/mysql_3306/data --defaults-file=/etc/my.cnf  

2.12.2. 初始化3307数据库 

/usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql/ --datadir=/data/mysql/mysql_3307/data --defaults-file=/etc/my.cnf  

初始化后查看mysql初始化密码并记录,默认密码在文件mysql_secret 中:

more /root/.mysql_secret

2.12.3. 检查数据库是否初始化成功

出现两个”OK”

 

 

 

 

 

 

 

2.12.4. 查看数据库是否初始化成功(2)

查看3306数据库

[root@mysql ~]# cd /data/mysql/mysql_3306/data

[root@mysql data]# ls

auto.cnf  ibdata1  ib_logfile0  ib_logfile1  mysql  mysql.pid  performance_schema  test

 

查看3307数据库

[root@mysql ~]# cd /data/mysql/mysql_3307/data

[root@mysql data]# ls

auto.cnf  ibdata1  ib_logfile0  ib_logfile1  mysql  mysql.pid  performance_schema  test

2.13.设置启动文件

cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql

2.14.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 stop 3306 

查看单个实例状态:/usr/local/mysql/bin/mysqld_multi report 3306 

2.14.1.启动全部实例

[root@mysql ~]# /usr/local/mysql/bin/mysqld_multi start

[root@mysql ~]# /usr/local/mysql/bin/mysqld_multi report

Reporting MySQL servers

MySQL server from group: mysqld3306 is running

MySQL server from group: mysqld3307 is running

通过mysqld_multi 停止实例如果停不掉,需要配置:

[root@mysql ~]# my_print_defaults mysqld_multi -s  mysqld3307

修改mysqld_multi的如下行

my $com= join ' ', 'my_print_defaults', @defaults_options, $group;

修改为

my $com= join ' ', 'my_print_defaults -s', @defaults_options, $group;
 

登陆mysql:

mysql -S /tmp/mysql_3306.sock  -p

登陆后修改密码:

SET PASSWORD = PASSWORD('mysql123');

grant all privileges on *.* to root@'%' identified by 'mysql123';

flush privileges;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值