mysql同步复制频率_mysql主从(异步复制,半同步复制)

异步复制:MySQL本身支持单向的、异步的复制。异步复制意味着在把数据从一台机器拷贝到另一台机器时有一个延时

最重要的是这意味着当应用系统的事务提交已经确认时数据并不能在同一时刻拷贝/应用到从机。通常这个延时是由网络带宽、资源可用性和系统负载决定的。然而,使用正确的组件并且调优,复制能做到接近瞬时完成。

当主库有更新的时候,主库会把更新操作的SQL写入二进制日志(Bin

log),并维护一个二进制日志文件的索引,以便于日志文件轮回(Rotate)。在从库启动异步复制的时候,从库会开启两个I/O线程,其中一个线程连接主库,要求主库把二进制日志的变化部分传给从库,并把传回的日志写入本地磁盘。另一个线程则负责读取本地写入的二进制日志,并在本地执行,以反映出这种变化。较老的版本在复制的时候只启用一个I/O线程,实现这两部分的功能。

同步复制:同步复制可以定义为数据在同一时刻被提交到一台或多台机器,通常这是通过众所周知的“两阶段提交”做到的。虽然这确实给你在多系统中保持一致性,但也由于增加了额外的消息交换而造成性能下降。

使用MyISAM或者InnoDB存储引擎的MySQL本身并不支持同步复制,然而有些技术,例如分布式复制块设备(简称DRBD),可以在下层的文件系统提供同步复制,允许第二个MySQL服务器在主服务器丢失的情况下接管(使用第二服务器的复本)。

MYSQL

5.5开始,支持半自动复制。之前版本的MySQL

Replication都是异步(asynchronous)的,主库在执行完一些事务后,是不会管备库的进度的。如果备库不幸落后,而更不幸的是主库此时又出现Crash(例如宕机),这时备库中的数据就是不完整的。简而言之,在主库发生故障的时候,我们无法使用备库来继续提供数据一致的服务了。

mysql主从异步复制:

主服务器上:

bin-log=mysql-bin

server-id=183

#建议ip最后一段;

创建用于复制的用户;mysql>grant

replication slave on *.* to ‘repluser’@’192.168.1.184’ identified

by ‘replpasswd’;

mysql>flush

privileges;

查看当前二进制日志文件位置:mysql>show

master status;

File | Position

| Binlog_Do_DB | Binlog_Ignore_DB |

+——————+———-+————–+——————+

| mysql-bin.000025 | 107 | | |

+——————+———-+————–+——————+

从服务器上:

server-id=184

启用中继日志;默认是启动的:

Relay-log=relay-log

Relay-log-index=

登陆mysql;mysql>change

master to

master_host=’192.168.1.183′,master_port=3306,master_user=’repluser’,master_password=’rpelpasswd’,master_log_file=’mysql-bin.000025′,master_log_pos=107; #这些内容配置后会记录在mysql数据目录下的master.info中,用于下次启动从服务器时认证;relog-log.info

记录二进制日志文件位置信息;

接下来就可以启动slave了;mysql>start

slave;

查看slave状态,确认是否成功;mysql>show

slave status;

Slave_IO_Running:

Yes

Slave_SQL_Running: Yes

找到这两行,为yes的话,就成功了;

需要谨记的是,从服务器是不能有写操作的;可以设置read-only;

编辑配置文件,在[mysqld]下添加read-only=on;

mysql>set

global read_only=on;

mysql主从半同步复制:

实现半同步需要安装插件;该插件在mysql安装目录下的lib/plugin目录下;

semisync_master.so

和 semisync_slave.so 其中master是主服务器用到的,slave是从服务器用到的;

主服务器上

mysql>install

plugin rpl_semi_sync_master soname ‘semisync_master.so’;

mysql>set

global rpl_semi_sync_master_enabled=1;

mysql>set

golbal

rpl_semi_sync_master_timeout=1000; #1000ms=1s;

从服务器上

mysql>install

plugin rpl_semi_sync_slave soname ‘semisync_slave.so’;

mysql>set

global rpl_semi_sync_slave_enabled=1;

查看全局状态;mysql>show

global status like ‘%rpl%’;

Rpl_semi_sync_master_clients

|0

显示为0,表示还为完全启动,需要重启slave的io线程;

mysql>stop

slave io_thread;

mysql>start

slave io_thread;

配置完成

当从服务器down掉时,在主服务器上进行写操作,第一次会超时,第二次自动会降级为异步模式,等slave上线时,继续半同步;

附:

主服务器上:

Binlog-do-db= #白名单,仅将指定数据库的相关修改操作记录到二进制文件中;

Binlog-ignore-db=

从服务器:

Replicate_do_db=

Replicate_ignore_db=

Replicate_do_table=

Replicate_ignore_table=

Replicate_wild_do_table= #支持通配符 % _

Replicate_wild_ignore_table=

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值