mysql 安装及多实例部署

背景

由于项目要求,需要在一台服务器上面安装mysql,并部署多个mysql实例。

该文章主要介绍ubuntu环境下面,mysql的安装,以及启动mysql多实例方法


环境信息

操作系统             ubuntu   14.04   64位

数据库目标版本  mysql  5.6.16

mysql 实例数      2个

mysql 实例端口  13306 13307


安装mysql

建议:请使用非root用户安装,以下安装过程中需要root权限时,用sudo执行


增加mysql用户及组

groupadd mysql
useradd -r -g mysql mysql


下载mysql安装包

$ cd /workspace/src 
$ wget  http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.16.tar.gz


编译安装msyql

$ tar zxvf mysql-VERSION.tar.gz
$ cd mysql-VERSION
$ cmake .
$ make
$ make install

更新目录权限

$ cd /usr/local/mysql
$ sudo chown -R mysql .
$ sudo chgrp -R mysql .


至此,mysql的安装过程已经完成


启动mysql多实例


mysql的多实例有两种方式可以实现,两种方式各有利弊。
第一种:

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

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


考虑到多实例之间的启动不受影响,因此本该采用第一种方式启动mysql多实例


启动实例

为数据库实例创建data目录,并修改目录组权限

$ cd /data

$ sudo mkdir mysql_13306

$ sudo mkdir mysql_13307

$ sudo chown mysql:mysql -R /data


初始化数据库


$ cd /usr/local/mysql/scripts

$ sudo ./mysql_install_db --basedir=/usr/local/mysql --datadir=/data/mysql_13306

$ sudo ./mysql_install_db --basedir=/usr/local/mysql --datadir=/data/mysql_13307



为两个实例新增my.cnf配置文件

首先为13306的实例增加my.cnf配置文件

$ cd /data/mysql_13306

$ sudo vim my.cnf

其中内容如下


# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.6/en/server-configuration-defaults.html

[mysql]

# CLIENT #
port                             = 13306
socket                         = /data/mysql_13306/mysqld.sock

[mysqld]

# GENERAL #

# 特别注意的是这一句,port = 13306 的,如果这句不写,mysqld会默认在3306端口启动实例,也就是说,如果要启动多实例,但

# 在多个实例的配置文件中,都没有配置这个参数,就会使用默认的3306端口,这样第一个实例启动后,就会将3306端占用,第二个

# 及以后的实例启动时,因为3306端口被占用,所以无法成功启动多实例

port                                      = 13306

user                                     = mysql
default-storage-engine        = InnoDB
socket                                  = /data/mysql_13306/mysqld.sock
pid-file                                 = /data/mysql_13306/mysql.pid

# MyISAM #
key-buffer-size                     = 32M
myisam-recover                   = FORCE,BACKUP

# SAFETY #
max-allowed-packet             = 16M
max-connect-errors             = 1000000

# DATA STORAGE #
datadir                                 = /data/mysql_13306

# BINARY LOGGING #
log-bin                                 = /data/mysql_13306/mysql-bin
expire-logs-days                 = 14
sync-binlog                         = 1

# CACHES AND LIMITS #
tmp-table-size                     = 32M
max-heap-table-size           = 32M
query-cache-type                = 0
query-cache-size                = 0
max-connections                = 500
thread-cache-size               = 50
open-files-limit                    = 65535
table-definition-cache         = 1024
table-open-cache               = 2048


# INNODB #
innodb-flush-method                = O_DIRECT
innodb-log-files-in-group          = 2
innodb-log-file-size                  = 512M
innodb-flush-log-at-trx-commit = 1
innodb-file-per-table                 = 1
innodb-buffer-pool-size            = 1G


# LOGGING #
log-error                                    = /data/mysql_13306/mysql-error.log
log-queries-not-using-indexes  = 1
slow-query-log                          = 1
slow-query-log-file                     = /data/mysql_13306/mysql-slow.log


为13307实例增加my.cnf配置文件

$ cd /data/mysql_13307

$ sudo vim my.cnf   

其中内容和上面的一样,只是将上面配置文件中所有的13306修改为13307即可





为13306,13307两个实例创建自动启动脚本

$ cd /data/mysql_13306

$ sudo vim mysqld

#!/bin/bash
mysql_port=13306
mysql_username="root"
mysql_password=""


#启动mysql
function_start_mysql()
{
  printf "Starting MySQL...\n"
  /bin/sh /usr/local/mysql/bin/mysqld_safe --defaults-file=/data/mysql_${mysql_port}/my.cnf 2>&1 > /dev/null &
}


#停止mysql
function_stop_mysql()
{
  printf "Stoping MySQL...\n"
  /usr/local/mysql/bin/mysqladmin -u ${mysql_username} -p${mysql_password} -S /data/mysql_${mysql_port}/mysqld.sock shutdown
}


#重新启动mysql
function_restart_mysql()
{
  printf "Restarting MySQL...\n"
  function_stop_mysql
  function_start_mysql
}


#Kill mysql
function_kill_mysql()
{
  kill -9 $(ps -ef | grep 'bin/mysqld_safe' | grep ${mysql_port} | awk '{printf $2}')
  kill -9 $(ps -ef | grep 'libexec/mysqld' | grep ${mysql_port} | awk '{printf $2}')
}

case $1 in
  start)
  function_start_mysql;;
  stop)
  function_stop_mysql;;
  kill)
  function_kill_mysql;;
  restart)
  function_stop_mysql
  function_start_mysql;;
*)


echo "Usage: /data/mysql_${mysql_port}/mysqld {start|stop|restart|kill}";;
esac


#为mysqld增加执行权限

$ sudo chmod 700 mysqld


为13307实例增加自动启动脚本

$ cd /data/mysql_13307

$ sudo vim mysqld

#mysql_13307目录下面的,mysqld内容和上面的内容一致,只是将13306修改为13307即可

$ sudo chmod 700 mysqld


启动13306,13307实例

$ sudo /data/mysql_13306/mysqld start

$ sudo /data/mysql_13307/mysqld start


设置mysql的root密码


$ /usr/local/mysql/bin/mysql -uroot -p -S /data/mysql_13306/mysql.sock

# 默认情况下安装的mysql root密码为空,在以下命令中设置mysql用户的root密码
 mysql>SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpassword');


也可以用如下方式设置root密

$ /usr/local/mysql/bin/mysqladmin -uroot password 'password' -S /data/mysql_13306/mysqld.sock

$ /usr/local/mysql/bin/mysqladmin -uroot password 'password' -S /data/mysql_13307/mysqld.sock


更改环境变量

$ sudo vim /etc/profile 

#添加下面一行内容
$ sudo PATH=${PATH}:/usr/local/mysql/bin/
$ sudo source /etc/profile


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值