zoukankan      html  css  js  c++  java
  • MySQL的主从备份

    1.MySQL复制概述

    mysql数据库支持同步复制、单向、异步复制,在复制的过程中一个服务器充当主服务器,而一个或多个服务器充当从服务器。
    主服务器将更新写入二进制日志文件,并维护文件的索引以跟踪日志循环;这些日志可以记录发送到从服务器的更新。

    当一个从服务器连接主服务器时,它通知主服务器从服务器在日志中读取的最后一次成功更新的位置;从服务器接收从那时起发生的任何更新,然后封锁并等待主服务器通知新的位置。

    注:当进行复制时,所有对复制中的表的更新必须在主服务器上进行;避免用户对主服务器上的表进行的更新与对从服务器上的表进行的更新之间的冲突。

    2.MySQL数据复制的原理(3个进程)

    MySQL复制基于主服务器在二进制日志bin-log中跟踪所有对数据的更改;因此,复制必须在主服务器上启用二进制日志,每个从服务器接收主服务器已经记录到中继日志relay-log保存的更新,以便从服务器可以对其数据拷贝执行相同的更新。

    3.Linux下MySQL主从备份实验(单向备份)

    环境准备:
    centos6.0 64位
    master:10.0.0.101
    slave:10.0.0.102

    (1)主服务器配置:

    #vim /etc/my.cnf
    #在[mysqld]标签下添加:
    log-bin=mysql-bin      #开启binlog日志
    server-id=1            #为当前节点设置一个全局唯一的ID号
    #重启数据库
    service mysqld restart
    #创建具有复制权限的数据库账号
    mysql> grant replication slave on *.* to 'slave'@'%' identified by '123456';
    mysql> flush privileges;
    
    #查看当前的bin-log日志和日志位置
    mysql> show master statusG
    *************************** 1. row ***************************
                File: mysql-bin.000027
            Position: 8442935
        Binlog_Do_DB: 
    Binlog_Ignore_DB: 
    1 row in set (0.00 sec)
    

    (2)从服务器配置

    #vim /etc/my.cnf
    #在[mysqld]标签下添加:
    log-bin=mysql-bin      #开启binlog日志
    server-id=2            #为当前节点设置一个全局唯一的ID号
    #重启数据库
    service mysqld restart
    
    mysql> change master to master_host='10.0.0.101',
        -> master_user='slave',
        -> master_password='123456',
        -> master_log_file='mysql-bin.000027',
        -> master_log_pos=8442935;
    
    mysql> start slave;
    
    mysql> show slave status G
    *************************** 1. row ***************************
                   Slave_IO_State: Waiting for master to send event
                      Master_Host: 10.0.0.101
                      Master_User: slave
                      Master_Port: 3306
                    Connect_Retry: 60
                  Master_Log_File: mysql-bin.000027
              Read_Master_Log_Pos: 8442935
                   Relay_Log_File: lfs-relay-bin.000002
                    Relay_Log_Pos: 253
            Relay_Master_Log_File: mysql-bin.000027
                 Slave_IO_Running: Yes
                Slave_SQL_Running: Yes
    #Slave_IO_Running和Slave_SQL_Running都为Yes表示成功
    
    作者:ccku
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。如有问题或建议,请多多赐教,非常感谢。
  • 相关阅读:
    第4章-控制执行流程
    第3章-运算符
    第2章-对象
    第10章-内部类II
    第10章-内部类
    基于gtest、gmock、mockcpp和lcov的C语言LLT工程 —— LLT构造和lcov查看覆盖率实例
    字符设备驱动框架讲解
    基于Hadoop分布式集群YARN模式下的TensorFlowOnSpark平台搭建
    给 Virtualbox 中 Ubuntu 系统设置静态 IP
    小白请教几个关于Java虚拟机内存分配策略的问题
  • 原文地址:https://www.cnblogs.com/ccku/p/13568193.html
Copyright © 2011-2022 走看看