zoukankan      html  css  js  c++  java
  • mysql实现主从备份

    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项目怎么配置读写分离。 

    敬请期待。

  • 相关阅读:
    C语言I博客作业08
    C语言I博客作业07
    C语言I博客作业06
    C语言I博客作业05
    C语言I博客作业04
    C语言|博客作业02
    作业02
    第一周作业
    学期总结
    第一次作业
  • 原文地址:https://www.cnblogs.com/baoyi/p/mysql_master_slave.html
Copyright © 2011-2022 走看看