请问Mysql的主从复制原理是什么?如果我要实现主从复制,需要怎么操作呢?(如果有具体教程就最好了)
可以参考这篇文章
下面关于数据库主从复制机制的原理概述,哪个是错误的?
主库的主机关机时,数据只能读不能写,并且从库的主机关机后,数据仍然可读可写,这个不好弄,如果你对lua脚本有所了解,修改mysql-proxy的读写分离脚本或许可以实现。不过主库关机时不能访问,并且从库关机仍可读可写,这个不需要配读写分离,这本来就是主从复制的基本能力,从库只是备用的而已。从库关闭后再开启,slaveIO线程会自动从中断处二进制日志的位置开始复制主机的二进制日志,slaveSQL线程会读取并执行这些二进制日志中的SQL。总之,不需要特别的配置,这是主从复制的基本能力。
本回答由网友推荐
MySQL是什么?
MySQL因为其速度、可靠性和适应性而备受关注。大多数人都认为在不需要事务化处理的情况下,MySQL是管理内容最好的选择。MySQL关系型数据库于1998年1月发行第一个版本。它使用系统核心提供的多线程机制提供完全的多线程运行模式,提供了面向C、C++、Eiffel、Java、Perl、PHP、Python以及Tcl等编程语言的编程接口(APIs),支持多种字段类型并且提供了完整的操作符支持查询中的SELECT和WHERE操作。
MYSQL有什么优势呢?
MYISAM强调了快速读取操作,这可能就是为什么MYSQL受到了WEB开发如此青睐的主要原因:在WEB开发中你所进行的大量数据操作都是读取操作
MySQL如何实现主从复制过程的示例详解
如何在一台windows主机上实现MySQL的主从复制 先在主数据库中创建新数据库rep_test。 然后编辑主数据库的my.ini文件 在[mysqld]节点中增加如下内容: server-id=1 #指定唯一的ID,1至32,必须的 log-bin=mysql-log-bin #指定二进制日志存放路径...主从复制延迟的监测,我以前的做法是通过比较show slave statusg中的两个变量的差值(read_master_log_pos,exec_master_log_pos),将差值设置为一个自己认为合理的范围,seconds_behind_master 没有适用过,今天做一次解析:
seconds_behind_master 是通过比较 sql thread 接受 events事件的时间戳(timestamp) 与io thread 执行事件 events时间戳的差值--秒数来确定slave 落后于master多少。如果主从机器的时间不同,该时间的计算也是不会受影响的(如果时间发生异常,则这个秒数的就不怎么可靠啦)
如果slave sql thread 或者 slave i/o thread 或者没有连接到master,那么该变量的值为null.
0:表示master slave 复制没有延迟(大部分情况下是这个样子)。
正值:表示slave落后于master的秒数。
在网络很快的情况下,i/o thread 能够很快的从master上获取binlog到slave的 relay-log。这种情况下, seconds_behind_master的值能真正代表slave落后于master的秒数。在网络很差的情况下,i/o thread 同步很慢,slave收到的二进制日志信息,sql thread能够很快的执行。这个时候 seconds_behind_master 是0,这种情况下 slave落后于master很多。
为了排除网络的干扰,我们可以参考percona 的工具 pt-heartbeat.
该工具可以计算出mysql复制或者是postgresql,它可以更新master或者监控复制。它还可以从my.cnf 读取配置。它借助timestmp的比较实现的,首先需要保证主从服务器时间必须要保持一致,通过与相同的一个ntp server同步时钟。它需要在主库上创建一个heartbeat的表,里面的时间戳ts就是当前的时间戳 now(),该结构也会被复制到从库上。表建好以后,会在主库上以后台进程的模式去执行一行更新操作的命令,定期去向表中的插入数据,这 个周期默认为1 秒,同时从库也会在后台执行一个监控命令,与主库保持一致的周期+0.5s(默认0.5s延迟检查)去比较,复制过来记录的ts值与主库上的同一条ts值,差值为0表示无延时,差值越大表示 延时的秒数越多。
mysql主从复制原理?
当数据变化时触发同步指令将变化的数据发送到从数据库由其进行更新
标签:主库,主从复制,slave,thread,32,MySQL,master,mysql From: https://blog.51cto.com/yetaotao/5800207