实现MySQL数据库的实时备份

MYSQL官网复制功能介绍:https://dev.mysql.com/doc/refman/5.7/en/replication.html

参考 : http://www.cnblogs.com/wu-jian/p/9396739.html

参考: http://www.cnblogs.com/wu-jian/p/9396739.html

 

  • 目前成熟的实时备份为双机(master/slave),是基于同步日志事件来实现,那单机如何实现具有增量的备份呢?可以借用双机的原理,非常简单,实施步骤如下: 

    Mysql版本:mysql4.0+ 

    1、
    vi my.cfg 

    [mysqld]log-update=/home/backup/update #添加该行 


    2、
    service mysql restart 


    会在/home/backup/update00001文件,内容为数据库变化的所有SQL(没有select) 

    3、每天的全备,mysql4.0+最简单就是备份data目录。 
     
    service mysql stoptar -czf data(日期).tar.gz mysql/dataservice mysql start 


    当mysql启动时系统会自动在/home/backup/创建update0000*的文件,那我们可以用该文件作为当天全备的增量实时备份。 

    4、数据还原 
     
    service mysql stoptar -zxvf data(日期).tar.gz mysql/service mysql startmysqladmin -u -p /home/backup/update0000* 


    如想还原昨天、前天的数据只需要找相应的update0000*来还原即可:) 

    以下是补充: 

    1、MYSQL数据库提供了一种主从备份的机制,其实就是把主数据库的所有的数据同时写到备份数据库里面,从而实现MYSQL数据库的实时备份。 

    2、版本要求,首先要保证主服务器和从服务器的MYSQL版本都高于3.2,另外,从数据库的版本可以高于主服务器,但不能低于主服务器。 

    3、主服务器设置: 

    A、先修改MY.INI中有关log-bin的设置,这是记录数据库更改的日志,由于MYSQL的复制机制,是基于日志的,所以主服务器必须要支持更改日志才可以。 

    接着设置要写入日志的数据库,或者不要写入日志的数据库,这是为了告诉MYSQL,那个库需要备份,哪个不需要。 

    下面是配置详情: 
     
    server-id=1 //数据库的id这个应该默认是1就不用改动 
    
    log-bin=log_name //日志文件的名称,这里可以制定日志到别的目录 如果没有设置则默认主机名的一个日志名称 
    
    binlog-do-db=db_name //记录日志的数据库 
    
    binlog-ignore-db=db_name //不记录日志的数据库 


    上面的binlog-do-db和binlog-ignore-db可以设置成多个数据库,每个数据库名称之间用“,”分割开。 

    下一步是设置同步数据库的用户账号 
     
    mysql> GRANT REPLICATION SLAVE ON *.* 


    -> TO ‘备份用户名'@'只能从这个IP登录' IDENTIFIED BY ‘备份用户密码'; 

    设置好以后,重启一下数据库服务。 

    B、锁定现有的数据,并将数据备份 

    数据库锁定的命令是: 
     
    mysql> FLUSH TABLES WITH READ LOCK; 


    然后进入mysql的data目录,然后打包你需要备份的数据库目录。 

    C、现在可以查看主服务器的状态了: 

    命令如下: 
     
    mysql> FLUSH TABLES WITH READ LOCK; 


    返回结果会是这样的 
     
    +—————+———-+————–+——————+ 
    
    | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | 
    
    +—————+———-+————–+——————+ 
    
    | mysql-bin.003 | 73 | test | manual,mysql | 
    
    +—————+———-+————–+——————+ 


    当然,这个表,显示了你刚才在MY.INI中写入的配置。 

    然后解锁数据库: 
     
    mysql> UNLOCK TABLES; 


    4、从服务器设置 

    还是和刚才一样,修改数据库配置文件,即MY.INI 

    配置详情如下: 
     
    server-id=n //设置数据库id默认主服务器是1可以随便设置但是如果有多台从服务器则不能重复。 
    
    master-host=db-master.mycompany.com //主服务器的IP地址或者域名 
    
    master-port=3306 //主数据库的端口号 
    
    master-user=pertinax //同步数据库的用户 
    
    master-password=freitag //同步数据库的密码 
    
    master-connect-retry=60 //如果从服务器发现主服务器断掉,重新连接的时间差 
    
    report-host=db-slave.mycompany.com //报告错误的服务器 


    然后将你刚才打包的数据库文件拷贝到你的从数据库目录中。 

    重启从数据库服务器。 

    然后停止SLAVE的服务 
     
    mysql> slave stop; //停止slave的服务 


    停止之后,还是在mysql提示符下,设置主服务器的各种参数 

    命令如下: 
     
    mysql> CHANGE MASTER TO 
    
    -> MASTER_HOST='master_host_name', //主服务器的IP地址 
    
    -> MASTER_USER='replication_user_name', //同步数据库的用户 
    
    -> MASTER_PASSWORD='replication_password', //同步数据库的密码 
    
    -> MASTER_LOG_FILE='recorded_log_file_name', //主服务器二进制日志的文件名(前面要求记住的参数) 
    
    -> MASTER_LOG_POS=recorded_log_position; //日志文件的开始位置(前面要求记住的参数) 


    然后启动同步数据库的进程 
     
    mysql> slave start; 

    完毕!
     

你可能感兴趣的:(数据库,mysql)