MySql—主从复制

一  什么是主从复制

将主数据库中的DDL和DML操作通过二进制日志传输到从数据库上,然后将这些日志重新执行(重做);从而使得从数据库的数据与主数据库保持一致。

 

基本原理:

  MySQL支持单向、异步复制,复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器。

  MySQL复制是基于主服务器在二进制日志中跟踪所有对数据库的更改。因此,要进行复制,必须在主服务器上启用二进制日志。每个从服务器从主服务器接收主服务器已经记录到日志的数据。

  当一个从服务器连接主服务器时,它通知主服务器从服务器在日志中读取的最后一次成功更新的位置。从服务器接收从那时起发生的任何更新,并在本机上执行相同的更新。然后封锁并等待主服务器通知新的更新。从服务器执行备份不会干扰主服务器,在备份过程中主服务器可以继续处理更新。

二  主从复制的作用

  1、主数据库出现问题,可以切换到从数据库。

  2、可以进行数据库层面的读写分离。

  3、可以在从数据库上进行日常备份。

 三  复制过程

如数据库版本为5.7,安装以后文件对应目录:

mysql的数据文件和二进制文件:/var/lib/mysql/

mysql的配置文件:/etc/my.cnf

mysql的日志文件:/var/log/mysql.log

139为master

1、创建一个用户repl,并且允许其他服务器可以通过该用户远程访问master,通过该用户去读取二进制数据,实现同步。

     Create user repl identified by 'repl';

    repl用户必须具有replication slave权限,除此之外其他权限都不需要。

    grant replication slave on *.* to 'repl'@'%' identified by 'repl';

 2、修改140 my.cnf配置文件,在[mysqld]下添加配置

       log-bin=mysql-bin //启用二进制文件

       server-id=130       //服务器唯一ID

3、重启数据库

     systemctl restart mysqld

4、登录到数据库

      show master status ----查看master状态信息

140为slave

  1、修改140 my.cnf配置文件,在[mysqld]下增加如下配置

       server-id=132     ---------服务器id,唯一

       relay-log=slave-relay-bin

       relay-log-index=slave-relay-bin.index

       relad_only=1

2、重启数据库

      systemctl restart mysqld

3、连接到数据库客户端,通过如下命令建立同步连接

      change master to master_host='192.168.0.139',master_port=3306,master_user='repl',master_password='repl',master_log_file-'mysql-bin.000001',master_log_pos=0(master_log_file,master_log_pos可以从master的show master status找到对应的值,不能随便写);

4、执行start slave

5、show slave status \G; 查看slave服务器状态,当如下两个线程为yes,表示主从复制配置成功

Slave_IO_RUNNING=YES

Slave_SQ_RUNNING=YES

主从同步原理

1、master记录二进制日志。在每个事务更新数据完成之前,master在日志记录这些改变。MySql将事务串行的写入二级制日志,即使事务中的语句都是交叉执行的。在事件写入二进制日志完成后,master通知存储引擎提交事务。

2、slave将master的binary log拷贝到它自己的中继日志。首先,slave开始一个工作线程—I/O线程,I/O线程在master上打开一个普通的连接,然后开始binlog dump process。Binlog dump process从master的二进制日志中读取事件,如果已经跟上master,它会睡眠并等待master产生新的事件。I/O线程将这些事件写入中继日志。

3、SQL线程从中继日志读取事件,并重放其中的事件而更新slave数据,使其与master中的数据一致。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值