多数据库服务器应用实现主从同步从而读写分离

来源:互联网 发布:怎么删除管家婆数据 编辑:程序博客网 时间:2024/06/07 06:19

1主从同步的原理解释

主从同步一般使用在多台服务器上读写分离的数据库架构。为了提交数据库的效率,其实现的原理如下如所示:

分别配置了主从服务器。后主从服务器的同步流程如下:

  • 从服务器向主服务器发送同步请求,创建一个I/O的连接
  • 主服务器将数据库的改变以事件的形式生成到binary-log中
  • Binlog dump线程从I/O中传递数据到从服务器的relay sql log
  • 从服务器的sql线程将日志生成sql

这里的slave database不一定只是一台数据库服务器,可以使slave database的集群,同时从master  database同步数据。这个需要按照自己的业务架构来,但是原理是相同的。

 

2主服务器的配置

主服务器就一般是在应用中执行删除,修改,添加操作的数据库服务器(insert   update   delete),配置步骤如下:

2.1修改主mysql的配置文件

修改数据库的配置文件my.ini(windows系统),或者my.cf(linux系统),找到[mysqld]配置项,在其下添加如下两个配置:

bin-log=”D:/Mysql/logs/log.bin”    //自己想放在哪儿就放在哪儿

server-id=12    //设置一个server id而且你集群的服务器中的server id必须不同

 

2.2重启mysql服务器

这一步主要是为了让mysql的配置文件生效

2.3主数据库数据备份

因为在添加从数据库时主数据库可能已经一个人支撑业务跑了大半年了,那主数据库上有数据怎么办?肯定是需要先将主数据库中的数据转移副本到从服务器,这个过程就是一个备份与还原的过程。备份一份主服务器的备份然后还原到从服务器上就可以了,但是在这儿有一个小细节,为了防止这个过程中数据的不一致性我们需要先将表锁起来。(其实不锁也没关系)

在mysql命令行执行 flush tables with read lock

紧接着就是讲数据库备份和还原到从服务器的过程了。备份以及还原的方式非常多,我这儿只说一种物理备份的方式,那就是把msyql下的data目录中的文件夹全部复制到从服务器的mysql下的data文件夹,复制时千万要注意,以下两个包含了数据库设置和配置的表不能复制哟。

2.4设置从服务器用来请求同步的账号

这个过程就是一个mysql账号授权的过程

执行:

grant replication slave to *.* on testuser’@’192.168.0.2 identified by testuser’;

这句的意思是创建一个从服务器的复制账号,授权所有主数据库上所有的表以账号testuser密码testuser的方式连接,从服务器ip必须是192.168.0.2

 

*注意,以上步骤如果是按照我的文档做的那这一步很有可能报错,因为你刚刚已经锁定了表,所以在运行授权之前必须先运行   unlock tables;   来解锁表。

 

2.5查看binlog的名称以及同步位置

这个过程是查看在备份之前数据的日志以及从哪个位置开始同步;

执行    show master status;

结果中的file以及position在配置从服务器时需要,一定要记录好。

好了,值此,主服务器的配置就大工告成了。

 

3从服务器的配置

3.1修改从mysql的配置文件

在[mysqld]配置项中添加如下配置

server-id=33;

一定要注意这儿的id和主数据库中的id不能重复,也不能为0;

 

3.2重启从服务器

这儿不是简单的重启哦!

因为我们还没有对从服务器配置任何和主服务器的连接参数,所以我们要重启服务器而且不能开启同步,那怎么办呢?

如果是Windows系统可以在msyql的bin目录下执行

mysqld skip-slave-start &

这样我们就可以重启服务器而且不会马上执行同步。

 

3.3配置同步参数

先使用命令行登录mysql在命令行下执行

change master tomaster_host=’192.168.0.9’, //这个必须是主服务器的ip地址master_user=’testuser’,master_password=’testuser’,master_log_file=’log.000002’,master_log_pos=11319;

 

3.4开启同步

执行 start slave 就开始同步了 

4验证主从同步是否正常执行

在从服务器的mysql命令行中执行

Show slave status\G

如果出现wait for slave from master等信息就说明成功了。接下来就可以修改数据来看看效果了。

库服务器应用实现主从同步从而读写分离

2 0
原创粉丝点击