负载均衡mysql集实现数据同步
负载均衡mysql集实现数据同步
⼤家都知道当⽹站的访问并发量⽐较⾼的时候,⼀般的公司都采⽤lvs负载均衡,mysql读写分离,集等⽅式降低服务器压⼒,数据库读写压⼒,假设公司采⽤了mysql集,此时就会有数据同步的问题,我们怎么实现mysql集的数据同步呢?
mysql四种常见⽇志类型
1. errot log 错误⽇志
2. general query log 查询⽇志
3. slow query log 慢查询⽇志
4. binary log ⼆进制⽇志
其中第四种binary log,主要记录了mysql数据更改记录,就是我们将要⽤来实现主从复制的条件。
通过 binary log 实现数据同步
英语教师就业前景口香糖粘在衣物上如何弄掉我们已经知道mysql的binary log会记录数据更改的sql,我们只要做到在多台服务器中监听这个⽇志变化,主动读取binary log,将binary log内容转成本⾝的relay log,然后⾃⾝通过relay log实现数据的同步改动即可实现数据同步。现在让我们看下具体原理和操作:去新加坡需要的条件
mysql数据复制原理
教师节该送什么礼物主要是mysql的三个线程的分⼯合作。
1. binlog线程:记录所有涉及到mysql数据变化的sql语句,将sql语句写⼊binlog中。
流行qq签名2. io线程:当我们开启slave之后,slave服务器就监听从master服务器获取binlog内容,将获取的数据放进⾃⼰的relay log。
书名号怎么打出来3. sql执⾏线程:执⾏relay log⾥的sql语句,完成数据同步。
mysql主主服务器架构数据同步
顾名思义,mysql主主服务器指的就是mysql集,mysql多台服务器同时对外提供完整的增删改查服务,此时我们只需要让这多台mysql 服务器互相监听binary log变化,同步到⾃⼰的mysql服务器即可实现数据同步。
假设我们的主主服务器有两台:
# 第⼀步、myf 修改以下配置
# server1
server-id=1
log-bin=mysql-bin
binlog-format=mixed
relay-log=mysql-relay
# server2
server-id=2
log-bin=mysql-bin
binlog-format=mixed
relay-log=mysql-relay
# 第⼆步、建⽴mysql的监听账号
# server1
grant replication client,replication slave on *.* to 'user'@'server1 ip' identified by '密码';
# server2
grant replication client,replication slave on *.* to 'user'@'server2 ip' identified by '密码';
# 第三步、实现binary log监听
# master_log_file 和 master_log_pos ⽤来确定slave的io线程下次开始执⾏时从master开始读取的位置坐标
# server1
change master to master_host='server1 ip',master_user='⽤户名',master_password='⽤户名@密码',master_log_file='mysql-bin.000001',master_log_pos=746;
# server2
change master to master_host='server2 ip',master_user='⽤户名',master_password='⽤户名@密码',master_log_file='mysql-bin.000001',master_log_pos=746;
# 查看监听状态并且启动 slave
show slave status \G
start slave
到这⾥,我们的mysql主主服务器数据同步就完成了。
mysql集常见问题
1. 主主复制⾃增主键冲突
通过以上介绍我们知道mysql主主复制时,多台mysql同时提供服务,如果我们表中含有⾃增主键,此时我们就会遇见server1写⼊了,但是binary log还没同步到server2,此时server2也写⼊了数据。⾃增主键相同,当binary log同步的时候,就会产⽣冲突。
那么如何解决呢?可以通过修改 mysql的myf 配置⽂件。
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
...
通过以上配置,每⼀台mysql⾃增的步长就会不同,如此便可以解决⾃增主键冲突问题。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论