这多个从库是多台机器,多个ip 
应用能只建一个数据源访问整个主从库吗? 
实在不行,主从库单独建数据源也可以,那问题是多个从库能只建立一个数据源吗?如果可以,什么东西来控制从库的负载均衡? 第一次接触mysql的主从库,看了资料,没看到如何说应用访问单一数据源的问题。请教大家一般是怎么处理的。 

解决方案 »

  1.   

    mysql> select user,host from user;
    +-------+-----------+
    | user  | host      |
    +-------+-----------+
    | model | %         |
    | scot  | %         |
    | root  | localhost |
    +-------+-----------+
    3 rows in set (0.02 sec)
    可以看到 我的model用户可以从任何ip访问host
    scot也一样
    而root用户只能在本地访问服务器
      

  2.   

    mysql> grant all privileges on test.* to model@'10.10.1.5' identified by 'model';
    Query OK, 0 rows affected (0.02 sec)mysql> flush privileges;
    Query OK, 0 rows affected (0.00 sec)
    mysql> select user,host from user;
    +-------+-----------+
    | user  | host      |
    +-------+-----------+
    | model | %         |
    | scot  | %         |
    | model | 10.10.1.5 |
    | root  | localhost |
    +-------+-----------+
    4 rows in set (0.00 sec)增加model的ip访问权限 在10.10.1.5机器上同样可以访问test数据库
      

  3.   

    必须这样设吗?部署还比较麻烦的样子,呵呵。
    好像有虚拟ip一说啊,但是我不是很明白,查找到的资料上讲得不很细。我在想有不有更简便的方式来完成这样的目的
    我应用只有一个数据源,也就是连接一个ip(虚拟?),而这个ip上的某个软件来识别我sql是插入还是查询的(设计的是插入,更改在主库上进行,从库用于查询),如果是插入,自动去操作主库,如果是查询,自动负载均衡到某个从库上去。
      

  4.   

    其实权限设置不麻烦 很简单 你也可以根据用户的插入权限和查看权限进行判断mysql> select host,user,insert_priv,select_priv from db where db='test';
    +-----------+-------+-------------+-------------+
    | host      | user  | insert_priv | select_priv |
    +-----------+-------+-------------+-------------+
    | %         | model | Y           | Y           |
    | 10.10.1.5 | model | Y           | Y           |
    +-----------+-------+-------------+-------------+
    2 rows in set (0.00 sec)
      

  5.   

    嗯,谢谢。
    虽然不麻烦,但如果有现成软件和界面,部署人员的要求就低一些了。再请教一下,按你这个思路
    你这个权限设置是在哪一台机器上做的?master上?
    由这台机器来控制访问的跳转?
      

  6.   

    那master要负责所有访问的接入,会不会是性能瓶颈呢?我感觉最理想的还是一个独立的转发器比较好,也就是把接入这部分独立出来。但不知道mysql的主从里有不有这样的方案。
      

  7.   

    搜到一个mysql proxy,不知道好用不?可有大虾讲讲