zoukankan      html  css  js  c++  java
  • Mysql 基于BinaryLog的复制

    。Mysql Master将更新【Update】和变化【Change】作为事件【events】写入Binary log.Mysql slaves 被配置为读取Binary log from master ,以执行事件【events】.

    每一个Slave 都会接收一个副本【entire content of the binary log】,由Slave来决定应执行Binary log 中的哪些语句。默认下,Slave会执行Master binary log中的所有events;在必要时,你可以配置使之只对特定库或表进行操作。

    每个Slave都对自己的执行做了记录:FileName And Position within the file [binary log from the master].所以不同的slave独立执行Master binary log的不同部分,互不影响。

    在复制服务中,Master和Slave都必须有惟一标识【server-id】,除此之外,每一个Slave 还应配置Master的hostName,logfileName及文件的位置。当然这些细节也可以在Slave中的Mysql会话【Mysql Session】中进行设置,使用CHANGE MASTER TO 语句。这些配置信息被保存在mysql.slave_master_info中。

    具体控制语句,见手册:14.4.2 SQL Statements for Controlling Slave Servers,Section 14.4.1 SQL Statements for Controlling Master ServersSection 18.1.6 Replication and Binary Logging Options and Variables

    1设置Master

    必须启动 binary logging和建立ServerId;同时为了保证最大可能的持久性【durability】和一致性【consistency】,应该将innodb_flush_log_at_trx_commit=1 and sync_binlog=1.

    2.创建一个复制用户【非必须】

    要确保该用户具有REPLICAION SLAVE权限。

    3.获取REPLICATION MASTER BINARY LOG的坐标【COORDINATES】

    如果已经启动了Binary log ,可使用下面方法获取Master 的Binarylog 坐标:

    运行 FLUSH TABLES WITH READ LOCK; 刷新所有表并阻止所有写操作,即阻止Commit[对Innodb]。

    在另一个Session中,可使用SHOW MASTER STATUS 来确定binary log的名称和Position。

    Note:该位置就是Slave开始更新的位置。

    4,准备初始数据,至于采取哪种策略取决于MASTER上是否有要同步的数据。如果要同步初始数据,请转向4.1;否则转向5.

      4.1 保证Session运行以确保继续锁定。

      要将Master上指定库的数据同步到各个Slave上,使用mysqldump,是推荐做法,尤其对于innodb.

    通过scp命令上传到Slave服务器,

    在Master上,释放锁:UNLOCK TABLES

    5,建立Slave

    首先对Slave进行配置,为Slave 添加ServerId,并导入文件,如图:

    配置Slave使之与Master通信:

    CHANGE MASTER TO

                     MASTER_HOST='192.168.7.44',

                     MASTER_USER='tjc',

                     MASTER_PASSWORD='123456',

                     MASTER_LOG_FILE='bin_log.000002',

                    MASTER_LOG_POS=5051;

    启动Slave 

    查看Slave 状态:

    如果 Slave_IO_Running 和 Slave_SQL_Running 都为Yes,则运行正常;如Slave_SQL_Running =NO,需要 START SLAVE.

     也可以向集群中添加新的Slave,这时并不需要停止Master运行。只需要拷贝Slave的数据目录到新的Slave。具体可参考手册18.1.2.6。

    关于主从复制的相关介绍,也可查看:

    http://blog.csdn.net/hguisu/article/details/7325124

    http://wangwei007.blog.51cto.com/68019/965575

    Note:在主从复制时,如果遇到执行失败或错误,会导致从被卡住:Slave_SQL_Runnig:NO.有两种处理方式:

    方法一:首先Stop slave;

        然后设置:set global SQL_SLAVE_SKIP_COUNTER=1;【指在遇到报错时跳过这我条,执行下一条】

        最后 Start slave;

    方法二:使用 change master to ,将从的日志记录和位置强制更新到与主一致。【可能会造成数据丢失】。

    推荐使用第一种。

    也可参考:https://my.oschina.net/duguaoxue/blog/512152。

    上面论述的只是单向主从模式,即Master-Slave,Master写,Slave只能读;Slave不能进行写操作,否则会出现问题。

    下面介绍双主模式:即Master-Master:两服务器之间互为主从,都支持写操作,

    配置时注意,双方都要进行change master to ,挂载到Master,

    同时需将 log_slave_updates=1,将更新操作记录到BinLog,双方都要开启BInLog。

    如:

     
  • 相关阅读:
    2021.1.28 个人rating赛补题报告
    2021.1.23 个人rating赛补题报告
    2021.1.23 个人rating赛补题报告
    2020.12.14 个人训练赛补题报告
    2020.11.28 2020团体程序设计天梯赛补题报告
    2020.12.3 Codeforces Beta Round #73(Div2)补题报告
    Xhorse VVDI Prog V5.0.6 is Ready for BCM2 Adapter
    Program 2021 Ford Bronco All Keys Lost using VVDI Key Tool Plus
    Xhorse VVDI Prog V5.0.4 Software Update in July 2021
    How to use Xhorse VVDI2 to Exchange BMW FEM/BDC Module?
  • 原文地址:https://www.cnblogs.com/itdev/p/6000264.html
Copyright © 2011-2022 走看看