MySQL对数据库数据进行复制的基本过程详解

2019-01-04 18:56:57王旭

来确定当前的二进制日志文件及位移量(offset)
p, li { white-space: pr     

1.5 在Slave上配置Master信息

mysql> CHANGE MASTER TO -> MASTER_HOST='master_host_name', -> MASTER_USER='replication_user_name', -> MASTER_PASSWORD='replication_password', -> MASTER_LOG_FILE='master_bin_log_file_name', -> MASTER_LOG_POS='recorded_log_position';

 

2. 复制格式的选择

     每种二进制日志格式都有自己的优缺点,对大多数用户来说,MBR提供了最好的效果.但当需要为某些特定任务选取SBR或RBR时,可以通过下面的比较来决定哪一个更适合:

     SBR的优势:

从MySQL3.23开始,就被证明了的技术
更少的数据写入日志. 当更新或删除影响到很多行时,SBR会使用更少的存储空间,这也意味着在导入或恢复时需要更少的时间
日志文件包含所有的语句操作所作的变动,因此可以用来审计数据库
     SBR的劣势:

语句表述(Statements)对SBR来说是不安全的,不是所有修改数据的语句都可以使用SBR复制.任何为确定的行为都很难被复制,如具有LIMIT或ORDER BY的DELETE或UPDATE
INSERT ... SELECT 比RBR需要更多数量的行锁定
需要扫描整个表的UPDATE(因为没有在WHERE中使用索引)比RBR要锁定更多的行
对InnoDB,使用了AUTO_INCREMENT的INSERT会阻塞其它非冲突的INSERT
对于复杂的语句,slave在更新或插入之前必须先进行评估和执行,而RBR只需要运行语句应用不同就可以了
存储过程执行同样的NOW()
确定的UDFs必须被应用到所有的slaves上
master与slave上的表必须(几乎)相同
      RBR的优势:

所有的改变都能被复制,这是最安全的复制模式. 但mysql数据库不会被复制,mysql会被认为是一个特殊节点数据库
这种技术与很多其它数据库管理系统一样,因此可以许多在其它系统上的认知,都可以转移到MySQL上来
Master需要更少的锁定来执行:INSERT ... SELECT,INSERT中有AUTO_INCREMENT,以及WHERE中没有使用键值的 UPDATE/DELETE
Slaves在执行INSERT,UPDATE/DELETE时,需要更少的锁定
      RBR的劣势:

RBR势必会产生更多的日志数据
你不能通过log知道什么语句被执行了,然后你却可以通过mysqlbinlog查看什么数据被改变了
相关命令

mysql>show slave hosts -- 查看所有连接到Master的Slave信息 mysql>show master status -- 查看Master状态信息 mysql>show slave status -- 查看Slave状态信息 mysql>show binary logs -- 查看所有二进制日志 mysql>show binlog events [IN log_file] -- 查看二进制日志中的事件

 

您可能感兴趣的文章:

简单讲解MySQL的数据库复制方法