日志

数据库主从复制

 来源    2020-08-01    1  

主从复制是MySQL中最重要的功能之一。主从复制是指一台服务器充当主数据库服务器,另一台或多台服务器充当从数据库服务器,主服务器中的数据自动复制到从服务器之中。对于多级复制,数据库服务器即可充当主机,也可充当从机。MySQL主从复制的基础是主服务器对数据库修改记录二进制日志,从服务器通过主服务器的二进制日志自动执行更新。

主从复制的类型:

1.基于语句的复制

主服务器上面执行的语句在从服务器上面再执行一遍
存在的问题:时间上可能不完全同步造成偏差,执行语句的用户也可能不是同一个用户。

2.基于行的复制

把主服务器上面改编后的内容直接复制过去,而不关心到底改变该内容是由哪条语句引发的
存在的问题:比如一个工资表中有一万个用户,我们把每个用户的工资+1000,那么基于行的复制则要复制一万行的内容,由此造成的开销比较大,而基于语句的复制仅仅一条语句就可以了。

3.混合类型的复制

MySQL默认使用基于语句的复制,当基于语句的复制会引发问题的时候就会使用基于行的复制,MySQL会自动进行选择。

主从复制的原理:

主服务器上面的任何修改都会保存在二进制日志Binary log里面
从服务器上面启动一个I/O thread,连接到主服务器上面请求读取二进制日志,然后把读取到的二进制日志写到本地的一个Realy log(中继日志)里面。
从服务器上面开启一个SQL thread定时检查Realy log,如果发现有更改立即把更改的内容在本机上面执行一遍。

主从复制的步骤:

主服务器:ip:192.168.10.139  系统:Rhel7 数据库Maria DB            
从服务器:ip:192.168.10.129  系统:Centos6.5  数据库:MySQL

主服务器配置:

  • 修改主服务器配置文件 /etc/my.cnf  ,修改完后需要重启mysql服务
[mysqld]
log-bin=mysql-bin         //启用二进制日志 (必选)
server-id=139             //设置服务器唯一ID,一般取IP最后一段(必选)
binlog-do-db=140          //指定对db_nameA记录二进制日志 (可选) 
binlog-ignore-db=mysql    //指定不对db_namB记录二进制日志(可选)
  • 为从服务器添加mysql账户并配置权限,在主服务器上,必须为从服务器创建一个用来连接主服务器的用户,并设置replication slave权限
mysql>grant  replication  slave  on  *.*   to  backup@'192.168.10.129'   identified   by   '123';    
 //创建backup用户,密码为123,并且配置好权限
  • 刷新权限:flush   privileges;
  • 验证是否开启主从复制:
select * from user where user = 'backup'  \G;
  • 查看主服务器正在使用二进制日志状态:
show master status;

从服务器配置 :

  • 修改从服务器配置文件 /etc/my.cnf  ,修改完后需要重启mysql服务:service  mysqld restart
[mysqld]
server-id=129              //必须服务器唯一ID,一般取IP最后一段
  • 进入数据库,设置主服务器信息:
mysql> change master to master_host='192.168.10.139',
    -> master_user='backup',
    -> master_password='123',
    -> master_log_file='mysql-bin.000001',
    -> master_log_pos=245;
  • 开启从服务器复制二进制日志,实现同步功能: slave  start ;
  • 验证数据库相关参数: show  slave  status  \G;

数据库的备份和还原:

衡量备份还原的指标:

  • RPO:恢复点目标,恢复的程度
  • RIO:恢复时间目标,恢复花费的时间

备份方式:

  • 冷备份:拷贝数据库目录,需要先停机再备份,对于在线不间断提供业务的不适用
  • 快照备份:lvm快照,mysql装在lvm创建的分区,可以热备份(在线备份),缺点在于所有的文件,包括数据、日志等需要存放在一个逻辑卷中,然后再对卷快照备份,只支持本地备份,生产环境用的也比较少
  • 逻辑备份: mysqldump工具,单线程备份,备份速度较慢;mydumper工具,mysqldump升级版,有限制条件

备份单个库:

  • 备份:
    mysqldump  -uroot  -p   dbname1> 1.sql
  • 还原:
    mysql  -uroot  -p   dbname2 < 1.sql

备份多个库:

  • 备份:
    mysqldump  -uroot  -p  --database  db1  db2 > 1.sql
  • 还原: 
    mysql  -uroot -p  < 1.sql

备份全部库:

  • 备份:
    mysqldump  -uroot  -p  --all-databases >  1.sql
  • 还原:
    mysql  -uroot  -p  <  1.sql

备份单个表:

  • 备份:
    mysqldump  dbname1  tb1 >  1.sql
  • 还原: 
    mysql  -uroot  -p   dbname2 <  1.sql

