mysql 主从备份的原理:

主服务器在做数据库操作的时候将所有的操作通过日志记录在binlog里面,有专门的文件存放。如localhost-bin.000003,这种,从服务器 和主服务配置好关系后,通过I/O线程获取到这个binlog文件然后写入到从服务器的relaylog(中继日志)中,然后从服务器执行从服务器中的sql语句进行数据库的同步。

实现:

准备:两台服务器,mysql环境,可以是Windows,Linux,下面是两台Linux服务器,192.168.3.32(主),192.168.3.31(从)。

1. 配置主服务器上mysql的配置文件,配置文件在/etc/my.cnf
log_bin放开注释
server-id=1 新增
2. 重启数据库
systemctl start mysqld
3. 创建复制用户并赋权限给从服务器 把主服务的所有东西。

grant replication slave on *.* to 'slave'@'192.168.3.31' identified by 'Pangolin123!';

注:‘slave’是复制数据的用户名,'Pangolin123!'是密码。192.168.3.31 可以改成%,表示所有的从服务器都可以。不做限制。
4. 更新权限

flush privileges; 
5. 在从服务器上进行配置数据库
server-id=2 
6. 重启数据库
systemctl start mysqld
7. 在从服务器上进行从数据库的复制数据的配置

首先登录 mysql -uroot -p

stop slave;

change master to master_host='192.168.3.32', master_user='slave',
master_password='Pangolin123!',master_log_file='mysql-bin.000006',
master_log_pos=2060 ;

注:mysql-bin.000006 这个东西需要自己找,在mysql的安装目录 /var/lib/mysql下面

start slave;

show slave status \G;

查看是否正常:

这两个Yes表示正常。

8. 测试。

9. 错误总结:

错误1:从服务器 show slave status \G; 显示

Slave_IO_Running:NO

Last_IO_Error: Got fatal error 1236 from master when reading data from binary log: 'Binary log is not open'

我解决的办法是重启一下就好了。

重启之后再mysql的目录下就可以看到  binlog的生成。

错误2

Slave_IO_Running:NO

Got fatal error 1236 from master when reading data from binary log: 'Could not find first log file name in binary log index file'

解决方案:在主服务器上进行日志刷新

mysql -uroot -p

flush logs;

show master status;

显示这个,

然后到从服务器上重新配置binlog文件。

stop slave;

CHANGE MASTER TO MASTER_LOG_FILE='localhost-bin.000003',MASTER_LOG_POS=322;

start slave;

show slave status \G;

错误3:

Got fatal error 1236 from master when reading data from binary log: 'log event entry exceeded max_allowed_packet; Increase max_allowed_packet on master; the first event 'localhost-bin.000002' at 107, the last event read from './localhost-bin.000002' at 123, the last byte read from './localhost-bin.000002' at 126.'

是由于配置错了binlog文件的开始位置。参考错误2 重新配置即可。

主从配置已完,下篇是springboot项目怎么配置读写分离。

敬请期待。

mysql实现主从备份的更多相关文章

  1. mysql数据库主从备份

    近期实验室总是不给通知的就停电,导致我们在不停的恢复服务.在某一个断电的过程中,发现我们的项目管理工具redmine的硬盘挂掉了..因为是部署在虚拟机上的,也没做冗余,数据就丢了..于是反思,我们的m ...

  2. Linux下的Mysql的主从备份

    MySQL复制概述 MySQL数据库支持同步复制.单向.异步复制,在复制的过程中一个服务器充当主服务,而一个或多个服务器充当从服务器.主服务器将更新写入二进制日志文件,并维护文件的一个索引以跟踪日志循 ...

  3. mysql主从备份及常见问题处理

    1.mysql主从备份基本原理 mysql支持单向.异步复制,复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器.mysql复制基于主服务器在二进制日志中跟踪所有对数据库的更改(更新 ...

  4. Mysql主从备份和SQL语句的备份

    MySQL服务器的主从配置,本来是一件很简单的事情,无奈不是从零开始,总是在别人已经安装好的mysql服务器之上 ,这就会牵扯到,mysql的版本,启动文件,等一些问题. http://www.cnb ...

  5. mysql主从备份+keepalived自动切换

    数据库这一层需要做到避免单点故障可以是主从备份和主主备份,主主备份可能有性能损耗和数据同步的问题.这里记录下主从备份, mysql进行备份之前确保mysql的版本是一样的,我这里用的都是mysql5. ...

  6. 检测MySQL主从备份是否运行

    通过查看 slave  状态,确保 Slave_IO_Running: Yes Slave_SQL_Running: Yes #!/bin/bash#Author:Darius-Dmysql -uro ...

  7. MySQL主从备份配置实例

    转载自:https://www.cnblogs.com/ahaii/p/6307648.html MySQL主从备份配置实例 场景: 1.主服务器192.168.0.225.从服务器192.168.0 ...

  8. mysql主从备份及原理分析

    一.mysql主从备份(复制)的基本原理mysql支持单向.异步复制,复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器.mysql复制基于主服务器在二进制日志中跟踪所有对数据库的更 ...

  9. mysql主从备份功能配置与測试

    在高訪问量服务环境下,单机配置mysql服务将无法满足频繁快速的数据读写操作. 一旦mysql出现故障造成数据丢失.无法恢复. 因此.在mysql服务上启用主从备份功能,支持读写分离技术.最靠可的是搭 ...

随机推荐

  1. java线程之线程同步

    本篇由于涉及多线程操作,所以线程是使用实现Runnable接口来创建的. 在上篇所示线程任务中,我们不难发现,是存在三步操作的: 第一:打印语句: 第二:计算sum=sum-1: 第三:线程休眠. 那 ...

  2. 关于css盒模型

    在css中,width和height指的是内容区域的宽度和高度.增加内边距,边框和外边距不会影响内容区域的尺寸,但是会增加元素框的总尺寸.假设框的每个边上有10个像素的外边距和5像素的内边距,如果希望 ...

  3. python_pycharm下拉前置标示

    在pycharm中是自动补全的变量的类别p:parameter 参数m:method方法c:class 类v:variable 变量f:function 函数 从定义的角度上看,我们知道函数(func ...

  4. SSM-MyBatis-13:Mybatis中多条件查询

    ------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 实体类 public class Book { private Integer bookID; private ...

  5. 修复lvm的逻辑卷

    一.背景 公司传统的服务器不知道什么朝代的朝臣用lvm分区,1T的硬盘分了50G挂载到根目录"/"里面有/var./usr--,剩下的挂载到了"/home"目录 ...

  6. call(),apply()方法解析(一)

    1.call()和apply()的作用是改变this指向,区别是传参列表不同(前者连续参数,后者为参数数组) 2.方法定义: function.apply(thisObj[, argArray]) f ...

  7. Project facet Java version 1.8 not supported JDK版本不对无法启动项目解决办法

    https://jingyan.baidu.com/article/6c67b1d69a59a02787bb1e30.html

  8. 关于jquery日期控件及时间格式转换2017.05.27

    开始时间:<input type="date" id="starttime" class="time"/>//data为日期控件 ...

  9. adb常用操作命令

    1.adb简介:    adb,即 Android Debug Bridge.通过这个工具和android进行交互操作 2.adb命令格式:    adb [-d|-e|-s <serialNu ...

  10. tkinter中布局pack、place和grid(八)

    tkinter中布局pack.place和grid pack布局 import tkinter wuya = tkinter.Tk() wuya.title("wuya") wuy ...