目录

  • 主从原理
  • 配置实现
    • 实验介绍
    • 配置主服务器:
    • 配置从服务器
  • 测试:

主从原理

Mysql内建的复制功能是构建大型,高性能应用程序的基础。将
Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的
某一台主机(Master)的数据复制到其它主机(slaves)上,并重新执
行一遍来实现的。复制过程中一个服务器充当主服务器,而一个或多个其
它服务器充当从服务器。主服务器将更新写入二进制日志文件,这些日志
可以记录发送到从服务器的更新。当一个从服务器连接主服务器时,它通
知主服务器从服务器在日志中读取的最后一次成功更新的位置。从服务器
接收从那时起发生的任何更新,然后封锁并等待主服务器通知新的更新。

MySQL主从复制主要有三个步骤:
(1) 主服务器(master)将改变记录到二进制日志(binary
log)中(这些记录叫做二进制日志事件,binary log events)

(2) 从服务器(slave)将主服务器master的binary log
events拷贝到它的中继日志(relay log)

(3) slave重做中继日志中的事件,将改变反映它自己的
数据。

在MySQL的主从复制过程中,从服务器上有两个线程起到了很关键的作用,分别是I/O线程和SQL从线程。工作步骤如下图所示:

1、该过程的第一部分就是master记录二进制日志。在每个事务更新数据完成之前,master在二进制日志记录这些改变。MySQL将事务串行的写入二进制日志,在事件,写入二进制日志完成后,master通知存储引擎提交事务。此后可接收slave的请求。

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 thread(SQL从线程)处理该过程的最后一步。SQL线程从中继日
志读取事件,并重放其中的事件而更新slave的数据,使其与master中的数据一致。只要该线程与I/O线程保持一致,中继日志通常会位于OS的缓存中,所以中继日志的开销很小。

配置实现

实验介绍

主机名 IP 角色
mysql1 172.25.0.41 主服务器
mysql2 172.25.0.42 从服务器

要求:对数据库的所有操作,从数据库都能够自动的备份,跟踪。保持跟主数据库的一致性。

配置主服务器:

1、修改配置文件
[root@mysql1 ~]# vim /etc/my.cnf

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd
server-id = 1
log-bin = binlog
[mysqld_safe]
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid#
# include all files from the config directory
#
!includedir /etc/my.cnf.d

2、授权复制账户

在Master的数据库中建立一个备份帐户:每个slave使用标准的MySQL用户名和密码连接master。进行复制操作的用户会授予REPLICATION SLAVE权限。

MariaDB [(none)]> grant replication slave ,replication client on *.* to slave@'172.25.%.%' identified by 'centos';

3、查看主服务器的状态
在Master的数据库执行show master status,查看主服务器二进制日志状态

配置从服务器

1、修改从服务器配置文件
对slave进行配置,打开中继日志,指定唯一的servr ID,设置只读权限
[root@mysql2 ~]# vim /etc/my.cnf

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd
server-id=2
#配置server-id,标识从服务器
relay_log = mysql-relay-bin
#打开Mysql中继日志
read-only =1
#设置从服务器只读权限
log_bin =mysql-bin
#打开从服务器的二进制日志
log_slave_updates =1
#使得更新的数据写进二进制日志中
[mysqld_safe]
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid#
# include all files from the config directory
#
!includedir /etc/my.cnf.d

2、启动从服务器复制线程
让slave连接master,并开始重做master二进制日志中的事件。


MariaDB [(none)]> change master to master_host='172.25.0.41', master_user='slave',
master_password='centos',
master_log_file='binlog.000003',
master_log_pos=245;
#master_log_file代表从哪个二进制文件开始执行,
#master_log_pos表示从什么位置开始执行二进制文件。
MariaDB [(none)]> start slave;
#开启slave模式

3、查看从服务器状态
MariaDB [(none)]> show slave status\G;

由上图可知I/O线程是和SQL线程都已经开启,表示从服务器状态正常。

测试:

在主服务器中创建数据库,创建表,添加表信息等操作。然后在从服务器上进行查看,查看的内容是一致的,那么就说明两个数据库的数据是一致的。也就是说,从服务器能够实时的同步主服务器的数据。

注: 如果添加SLAVE服务器的时候,主服务器已经运行了一段时间,此时就需要在从服务器上先同步主服务器之前的数据。可以使用物理的备份方式,复制数据库文件,在复制的过程中注意数据库文件的权限问题,如果数据库文件的权限不够的话,在从数据库中是无法读取到相关信息的。

