什么是多实例:

一台机器上开启不同的端口,运行多个mysql进程来提供服务

多实例关系:

公用一套mysql安装程序,使用相同(也可以不同)的my.cnf配置文件、启动程序、数据文件,在提供服务时,多实例mysql在逻辑上看来是独自独立的,多个实例的自身是很据配置文件对应的设定值,来取得服务器的相关硬件资源多少。

nginxapacheredismemcache都可以实现)

为什么使用多实例:

最重要的就是节约资源,可以提供更多的服务(并发访问不大的业务);比如没钱的公司;

mysql多实例的劣势:

当某个服务实例并发很高或者查询慢时,整个实例会消耗整个主机更多的内存、cpu、磁盘io资源,导致服务器上其它的实例提供的服务质量下降,从而影响业务。

 

注意:这里的多实例使用的是多个配置文件,其中的data是数据目录,安装之前确保本机没有安装mysql或者mysql没有起动,最好直接干掉。

 

1、解决依赖关系:
    yum install ncurses-devel -y
    yum install libaio-devel -y
2、创建用户和组;
    groupadd mysql
    useradd -s /sbin/nologin -g mysql -M mysql
3、创建配置文件目录
    mkdir /data/{3306,3307}/data -p
     tree /data                     
    /data
    |-- 3306
    |   `-- data
    `-- 3307
             -- data

    4 directories, 0 files


    #data是数据文件。
4、 解压、拷贝配置文件(见附件data.zip),且授权;
    chown -R mysql.mysql /data/
    find /data/ -type f -name "mysql" | xargs chmod +x


5、初始化数据库

   cd /application/mysql/scripts/
   ./mysql_install_db --user=mysql --datadir=/data/3306/data/ --basedir=/application/mysql/

    OK
    Filling help tables...
    OK  

    #表示成功!

    #mysql5.1和5.5初始化的命令路径不相同;

    #初始化的目的就是创建基础的数据文件,例如生产mysql库表等。

     ./mysql_install_db --user=mysql --datadir=/data/3307/data/ --basedir=/application         /mysql/
6、启动数据库:  /data/3306/mysql start
                          /data/3307/mysql start
         查看: ss -lnt|grep 330
-------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
7、启动:
    /data/3306/mysql start                             

    Starting MySQL...
    /data/3307/mysql start
    Starting MySQL...
    端口查看:ss -lntup |grep mysql

 

    启动的实质:mysql_safe -defaults=/data/3306/my.cnf  2>&1  /dev/null  就是制定了配置文件

    停止的实质:mysqladmin -uroot -p‘PASSWD’  -S /data/3306/my.cnf 2>&1 /dev/null

8、开机自启动
     echo "#mysql multi instances" >>/etc/rc.local
     echo "/data/3306/mysql start" >>/etc/rc.local
     echo "/data/3307/mysql start" >>/etc/rc.local 

9、登录: 本地:mysql -S /data/3306/mysql.sock

                远程:mysql -uroot -p‘passwd’  -P3308 -h localhost     


排查: 

1、查看端口的时候,如果么有,稍微等一下,启动的比较慢(10秒),比较重;

2、配置文件中有log_error ,看错误日志;

3、查看命令执行返回的输出;

4、查看系统的log。



备注:使用附件提供的多实例配置文件创建多实例时要注意修改配置文件的端口号和登录密码;tmp目录的权限不要随意修改(权限为1777)。

-----------------------------------------------------------------------------------------
排查:端口慢 lsof -i :3306,

      观察日志错误;

      细看所有执行命令返回的输出,

      查看/var/log/message
-------------------------------------------------------------------------------------------
错误:
141101 18:14:51 mysqld_safe The file /usr/local/mysql/bin/mysqld
does not exist or is not executable. Please cd to the mysql installation
directory and restart this script from there as follows:
./bin/mysqld_safe&
See http://dev.mysql.com/doc/mysql/en/mysqld-safe.html for more information解决:

解决

sed -i 's#/usr/local/mysql/#/application/mysql#g' /application/mysql/bin/mysqld_safe
sed -i 's#/application/mysql#/application/mysql/#g' /application/mysql/bin/mysqld_safe

-------------------------------------------------------------------------------------------

如果遇到环境变量的问题时:

      w        which + 错误

         echo $PATH

  echo "export PATH=/application/mysql/bin:$PATH">>/etc/profile

  ./etc/profile

或者cp -ap /application/mysql/bin/* /usr/local/sbin/

-------------------------------------------------------------------------------------------







问题记录: 初始化数据库时

./scripts/mysql_install_db  --user=mysql --basedir=/application/mysql --datadir=/application/mysql/data/    注意顺序,注意data授权mysql,注意指定用户mysql