zoukankan      html  css  js  c++  java
  • mysql被动模式下的主主配置

    mysql 架构最简单用得也最多的的是主从,主主等,主从有个切换的问题,从库不可写,在主库一定的情况下,切换挺麻烦,这里可以用主主模式。

    但是主主也有个问题,就是两边同时写有可能冲突,主键冲突,虽然可以用奇偶主键方式来解决,或者程序来做,但是增加了麻烦,这里用被动模式下的主主就方便多了。

    两台服务器设置

    1.两台服务器都设置上二进制日志和relay日志:

    #给服务器命名一个id

    server_id=140

    #声明二进制日志的文件为mysql-bin.xxx

    log-bin=mysql-bin

    #二进制日志的格式:mixed/row/statement

    binlog_format=mixed

    #主主复制时都需要配置relay-log

    relay-log=mysql-relay

    2.都给对付赋权并设置对付对方为自己的主

    20:GRANT replication slave ON *.* to 'repl'@'10.0.67.19' identified by '123456'; 

    19:change master to master_host='10.0.67.20', master_user='repl', master_password='123456',master_port=3306, master_log_file='mysql-bin.000004', master_log_pos=1318;

    19:GRANT replication slave ON *.* to 'repl'@'10.0.67.20' identified by '123456'; 

    20:change master to master_host='10.0.67.19', master_user='repl', master_password='123456',master_port=3306, master_log_file='mysql-bin.000004', master_log_pos=1318;

    3.开启slave:

    start slave

    4.查看slave状态

    show slave statusG

    被动模式下的主主复制:

    1.概念:是指2台服务器地位一样,但其中一台为只读,并且业务中也只写某1台服务器;

    2.好处:如果供写入的服务器出了故障,能迅速的切换到从服务器,或者出于检修等目的,把写入功能切换到另一台服务器也比较方便;

    3.实现:在只读服务器的my.cnf中加入如下配置:read-only=on;

    同步冲突问题:

    摘录:

    1.主主复制下一定要注意避免的问题,同步冲突,例:

    create table stu (

    id int primary key auto_increment.

    )......

    2台mysql地位相等, 假如2个请求同时到达2台服务器,请求的A节点stu的id为1,请求的B节点stu的id为1,此时就产生了同步冲突的问题;

    2.解决方案:

    让A服务器的主键通过奇数增长,B服务器的主键通过偶数增长;

    A服务器:

    set global auto_increment_increment = 2;    //每次自增步长

    set global auto_increment_offset = 1;           //初始自增的数字

    set session auto_increment_increment = 2;

    set session auto_increment_offset = 1;

    B服务器:

    set global auto_increment_increment = 2;

    set global auto_increment_offset = 2;

    set session auto_increment_increment=2;

    set session auto_increment_offset = 2;

    注:auto-increment-increment 和auto-increment-offset要写到配置文件中,防止下次重启后失效;

    注:如果后期需要加服务器,这个办法就有限制了

    方法:我们可以在业务逻辑上来解决,比如在oracle有sequence序列,序列每次访问生成递增/递减的数据,以redis为例,我们可以专门构建一个 global:userid,每次PHP插入Mysql前,先 incr->global:userid,得到一个不重复的userid;

  • 相关阅读:
    mouse_event模拟鼠标滚轮
    润乾报表配置技术路线
    建筑 物件 开心背单词 读句子,单词,字母,看图例, 翻译,看动画
    文字过渡动画,曲线过渡动画,,使用这个插件assign shape keys
    运动锻炼 开心背单词 读句子,单词,字母,看图例, 翻译,看动画,学英语,轻松背单词,简单背单词
    blender293 内置插件 精度绘画控件,PDT学习003,pdt tangents 切线
    日常用品 背单词 读句子 看图片 读单词 读字母 翻译, 看动画 学英语
    blender293 内置插件 精度绘画控件,PDT学习 precision drawing tools
    乔布斯 背单词 02 读句子 单词 字母 翻译,看动画 学英语 名言 我菜顾我在,我菜故我在,blender加python
    狐狸 和 乌鸦 英语 朗读句子 背单词
  • 原文地址:https://www.cnblogs.com/mikeluwen/p/7808287.html
Copyright © 2011-2022 走看看