mysql主从复制(原理以及配置)相关推荐

  1. MySQL主从复制原理、半同步操作步骤及原理

    MySQL主从复制原理.半同步操作步骤及原理 1.1 企业Linux运维场景数据同步方案 1.1.1 文件级别的异机同步方案 1.scp/sftp/nc 命令可以实现远程数据同步. 2.搭建ftp/h ...

  2. MySQL主从复制原理应用基础

    mysql主从复制 mysql支持单向 双向 链式级联 实时 异步复制,在复制过程中,一台服务器充当主服务器(Master),而一个或多个其他服务器充当从服务器(Slave) mysql主从复制的应用 ...

  3. MySQL主从复制原理(原理+实操)

    1.MySQL主从复制原理(原理+实操) 主从复制简介 在实际的生产中,为了解决Mysql的单点故障已经提高MySQL的整体服务性能,一般都会采用「主从复制」. 比如:在复杂的业务系统中,有一句sql ...

  4. 五、MySQL主从复制原理

    MySQL主从复制原理.半同步操作步骤及原理 标签(空格分隔): mysql 1.1 企业Linux运维场景数据同步方案 1.1.1 文件级别的异机同步方案 1.scp/sftp/nc 命令可以实现远 ...

  5. mysql主从复制安装部署配置操作步骤及主从库宕机处理办法

    mysql主从复制安装部署配置操作步骤及主从库宕机处理办法 大家好,我是酷酷的韩~ 1.前期准备 (1)首先需要准备至少两台mysql 这里方便演示,用了两台虚拟机 环境是centos7 主: 172 ...

  6. MySQL主从复制原理

    学习MySQL主从复制,从以下几个方面进行: 1. 什么是MySQL主从复制? 2. 为什么要使用主从复制? 3. 主从复制的原理? 4. 主从复制的劣势? 5. 主从切换 6. 实际操作 一.什么是 ...

  7. MySQL主从复制原理解析

    MySQL主从复制原理 1.为什么需要MySQL的主从复制? 2.什么是MySQL的主从复制? 3.MySQL主从复制原理 原理 具体步骤 对于MySQL主从复制,我们已经在[MySQL主从复制安装配 ...

  8. mysql主从复制原理详解_简述 MySQL 逻辑架构与主从复制原理。

    ↑ 点击上面 "时代Java"关注我们,关注新技术,学习新知识! 1.Mysql逻辑架构图 如果能在脑海中构建出MySql各组件之间如何协同工作的架构图,就会有助于深入理解MySq ...

  9. mysql主从复制原理 简书_mysql主从复制,从原理讲到安装配置,全干货

    0.为什么需要主从复制? 1.在业务复杂的系统中,有这么一个情景,有一句sql语句需要锁表,导致暂时不能使用读的服务,那么就很影响运行中的业务,使用主从复制,让主库负责写,从库负责读,这样,即使主库出 ...

  10. mysql主从复制原理详解_MySQL主从复制没使用过?三大步骤让你从原理、业务上理解透彻...

    成长是一棵树,总是在你不知不觉的情况下快乐长大:成长是一株草,总是在你不知不觉的情况下长满大地:成长是一朵花,总是在你不知不觉的情况下开满山头. 这不,随着时间的迁移.项目网站的用户量.数据量持续上升 ...

最新文章

  1. Oracle TNS协议中数据包的内部结构
  2. ARM QT实现多点触摸【转】
  3. DOS命令解决端口冲突问题
  4. linux yum lamp环境,linux centos yum安装LAMP环境
  5. 直流UPS的研究和应用前景
  6. 解决ArcGIS 9.3卸载时出现invalid install.log file的方法
  7. Latex 插入目录 设置首页页码为空
  8. 树还没有叶子的飞鸽传书
  9. 改善深层神经网络:超参数调整、正则化以及优化——2.3指数加权平均
  10. hosts文件 端口_中望软件:中望3D网络版服务端如何固定端口
  11. python2安装pip2(python3安装pip)
  12. OMV搭建系列教程[5] – 安装Aria2
  13. 局域网是计算机硬件和什么结合的,2017年计算机硬件知识备考试题及答案
  14. 2019参加Python开发培训靠谱吗?
  15. CHROME扩展笔记之webRequest·图片拦截
  16. 产品升级|1-2月合刊:多款重磅产品来袭!
  17. Android手机提示“未安装应用程序”
  18. nginx: [warn] conflicting server name aaa.bbbb.com on 0.0.0.0:80, ignored
  19. 计算有固定收入的党员每月所交纳的党费。月工资收入400元及以下者,交纳月工资总额的0.5%;月工资收入401~600元者,交纳月工资总额的1%;月工资收入601~800元者,交纳月工资总额的1.5%;
  20. 新星计划结果公布啦,看看你上榜了没?

热门文章

  1. 【转载】Python中numpy 数组的切片操作
  2. 5月书讯丨​​《联邦学习》带队,10新书给你全方位的技能提升
  3. Spark:超越Hadoop MapReduce
  4. 通过Gradle为APK瘦身
  5. 疯狂连连看之开发游戏界面组件
  6. 都是过客,相煎何急?
  7. sql语法、特殊符号及正则表达式的使用
  8. C++中派生类的构造函数
  9. ubuntu postgresql9.5 源码安装
  10. 力扣-414 第三大的数