mysql主从同步

1.为什么要主从同步?

在Web应用系统中,数据库性能是导致系统性能瓶颈最主要的原因之一。尤其是在大规模系统中,数据库集群已经成为必备的配置之一。集群的好处主要有:查询负载、数据库复制备份等。其中Master负责写操作的负载,也就是说一切写的操作都在Master上进行,而读的操作则分摊到Slave上进行。这样一来的可以大大提高读取的效率。写操作涉及到锁的问题,不管是行锁还是表锁还是块锁,都是比较降低系统执行效率的事情。我们这样的分离是把写操作集中在一个节点上,而读操作其其他的N个节点上进行,从另一个方面有效的提高了读的效率,保证了系统的高可用性。

2、怎样配置主从?

首先安装两台mysql数据库,例:我的主数据库是mysql,从数据库是mysql2

配置主服务

1:找到数据库安装位置里的my.ini文件,打开在最后加上以下内容

#这是数据库ID,此ID是唯一的,ID值不能重复,否则会同步出错

server-id=1

#二进制日志文件,此项为必填项,否则不能同步数据;如果不取名字的话,

#那么就会以计算机的名字加编号来命名二进制文件;

log-bin=mysql-bin

#需要同步的数据库,如果还需要同步另外的数据库,那么继续逐条添加,

#如果不写,那么默认同步所有的数据库 需要同步多个数据库用逗号分隔

binlog-do-db=test

#若涉及及同步函数或者存储过程需要配置,否则主备会产生异常不能同步

#log_bin_trust_function_creators = TRUE

#不需要同步的数据库,如果指定了binlog-do-db这里应该可以不用指定的

#binlog-ignore-db=mysql

保存文件后重启mysql服务,链接mysql数据库执行以下sql

GRANT REPLICATION SLAVE ON *.*TO 'my_slave'@'127.0.0.1' IDENTIFIED BY '123456';

执行成功后在执行以下sql,并记录执行结果

show master status;

mysql主从同步_第1张图片

到现在为止主服务配置好了,接下来配置从服务mysql2

找到mysql2安装位置里的my.ini文件,打开并在文件最后加上以下内容

#这是数据库ID,此ID是唯一的,ID值不能重复,否则会同步出错

server-id=2

#二进制日志文件,此项为必填项,否则不能同步数据;如果不取名字的话,那么就会以计算机的名字加编号来命名二进制文件;

log-bin=mysql-bin

#需要同步过来的数据库

replicate-do-db=test

重启mysql2的服务,并连接mysql2数据库,执行以下sql

change master to

master_host='127.0.0.1',

master_port=3306,

master_user='my_slave',

master_password='123456',

master_log_file='mysql-bin.000001',

master_log_pos=106;

master_host:master IP

master_user:master数据库通过GRANT授权的账号

master_port:master数据库使用的端口号

master_password:master数据库通过GRANT授权的密码

master_log_file:master数据库中通过show master status显示的File名称

master_log_pos:master数据库中通过show master status显示的Position数据

接下来启动从服务即可,执行一下命令

slave start;

到这一步mysql主从同步就配置好了,接下来测试就可以了

注意事项:

1: 需要同步的从数据库需要保证和主数据库初始化表一样

2: 主从间的数据库不是实时同步,就算网络连接正常,也存在瞬间,主从数据不一致。

3: 如果主从的网络断开,会重新在网络正常后,批量同步。

4: 如果对从进行修改数据,那么很可能从在执行主的bin-log时出现错误而停止同步,这 个是很危险的操作。所以一般情况下,非常小心的修改从上的数据。

怎样解决主从同步延迟问题?

1:主从数据库尽可能保证在同一个局域网内。

2:采用千兆网卡,加大带宽。

3:主数据库更新完成之后产生的操作日志不是瞬间产生的,我们可以通过设置sync_binlog=1, 让它瞬间产生磁盘日志,(n=1指主数据库只要操作一次,就产生一次磁盘日志,n=10,就是操作10次,产生一次),从数据库可以依赖磁盘日志,瞬间产生同步,可以达到降低延迟的效果。

4:设置主库和从库读取日志失败之后,及时重新建立连接,延迟缩短、默认5秒。

概念

mysql读写分离,主从同步怎么配置的,如何降低延迟

读写分离配置:在项目中我们配置了两个数据源,一个主数据库的,一个是从数据库的,在事务配置的时候,我们给从的数据dataSource配置了只读事务,在项目中根据操作判断注入不同的数据源,如果是增删改操作的注入主的数据源,所有的查询操作注入从的数据源,

主从同步配置:首先找到主数据库的my.ini文件,在里边配置server-id 每个数据库的server-id不能重复要保证唯一,配置binlog-do-db指明需要同步的数据库,log-bin来指明日志文件,配置完后,重启主数据库的服务,登陆主数据库,创建一个用于从数据库访问的用户,然后通过show master status;查询出主数据库的状态,记录下它的File和Position的值,紧接着配置从数据库,找到从数据库的my.ini文件,在里边配置server-id,log-bin和replicate-do-db 指明需要同步的数据库,然后重启从数据库的服务,重启完后登陆从数据库,创建从数据库对主数据库的连接,master_log_file要和刚才主数据库查询的File字段内容一致,master_log_pos要和主数据库刚才查出的Position一致,然后通过slave start,来启动从数据库,这样主从同步就配置好了。

 

你可能感兴趣的:(数据库,mysql)