zoukankan      html  css  js  c++  java
  • MySql 主从复制及主主复制

    一、主从复制

    1、主配置

    [mysqld]
    server-id=11   #任意自然数n,只要保证两台MySQL主机不重复就可以了。
    log-bin=mysql-bin   #开启二进制日志
    auto_increment_increment=2   #步进值auto_imcrement。一般有n台主MySQL就填n
    auto_increment_offset=1   #起始值。一般填第n台主MySQL。此时为第一台主MySQL
    #binlog-ignore=mysql   #忽略mysql库【我一般都不写】
    #binlog-ignore=information_schema   #忽略information_schema库【我一般都不写】
    replicate-do-db=test #要同步的数据库,默认所有库

    2、从配置

    [mysqld]
    server-id=12
    log-bin=mysql-bin
    auto_increment_increment=2
    auto_increment_offset=2
    replicate-do-db=test #要同步的数据库,默认所有库

    上面配置后都重启让其生效

    3、主执行语句

    GRANT REPLICATION SLAVE ON *.* TO '同步账号'@'%' identified by '同步账号密码';
    flush privileges; #非常重要否则不生效
    SHOW MASTER STATUS;#查看Bin文件及pos信息

    4、从执行语句

    stop slave;
    change master to master_host='ip',master_port=端口,master_user='主账号',master_password='主密码',master_log_file='mysql-bin.000002',master_log_pos=41052;
    flush privileges;
    start slave;
    show slave status;

    5、碰到的问题

    A、从机 上 Slave_SQL_Runing 会变为No 。

    解决:1、从机mysql执行:set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;(这个方法不推荐,错误跳过只是暂时)

    2、真正原因是有一个数据库可能程序报错了回滚了数据导致的。所以在同步my.ini文件中排除这个错误的库吧或找到问题所在

    注意:如果想在slave上忽略某个库,最用replicate_ignore_db取代binlog_ignore_db

    半同步复制

    引用:https://www.cnblogs.com/phpstudy2015-6/p/6525275.html

    主库

    install plugin rpl_semi_sync_master soname 'semisync_master.dll';
    show plugins;   #查看是否加载成功
    SET GLOBAL rpl_semi_sync_master_enabled = 1;  #开启半同步复制,默认是关闭的
    #或配置文件中加 rpl_semi_sync_master_enabled=1  #主库配置文件添加,表示以后启动MySQL将会自动开启半同步复制
    
    flush privileges;
    show variables like '%semi%';
    #Rpl_semi_sync_master_enabled=ON表示开启半同步复制
    #Rpl_semi_sync_master_timeout=1000默认1000毫秒,即10秒超时,将切换为异步复制
    #Rpl_semi_sync_master_wait_no_slave表示是否允许master每个事物都要等待slave接收确认,默认为ON
    #Rpl_semi_sync_master_trace_level=32表示用于开启半同步复制时的调试级别,默认32
    show status like '%semi%';
    #Rpl_semi_sync_master_status表示主服务器使用是异步还是半同步复制(ON)
    #Rpl_semi_sync_master_client表示从服务器有多少个配置成半同步复制
    #Rpl_semi_sync_master_yes_tx表示从服务器确认成功提交的数量
    #Rpl_semi_sync_master_no_tx表示从服务器确认失败提交的数量

    从库

    INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.dll';#linux则为semisync_slave.so
    show plugins;   #查看是否加载成功
    
    SET GLOBAL rpl_semi_sync_slave_enabled = 1;  #开启半同步复制,默认是关闭的
    #或配置文件中加 rpl_semi_sync_slave_enabled=1  #从库配置文件添加,同上
    
    show variables like '%semi%';
    #Rpl_semi_sync_slave_enabled=ON表示在slave已经开始半同步复制模式
    #Rpl_semi_sync_slave_trace_level=32表示用于开启半同步复制时的调试级别,默认32
    show status like '%semi%'
    #Rpl_semi_sync_slave_status表示从服务器开启半同步复制
    
    #重启从服务器IO线程,手动将异步模式切换为半同步模式
    STOP SLAVE IO_THREAD;
    
    START SLAVE IO_THREAD;
  • 相关阅读:
    CentOS 6 + bochs-2.6 + gdb 调试 linux 0.11 —— 成功
    操作系统原理——互斥同步
    CentOS 6 bochs-2.6 gdb 调试 linux 0.11——bochsrc-fd1-gdb.bxrc
    vim+xxd=强大的十六进制编辑器
    【t043】成绩查询
    【u251】心灵的抚慰
    【t041】距离之和
    【t086】防护伞
    Java Web整合开发(37) -- SVN
    ubuntu命令
  • 原文地址:https://www.cnblogs.com/xiaoruilin/p/14514473.html
Copyright © 2011-2022 走看看