• linux下mycat读写分离的配置


      为什么要配置读写分离,我想我就不需要再赘述了,那么在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 STATUSG;

      记录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>

      

  • 相关阅读:
    Google Kubernetes设计文档之服务篇-转
    基于kubernetes构建Docker集群管理详解-转
    Pass云Docker介绍
    Spring <context:annotation-config/> 解说
    webapp开发需要注意的浏览器内核知识
    koala编译scss文件时不支持中文字体的解决方案
    CSS3硬件加速需要注意的事项
    ios客户端快速滚动和回弹效果的实现
    mui禁止滚动条和禁止滚动
    苹果端禁用左右滑动屏幕返回上级页面
  • 原文地址:https://www.cnblogs.com/toulon/p/4838377.html
Copyright © 2020-2023  润新知