码迷,mamicode.com
首页 > 系统相关 > 详细

linux下mycat读写分离的配置

时间:2015-09-25 16:27:09      阅读:559      评论:0      收藏:0      [点我收藏+]

标签:

  为什么要配置读写分离,我想我就不需要再赘述了,那么在mycat下如何进行读写分离的配置,配置之后的实际效率又如何呢?我上午根据文档捣鼓和测试了一下,这里做一下记录:

  最开始,我们还是要配置mysql本身的主从复制。

  首先,配置主服务器:

  1.编辑数据库配置文件,/etc/my.cnf

  在[mysqld]下加入代码:

log-bin=mysql-bin
server-id=1
innodb_flush_log_at_trx_commit=1
sync_binlog=1
binlog-do-db=db1
binlog_ignore_db=mysql

  server-id 用于区分各自服务器,需要全局唯一。

  binlog-ignore_db为忽略的库,即不复制该项设置的库。

  binlog-do-db为需要复制的数据库,如果不要,则为复制除了binlog-ignore_db设置的库之外的所有库

  2.重启mysql:

service mysqld restart

  3.登录mysql: mysql -uroot -p

  可以为slave端单独建立一个账户,方便权限管理,然后把这个账户的权限赋予slave端: 

mysql>CREATE USER user@ X.X.X.X IDENTIFIED BY XXXXXX;
mysql>GRANT REPLICATION SLAVE ON *.* TO user@X.X.X.X IDENTIFIED BY XXXXXX;

  X.X.X.X为slave端的IP地址

  4.防止在复制期间,数据库有新数据写入导致数据不同步:  

mysql>FLUSH TABLES WITH READ LOCK;

  5.把数据库导出并传送到从服务器端:

#mysqldump -u root -pXXXXXX --all-databases  --lock-tables=false  -- > /root/all.sql
#scp /root/all.sql root@X.X.X.X:/root

  X.X.X.X为从服务器IP地址。

  6.进入主服务器数据库查看并记录状态,待会儿会用到: 

mysql>SHOW MASTER STATUS\G;

  记录File和position

  7.解锁数据表 

mysql>UNLOCK TABLES;

  然后配置从服务器:

  1.登录从服务器,导入主服务器的数据库: 

#mysql -u root -p123456 < /root/all.sql

  2.编辑/etc/my.cnf,在[mysqld]下加入: 

server-id=11        //服务Id,注意要和master的server-id不一样
log-bin=mysql-bin
relay-log-index=slave-relay-bin.index
relay-log=slave-relay-bin
sync_master_info=1
sync_relay_log=1
sync_relay_log_info=1

  3.重启数据库并登录,执行下面的命令 

mysql>CHANGE MASTER TO
MASTER_HOST=‘X.X.X.X‘,            //主服务器的ip地址
MASTER_USER=‘user‘,               //刚才在主服务器创建的账号和密码
MASTER_PASSWORD=‘XXXXXX‘,
MASTER_PORT=3306,
MASTER_LOG_FILE=‘mysql-bin.000001‘, //刚才主服务器的file
MASTER_LOG_POS=120,        //主服务器的position
MASTER_CONNECT_RETRY=10;

  4.启动slave进程:

mysql>START SLAVE;

  如果没有报错,应该就设置好了。

  小小的优化方案:

  虽然MyISAM引擎不支持事务处理和行级锁,但是它的查询效率相比innoDB要好的多,而作为从数据库,并不需要事务处理和行级锁,所以建议把客户端的表重新删除并建立为InnoDB。

  启动mycat的读写分离:

   配置schema.xml文件: 

<dataHost name="localhost1" maxCon="1000" minCon="10" balance="0"
                writeType="0" dbType="mysql" dbDriver="native">
    <heartbeat>select user()</heartbeat>
    <!-- can have multi write hosts -->
    <writeHost host="hostM1" url="localhost:3306" user="root"
                        password="XXXXXX">
        <!-- can have multi read hosts -->
        <readHost host="hostS1" url="X.X.X.X:3306" user="user" password="XXXXXX" />
    </writeHost>
</dataHost>

 

  

linux下mycat读写分离的配置

标签:

原文地址:http://www.cnblogs.com/toulon/p/4838377.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!