mysql主从复制(原理以及配置)
目录
- 主从原理
- 配置实现
- 实验介绍
- 配置主服务器:
- 配置从服务器
- 测试:
主从原理
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主从复制(原理以及配置)相关推荐
- MySQL主从复制原理、半同步操作步骤及原理
MySQL主从复制原理.半同步操作步骤及原理 1.1 企业Linux运维场景数据同步方案 1.1.1 文件级别的异机同步方案 1.scp/sftp/nc 命令可以实现远程数据同步. 2.搭建ftp/h ...
- MySQL主从复制原理应用基础
mysql主从复制 mysql支持单向 双向 链式级联 实时 异步复制,在复制过程中,一台服务器充当主服务器(Master),而一个或多个其他服务器充当从服务器(Slave) mysql主从复制的应用 ...
- MySQL主从复制原理(原理+实操)
1.MySQL主从复制原理(原理+实操) 主从复制简介 在实际的生产中,为了解决Mysql的单点故障已经提高MySQL的整体服务性能,一般都会采用「主从复制」. 比如:在复杂的业务系统中,有一句sql ...
- 五、MySQL主从复制原理
MySQL主从复制原理.半同步操作步骤及原理 标签(空格分隔): mysql 1.1 企业Linux运维场景数据同步方案 1.1.1 文件级别的异机同步方案 1.scp/sftp/nc 命令可以实现远 ...
- mysql主从复制安装部署配置操作步骤及主从库宕机处理办法
mysql主从复制安装部署配置操作步骤及主从库宕机处理办法 大家好,我是酷酷的韩~ 1.前期准备 (1)首先需要准备至少两台mysql 这里方便演示,用了两台虚拟机 环境是centos7 主: 172 ...
- MySQL主从复制原理
学习MySQL主从复制,从以下几个方面进行: 1. 什么是MySQL主从复制? 2. 为什么要使用主从复制? 3. 主从复制的原理? 4. 主从复制的劣势? 5. 主从切换 6. 实际操作 一.什么是 ...
- MySQL主从复制原理解析
MySQL主从复制原理 1.为什么需要MySQL的主从复制? 2.什么是MySQL的主从复制? 3.MySQL主从复制原理 原理 具体步骤 对于MySQL主从复制,我们已经在[MySQL主从复制安装配 ...
- mysql主从复制原理详解_简述 MySQL 逻辑架构与主从复制原理。
↑ 点击上面 "时代Java"关注我们,关注新技术,学习新知识! 1.Mysql逻辑架构图 如果能在脑海中构建出MySql各组件之间如何协同工作的架构图,就会有助于深入理解MySq ...
- mysql主从复制原理 简书_mysql主从复制,从原理讲到安装配置,全干货
0.为什么需要主从复制? 1.在业务复杂的系统中,有这么一个情景,有一句sql语句需要锁表,导致暂时不能使用读的服务,那么就很影响运行中的业务,使用主从复制,让主库负责写,从库负责读,这样,即使主库出 ...
- mysql主从复制原理详解_MySQL主从复制没使用过?三大步骤让你从原理、业务上理解透彻...
成长是一棵树,总是在你不知不觉的情况下快乐长大:成长是一株草,总是在你不知不觉的情况下长满大地:成长是一朵花,总是在你不知不觉的情况下开满山头. 这不,随着时间的迁移.项目网站的用户量.数据量持续上升 ...
最新文章
- Oracle TNS协议中数据包的内部结构
- ARM QT实现多点触摸【转】
- DOS命令解决端口冲突问题
- linux yum lamp环境,linux centos yum安装LAMP环境
- 直流UPS的研究和应用前景
- 解决ArcGIS 9.3卸载时出现invalid install.log file的方法
- Latex 插入目录 设置首页页码为空
- 树还没有叶子的飞鸽传书
- 改善深层神经网络:超参数调整、正则化以及优化——2.3指数加权平均
- hosts文件 端口_中望软件:中望3D网络版服务端如何固定端口
- python2安装pip2(python3安装pip)
- OMV搭建系列教程[5] – 安装Aria2
- 局域网是计算机硬件和什么结合的,2017年计算机硬件知识备考试题及答案
- 2019参加Python开发培训靠谱吗?
- CHROME扩展笔记之webRequest·图片拦截
- 产品升级|1-2月合刊:多款重磅产品来袭!
- Android手机提示“未安装应用程序”
- nginx: [warn] conflicting server name aaa.bbbb.com on 0.0.0.0:80, ignored
- 计算有固定收入的党员每月所交纳的党费。月工资收入400元及以下者,交纳月工资总额的0.5%;月工资收入401~600元者,交纳月工资总额的1%;月工资收入601~800元者,交纳月工资总额的1.5%;
- 新星计划结果公布啦,看看你上榜了没?