相关文章
项目实战7—Mysql实现企业级数据库主从复制架构实战
日志Mysql实现企业级数据库主从复制架构实战 环境背景:公司规模已经形成,用户数据已成为公司的核心命脉,一次老王一不小心把数据库文件删除,通过mysqldump备份策略恢复用了两个小时,在这两小时中,公 ...
1
MySQL+Amoeba实现数据库主从复制和读写分离
日志MySQL读写分离是在主从复制的基础上进一步通过在master上执行写操作,在slave上执行读操作来实现的.通过主从复制,master上的数据改动能够同步到slave上,从而保持了数据的一致性.实现 ...
MySQL数据库主从复制实践
日志    MySQL 主从(MySQL Replication),主要用于 MySQL 的实时备份.高可用HA.读写分离.在配置主从复制之前需要先准备 2 台 MySQL 服务器. 一.MySQL主从原 ...
1
mysql数据库主从复制部署笔记
日志主从复制是mysql中数据库实时同步的一个常用做法了,今天我来给各位介绍一下关于mysql数据库主从复制部署一个过程,希望此例子对各位同学参考参考. 数据库主从复制原理: 数据库的主从复制就是从mas ...
MariaDB数据库主从复制实现步骤
日志一.MariaDB简介 MariaDB数据库的主从复制方案,是其自带的功能,并且主从复制并不是复制磁盘上的数据库文件,而是通过binlog日志复制到需要同步的从服务器上. MariaDB数据库支持单向 ...
1
yii2操作数据库 mysql 读写分离 主从复制
日志转载地址:http://www.kuitao8.com/20150115/3471.shtml 开始使用数据库首先需要配置数据库连接组件,通过添加 db 组件到应用配置实现("基础的&quo ...
mysql主从复制实现数据库同步
日志mysql主从复制相信已经用得很多了,但是由于工作原因一直没怎么用过.趁着这段时间相对空闲,也就自己实现一遍.尽管互联网上已有大把类似的文章,但是自身实现的仍然值得记录. 环境: 主服务器:cento ...
1
数据库锁表备份及主从复制
日志change master to master_host='10.0.20.201',master_user='repl',master_password='123456',master_log_fi ...
1
redis数据库安装 redis持久化及主从复制
日志----------------------------------------安装redis-5.0.4---------------------------------------- wget h ...
1
MySQL主从复制解决数据库单点问题
日志一.单个数据库服务器的缺点 数据库服务器存在单点问题: 数据库服务器资源无法满足增长的读写请求: 高峰时数据库连接数经常超过上限. 二.如何解决单点问题 增加额外的数据库服务器,组建数据库集群: 同一 ...
1
JAVAEE——宜立方商城13:Mycat数据库分片、主从复制、读写分离、100%Linux中成功安装Mysql的方法
日志1 海量数据的存储问题 如今随着互联网的发展,数据的量级也是撑指数的增长,从GB到TB到PB.对数据的各种操作也是愈加的困难,传统的关系性数据库已经无法满足快速查询与插入数据的需求.这个时候NoSQL ...
mysql主从复制数据库
日志mysql主从复制相信已经用得很多了,但是由于工作原因一直没怎么用过.趁着这段时间相对空闲,也就自己实现一遍.尽管互联网上已有大把类似的文章,但是自身实现的仍然值得记录. 环境: 主服务器:cento ...
1
MySQL主从复制-指定数据库复制
日志在/etc/my.cnf添加需要进行同步的数据库信息 #需要进行同步的数据库 #replicate-do-db=custmgr #replicate-do-db=sdata #replicate-ig ...
数据库(三)—— 数据库存储引擎、日志、备份、主从复制、高可用架构
日志数据库存储引擎.日志.备份.主从复制.高可用架构 一.存储引擎 1.存储引擎作用 存储引擎和磁盘上的数据交互 2.mysql存储引擎类型 Innodb存储引擎 ibd:存储表的数据行和索引 frm:表 ...
1
Redis数据库 02事务| 持久化| 主从复制| 集群
日志1. Redis事务 Redis不支持事务,此事务不是关系型数据库中的事务:   Redis事务是一个单独的隔离操作:事务中的所有命令都会序列化.按顺序地执行.事务在执行的过程中,不会被其他客户端发送 ...
1
Mysql数据库的主从复制
日志Mysql数据库的主从复制 为什么要进行mysql的主从复制 冗余:promte(提升为主),异地灾备 扩展:转移一部分"读"请求: 支援安全的备份操作: 测试: ... mysq ...
MySQL数据库企业级应用实践(主从复制)
日志MySQL数据库企业级应用实践(主从复制) 链接:https://pan.baidu.com/s/1ANGg3Kd_28BzQrA5ya17fQ 提取码:ekpy 复制这段内容后打开百度网盘手机App ...
1
docker+mysql 构建数据库的主从复制
日志docker+mysql 构建数据库的主从复制 在最近的项目中,决定将项目改造成数据库读写分离的架构,后续会有博文详细讲述我的开发改造,本文主要记录我是如何一步步的构建数据库的主从复制. 为什么使用d ...
1
在使用带有Django的ThreadPoolExecutor时,数据库“正由其他用户访问”错误
问答我正在开发一个项目,我们解析一个有点大的文件并使用ThreadPoolExecutor异步处理每一行(我们为每一行进行API调用).这曾经是同步完成的,我们有一个通过测试套件.但是,现在,当运行测试时 ...
2