一个服务器启动两个MySQL实例

来源:互联网 发布:淘宝上买狗狗可靠吗 编辑:程序博客网 时间:2024/06/06 02:06

在一台服务器上,可以通过mysqld_multi配置多个Mysql实例运行。

假设服务器上现在已经运行一个MYSQL实例,数据目录是/var/lib/mysql,端口是3306,所用的SOCKET连接文件位于/tmp/mysql.sock。那么可以按照如下步骤,再启动一个或者多个实例。

一,创建新实例的数据目录

新启动MySQL实例之后,其数据位于哪个目录,就是实例相关的数据库文件都准备放在哪个目录下,假定我把它们放在 /var/lib/mysql2 目录下。

mkdir /var/lib/mysql2   创建目录。

chown mysql:mysql /var/lib/mysql2  给mysql用户权限。

二,创建数据库

这一步是在刚刚建立的目录下面,初始化数据库。

bin/mysql_install_db --user=mysql --datadir=/var/lib/mysql2   // 将mysql等系统数据库安装到实例准备运行的目录。

三,配置文件

修改配置文件 my.cnf,这也是最重要的一步。主要是重新设置每个实例的pid-file,socket,port等属性,我的配置文件 如下:

  1. [mysqld_multi]  
  2. mysqld     =/usr/bin/mysqld_safe  
  3. mysqladmin = /usr/bin/mysqladmin  
  4. user       = root  
  5. password = password
  6. # The MySQL server  
  7. [mysqld1]  
  8. port            = 3306  
  9. socket          = /var/lib/mysql/mysql.sock  
  10. datadir         =/var/lib/mysql  
  11. pid-file        =/var/lib/mysql/ha1.pid  
  12. user            =mysql  
  13.   
  14. log-bin         =master-bin  
  15. log-bin-index           =master-bin.index  
  16. server-id       =1  
  17. [mysqld2]  
  18. port            = 3307  
  19. socket          =/var/lib/mysql2/mysql2.sock  
  20. datadir         =/var/lib/mysql2  
  21. pid-file        =/var/lib/mysql2/ha1.pid  
  22. user            =mysql  

    mysqld_multi启动

    点击(此处)折叠或打开

    1. /usr/local/mysql/bin/mysqld_multi start 1
    2. /usr/local/mysql/bin/mysqld_multi start 2
    或者采用一条命令的形式:

    点击(此处)折叠或打开

    1. /usr/local/mysql/bin/mysqld_multi start 1-2
    更改原来密码(处于安全考虑,还需要删除系统中没有密码的帐号,这里省略了):

    点击(此处)折叠或打开

    1. /usr/local/mysql/bin/mysqladmin -uroot password 'password' -S /data/dbdata_3306/mysql.sock
    2. /usr/local/mysql/bin/mysqladmin -uroot password 'password' -S /data/dbdata_3307/mysql.sock
     
    登录测试并创建admin密码(停止mysql的时候需要使用到)

    点击(此处)折叠或打开

    1. /usr/local/mysql/bin/mysql -uroot -ppassword -S /data/dbdata_3308/mysql.sock
    2. GRANT SHUTDOWN ON *.* TO 'admin'@'localhost' IDENTIFIED BY 'password';
    3. flush privileges;
    4. /usr/local/mysql/bin/mysql -uroot -ppassword -S /data/dbdata_3308/mysql.sock
    5. GRANT SHUTDOWN ON *.* TO 'admin'@'localhost' IDENTIFIED BY 'password';
    6. flush privileges;
    更改环境变量

    点击(此处)折叠或打开

    1. vim /etc/profile
    2. PATH=${PATH}:/usr/local/mysql/bin/
    3. source /etc/profile
    添加到自动启动

    点击(此处)折叠或打开

    1. vim /etc/init.d/boot.local
    2. /usr/local/mysql/bin/mysqld_multi start 1-2
    如果是rhel或者centos系统的话自启动文件/etc/rc.local
     
    管理的话,在本地都是采用 -S /data/dbdata_3308/mysql.sock,如果在远程可以通过不同的端口连接上去坐管理操作。其他的和单实例的管理没什么区别!
    大家在管理多实例的话可以使用mysqlmanager实例管理器,管理器来会比较方面,限于篇幅,这里就不在多做介绍!