zoukankan      html  css  js  c++  java
  • mysql单机多实例

    在数据库服务器上,可以架构多个Mysql服务器,进行单机多实例的读写分离;

    可以通过mysqld_multi来进行多实例的管理,mysqld_multi是用perl写的脚本,原理是通过mysql_admin来进行多个数据库的操作;多实例的配置文件也有点不同,可以看作是多个mysql配置的集合;mysqld_multi命令使用如下:

    mysqld_multi report/start/stop

    可以使用 mysqld_multi --example来查看配置文件的例子;也可以直接复制下来当作自己的配置;注意备份以前的配置;

    mv /etc/my.cnf /etc/my.cnf.bak
    mysqld_multi --example > /etc/my.cnf

    按自己的需要修改配置文件,改成多个数据库;

    [mysqld_multi]
    mysqld     = /usr/bin/mysqld_safe
    mysqladmin = /usr/bin/mysqladmin
    user       = multi_admin
    password   = my_password

    [mysqld1]
    socket     = /tmp/mysql1.sock
    port       = 3306
    pid-file   = /data2/mysql1/mysql.pid
    datadir    = /data2/mysql1

    [mysqld2]
    socket     = /tmp/mysql2.sock
    port       = 3307
    pid-file   = /data2/mysql2/mysql.pid
    datadir    = /data2//mysql2

    这里多出了一个[mysqld_multi]的配置项,需要在每个数据库里配置一个multi_admin来管理mysql

    下面新建数据库:

    mysql_install_db --user=mysql --datadir=/data2/mysql1
    mysql_install_db --user=mysql --datadir=/data2/mysql2

    启动mysql服务器

    mysqld_multi start 1,2

    这个时候使用 mysqld_report来查看是否已启动是会失败的,因为还没有新建 multi_admin来查询状态;我们可以通过 netstat来查看端口

    # netstat -tulnp | grep mysql
    tcp        0      0 :::3306                     :::*                        LISTEN      716784/mysqld
    tcp        0      0 :::3307                     :::*                        LISTEN      3669/mysqld
    tcp        0      0 :::3317                     :::*                        LISTEN      714503/mysqld

    可以看到3306和3307端口已经监听;同时目录下生成了相应的.socket文件; 

    下面我们可以连接mysql来配置multi_admin用户;由于有多个实例,连接需要使用socket连接

    mysql -u root -S /tmp/mysql1.sock
    grant shutdown on *.* to multi_admin@'localhost' identified by'my_password';
    flush privileges;
    quit

    同样道理配置另一台3307;

    也可以拷贝一份mysql来创建新的实例,这样里面的用户也会被拷贝。注意目录权限必须是mysql , chown -R mysql.mysql /data2/mysql2 

    下面可以使用

    mysqld_multi --defaults-file=/etc/my.cnf start 启动全部实例

    如果启动出错的话,可以到对应目录下查看日志文件,看哪里出错了。

    使用mysqld_multi需要手动启动数据库,也可以加入开机启动项: 

    echo "mysqld_multi" >>  /etc/rc.local

  • 相关阅读:
    day-7
    Redis数据库 : 基础
    MongoDB与python交互
    MongoDB数据库 : 管道,用户管理,副本集等
    MongoDB数据库 : 基础
    MySQL数据库 : 自关联,视图,事物,索引
    MySQL数据库 : 查询语句,连接查询及外键约束
    MySQL数据库 : 基本语句
    数据结构与算法 : 树与遍历
    python__标准库 : 测试代码运行时间(timeit)
  • 原文地址:https://www.cnblogs.com/trying/p/3477303.html
Copyright © 2011-2022 走看看