zoukankan      html  css  js  c++  java
  • Ubuntu12.10安装多个Mysql5.5实例(一)

    本篇记录如何在一台机器上安装多个mysql 实例(这样做的好处暂不讨论,可以google)

    1.安装mysql 

    1)创建必要的用户,用户组(涉及到安全,不要用root安装,且mysql不允许直接sudo启动mysqld,必须指定--user=mysql)

    1 sudo groupadd mysql
    2 sudo useradd -r -g mysql mysql

    2)拷贝tar文件到某个目录,例如/opt下,并解压缩

    cd /opt
    sudo tar zxvf ~/download/mysql-5.x-linux-glibc2.5-x86_64.tar.gz 

    3)建立链接

    1 cd /usr/local  
    2 sudo ln -s /opt/mysql-5.x-linux-glibc2.5-x86_64 mysql  

    #同时建立到bin目录的链接  

    1 sudo ln -s /usr/local/mysql/bin/* /usr/local/bin/cd mysql
    2 sudo chown -R mysql .
    3 sudo chgrp -R mysql .

    4)安装db instance

    sudo mkdir -p /data/mysql/mysql01

     #存放第一个instance的pid,sock,data,依次类推,可以创建mysql02,03,...

     

    sudo chown mysql:mysql /data/mysql -R
    #保证mysql用户对
    /data/mysql以及其子目录的完全访问权限

    #执行下面的脚本会初始化第一个instance的数据库

    #在此之前,有可能需要安装libaio1,运行命令:

    sudo apt-get install libaio1 libaio-dev
    sudo scripts/mysql_install_db --user=mysql --datadir=/data/mysql/mysql01

    #为了安全起见,将全部目录的owner改回为root,除了data目录              

    1 sudo chown -R root .  
    2 sudo chown -R mysql data 

    #配置my.cnf,需要修改datadir,pid,socket等配置

    1 sudo cp support-files/my-medium.cnf /etc/mysql/my.cnf

    #配置服务

    sudo cp support-files/mysql.server /etc/init.d/mysql

    #启动

    #启动mysqlsudo service mysql start

    #执行下面的命令,可以验证该端口是否在监听

    sudo netstat -nltp | grep mysql

    2. 安装第二个db instance

    1)准备数据文件目录

    1 sudo mkdir -p /data/mysql/mysql02
    2 sudo chown mysql:mysql /data/mysql/mysql02

    2)初始化数据文件

    sudo scripts/mysql_install_db --user=mysql --datadir=/data/mysql/mysql02

    #配置第二个my.cnf,修改port=3307,以及对应的datadir,pid以及socket!!!

    3)配置cnf并启动

    sudo cp /etc/mysql/my.cnf /etc/mysql/my2.cnf

    #指定my.cnf启动instance

    sudo mysqld --defaults-file=/etc/mysql/my2.cnf --user=mysql

    4)修改root密码

    #执行下面的命令,可以验证该端口是否在监听

    sudo netstat -nltp | grep mysql

    #也可以通过ps -ef | grep mysql可以看到有两个instance在运行

    #通过mysqladmin指定root的初始密码

    sudo mysqladmin -uroot password 'passwd' --socket=/data/mysql/mysql02.sock

    5)验证刚刚安装的2个instance

    #不指定参数,默认端口3306,访问的是第一个instance

    mysql -uroot -p 

    #访问第二个instance需要指定socket

    mysql -uroot -p -S/data/mysql/mysql02.sock

    至此,单机安装多个mysql实例就差不多了,使用起来跟单机安装多个mysql数据库差别不大。

    3. 使用mysqld_multi完善安装

    1)创建新的my.cnf

    运行mysqld_multi --example可以获得一个多实例环境下的my.cnf样本,稍作修改如下:

    1 [mysqld_multi]
    2 mysqld     = /usr/local/mysql/bin/mysqld_safe
    3 mysqladmin = /usr/local/mysql/bin/mysqladmin

    #此处的用户名密码应该可以访问全部的instance,并具有shutdown的权限,这里简单起见直接用root了(部署时应该给每个instance创建一个该账户)

     1 user       = root
     2 password   = passwd 
     3 [mysqld1]
     4 pid-file   = /data/mysql/mysql01.pid
     5 socket     = /data/mysql/mysql01.sock
     6 port       = 3306datadir    = /data/mysql/mysql01
     7 user       = mysql
     8 log = /var/log/mysql/mysql01.log
     9 [mysqld2]
    10 pid-file   = /data/mysql/mysql02.pid
    11 socket     = /data/mysql/mysql02.sock
    12 port       = 3307
    13 datadir    = /data/mysql/mysql02
    14 user       = mysql
    15 log = /var/log/mysql/mysql02.log

    将该文件放在/etc/mysql/下,覆盖即可(原先的my.cnf和my2.cnf分别针对两个instance的,已经不需要了)

    2)启动多实例
    运行sudo mysqld_multi start 1,2可以同时启动mysqld1和mysqld2,可以支持 start 1, 3-4这样的表达式

    3)验证安装结果

    同2.5的步骤

    4. 继续添加第3个乃至第N个 instance

    1)停止全部的mysqld:

    sudo mysqld_multi stop (如果stop 1则只停止mysqld1这个instance,不加参数表示停止全部的instance)

    2)准备数据文件的目录

    1 sudo mkdir -p /data/mysql/mysql03
    2 sudo chown mysql:mysql /data/mysql/mysql03

    3)初始化(安装数据文件)

    sudo scripts/mysql_install_db --user=mysql --datadir=/data/mysql/mysql03

    #启动mysqld(与上面不同的时,这次直接指定参数,而不再配置my3.cnf,效果是一样的)

    1 sudo mysqld --port=3308 --datadir=/data/mysql/mysql03 --socket=/data/mysql/mysql03.sock --user=mysql

    #修改密码,保持与第1个和第2个instance相同的密码,以便mysqld_multi能启动/关闭

    sudo mysqladmin -uroot password 'passwd' --socket=/data/mysql/mysql03.sock

    #修改my.cnf,添加[mysqld3]的内容(仿照mysqld1,mysqld2即可)

    #重启,需要先kill掉之前启动的全部mysqld的进程

    sudo mysqld_multi start

    #运行sudo netstat -nltp | grep mysql应看到3306-3308均在listen中,

    同时分别运行

    1 mysql -uroot -p --socket=/data/mysql/mysql01.sock
    2 mysql -uroot -p --socket=/data/mysql/mysql02.sock
    3 mysql -uroot -p --socket=/data/mysql/mysql03.sock

    可以登录到各自的instance中

     

    Linux学习入门教程:进入

    Linux常用命令全集:进入

     

     

  • 相关阅读:
    消息中间件
    docker 安装elasticSearch6.7.1
    Curl实现ElasticSearch的增删改查
    docker 容器的mysql主从复制
    linux上docker安装centos7.2
    linux安装docker
    调用 CURL 使用正则抓取信息
    linux 一键安装lnmp环境
    laravel框架实现数据的删除和修改
    laravel 实现增 与查
  • 原文地址:https://www.cnblogs.com/alex96/p/12166173.html
Copyright © 2011-2022 走看看