• linux数据库备份


    linux数据库备份

    服务端启用二进制日志

    如果日志没有启开,必须启用binlog,要重启mysql,首先,关闭mysql,打开/etc/my.cnf,加入以下几行:

    [mysqld]
    log-bin
    

    然后重新启动mysql,会产生hostname-bin.000001以及hostname-bin.index,前面的日志文件是记录所有对数据的更新操作,后面的文件是存储所有二进制文件的索引,不能轻易被删除。

    重启

    [root@localhost ]# service mysqld start (5.0版本是mysqld) 
    [root@localhost ]# service mysql start (5.5.7版本是mysql)
    

    查看日志状态

    Mysqldump备份执行脚本

    # Name:backup.sh
    # This is a ShellScript For Auto DB Backup and Delete old Backup
    #备份地址
    backupdir=/var/lib/mysql-files/mysqlbackup
    #备份文件后缀时间
    time=_` date +%Y_%m_%d_%H_%M_%S `
    #需要备份的数据库名称
    db_name=bike_system
    #mysql 用户名
    db_user=root
    #mysql 密码
    db_pass=bicycle
    #mysqldump命令使用绝对路径,-flush-logs刷新biglog日志
    mysqldump -flush-logs -u$db_user -p$db_pass --databases $db_name | gzip > $backupdir/$db_name$time.sql.gz
    #删除7天之前的备份文件
    find $backupdir -name $db_name"*.sql.gz" -type f -mtime +7 -exec rm -rf {} ; > /dev/null 2>&1
    echo "success"
    

    设置脚本定时执行

    输入:crontab -e
    选择一个编辑器
    在文件末尾添加:

    30 1 * * * /var/lib/mysql-files/backup.sh
    #每晚1点半执行数据库备份脚本 
    

    Mysqldump用法参考

    用法:mysqldump[options][db_name[tbl_name...]]
    主要选项解释:
    --all-databases,-A:备份所有数据库
    --databases,-B:要备份的数据库,可以同时备份多个,使用空格分隔
    --flush-logs,-F:备份前、请求到锁之后滚动日志,要记录下复制时的二进制日志
    --flush-privileges:通知数据库重读授权表
    --host=host_name,-hhost_name:要备份的数据库的主机名,可以基于网络备份
    --lock-all-tables,-x:请求锁定所有表之后再备份,对MyISAM,InnoDB,Aria做温备
    --single-transaction:能够对InnoDB存储引擎实现热备
    -uusename备份的用户名
    -ppassword登陆数据库的密码
    --events:备份事件调度器代码
    --routines:备份存储过程和存储函数
    --triggers:备份触发器
    --master-date={0|1|2},0表示不记录,1表示距离为changemaster语句,2表示记录为注释的changemaster语句
    

    1.备份全部数据库的数据和结构
    mysqldump -uroot -p123456 -A >F:all.sql
    2.备份全部数据库的结构(加 -d 参数)
    mysqldump -uroot -p123456 -A-d>F:all_struct.sql
    3.备份全部数据库的数据(加 -t 参数)
    mysqldump -uroot -p123456 -A-t>F:all_data.sql
    4.备份单个数据库的数据和结构(,数据库名mydb)
    mysqldump -uroot-p123456 mydb>F:mydb.sql
    5.备份单个数据库的结构
    mysqldump -uroot -p123456 mydb-d>F:mydb.sql
    6.备份单个数据库的数据
    mysqldump -uroot -p123456 mydb-t>F:mydb.sql
    7.备份多个表的数据和结构(数据,结构的单独备份方法与上同)
    mysqldump -uroot -p123456 mydb t1 t2>f:multables.sql
    8.一次备份多个数据库
    mysqldump -uroot -p123456 --databases db1 db2>f:muldbs.sql

    还原部分分(1)mysql命令行source方法 和 (2)系统命令行方法
    1.还原全部数据库:
    (1) mysql命令行:mysql>source f:all.sql
    (2) 系统命令行: mysql -uroot -p123456 <f:all.sql
    2.还原单个数据库(需指定数据库)
    (1) mysql>use mydb
    mysql>source f:mydb.sql
    (2) mysql -uroot -p123456 mydb <f:mydb.sql
    3.还原单个数据库的多个表(需指定数据库)
    (1) mysql>use mydb
    mysql>source f:multables.sql
    (2) mysql -uroot -p123456 mydb<f:multables.sql
    4.还原多个数据库,(一个备份文件里有多个数据库的备份,此时不需要指定数据库)
    (1) mysql命令行:mysql>source f:muldbs.sql
    (2) 系统命令行: mysql -uroot -p123456<f:muldbs.sql

    Biglog还原参考

    mysqlbinlog --start-datetime=“时间” 日志文件路径 | mysql -u用户 -p 从规定的起始时间还原到现在

    mysqlbinlog --stop-datetime=“时间” 日志文件路径 | mysql -u用户 -p 从最开始还原到规定的结束时间

    mysqlbinlog --start-datetime=“时间” --stop-datetime=“时间” 日志文件路径 | mysql -u用户 -p 从规定的起始时间还原到规定的结束时间

    通过位置还原:

    --start-position="还原数据的起始位置"

    --stop-position="还原数据的结束位置"

    mysqlbinlog --start-position=“位置” 日志文件路径 | mysql -u用户 -p 从规定的起始位置还原到现在

    mysqlbinlog --stop-position=“位置” 日志文件路径 | mysql -u用户 -p 从最开始还原到规定的结束位置

    mysqlbinlog --start-position=“位置” --stop-position=“位置” 日志文件路径 | mysql -u用户 -p 从规定的起始位置还原到规定的结束位置

  • 相关阅读:
    FastDFS 集群 安装 配置
    springboot 集成fastDfs
    分布式文件系统FastDFS详解
    上传下载
    Spring Boot:上传文件大小超限制如何捕获 MaxUploadSizeExceededException 异常
    MySQL报错解决方案:2013-Lost connection to MySQL server
    JWT与Session比较和作用
    html跑马灯/走马灯效果
    后端排序,debug模式中map的顺序出错
    js调用后台接口进行下载
  • 原文地址:https://www.cnblogs.com/wwyz/p/6651273.html
Copyright © 2020-2023  润新知