精华内容
下载资源
问答
  • mysql备份
    千次阅读
    2022-02-14 15:08:55

    目录

    一、数据备份的重要性

    二、数据库备份的分类

    三、常见的备方法

    四、数据库完全备份分类

    五、数据库冷备份与恢复及完全备份与恢复的基本命令

    5.1 物理冷备份与恢复

    5.2 mysqldump 备份与恢复

    1.完全备份一个或多个完整的库(包括其中所有的表)

    2、完全备份 MySQL 服务器中所有的库

    3、完全备份指定库中的部分表

    4、查看备份文件

    5.3 MySQL完全恢复

    1、恢复数据库

    2、恢复数据表

    六、MySQL的日志管理

    6.1 MySQL的日志开启

    七、MySQL 增量备份与恢复的方法

    7.1 MySQL 增量备份

    1、开启二进制日志功能

    2、可每周对数据库或表进行完全备份

    3、可每天进行增量备份操作,生成新的二进制日志文件

    4、插入新数据,以模拟数据的增加或变更

    5、再次生成新的二进制日志文件

    6、查看二进制日志文件的内容

    7.2 MySQL 增量恢复

    1. 模拟丢失更改的数据的恢复步骤

    2. 模拟丢失所有数据的恢复步骤

    7.3 断点恢复

    1. 基于位置恢复


    一、数据备份的重要性

    1. 备份的主要目的是灾难恢复
    2. 在生产环境中,数据的安全性至关重要
    3. 任何数据的丢失都可能产生严重的后果

    造成数据丢失的原因

    • 程序错误
    • 人为操作错误
    • 运算错误
    • 磁盘故障
    • 灾难(如火灾、地震)和盗窃

    二、数据库备份的分类

    从物理与逻辑的角度,备份可分为
    物理备份:对数据库操作系统的物理文件(如数据文件、日志文件等)的备份
    物理备份方法

    • 冷备份(脱机备份):是在关闭数据库的时候进行的
    • 热备份(联机备份):数据库处于运行状态,依赖于数据库的日志文件。
    • 温备份:数据库锁定表格(不可写入但可读)的状态下进行备份操作

    逻辑备份:对数据库逻辑组件(如:表等数据库对象)的备份

    从数据库的备份策略角度,备份可分为

    • 完全备份:每次对数据库进行完整的备份
    • 差异备份:备份自从上次完全备份之后被修改过的文件
    • 增量备份:只有在上次完全备份或者增量备份后被修改的文件才会被备份

    三、常见的备方法

    物理冷备

    • 备份时数据库处于关闭状态,直接打包数据库文件
    • 备份速度快,恢复时也是最简单的

    专用备份工具mydump或mysqlhotcopy

    • mysqldump常用的逻辑备份工具
    • mysqlhotcopy仅拥有备份MyISAM和ARCHIVE表

    启用二进制日志进行增量备份

    • 进行增量备份,需要刷新二进制日志

    第三方工具备份

    • 免费的MySQL热备份软件Percona XtraBackup、dts(阿里云热迁移工具)

    四、数据库完全备份分类

    物理冷备份与恢复

    • 关闭MySQL数据库
    • 使用tar命令直接打包数据库文件夹
    • 直接替换现有MySQL目录即可

    mysqldump备份与恢复

    • MySQL自带的备份工具,可方便实现对MySQL的备份
    • 可以将指定的库、表导出为SQL脚本
    • 使用命令mysql导入备份的数据

    案例

    mysql -u root -p
    
    create database school;
    use school;
    create table class(
    id int(10) not null,
    name varchar(20) not null,
    sex char(2) not null,
    cardid varchar(20) not null,
    phone varchar(11),
    address varchar(50));
    
    desc class;
    
    insert into class values ('1','zhangsan','男','123456','111111','苏州');
    insert into class values ('2','lisi','女','123123','222222','苏州');
    insert into class values ('3','wangchao','男','123412','333333','扬州');
    insert into class values ('4','zhanglong','男','112233','444444','南京');
    insert into class values ('5','zhaohu','男','111222','555555','苏州');
    select * from class;
    

    五、数据库冷备份与恢复及完全备份与恢复的基本命令

    InnoDB存储引擎的数据库在磁盘上存储成三个文件:

    db.opt(表属性文件)、表名.frm(表结构文件)、表名.ibd(表数据文件)

    5.1 物理冷备份与恢复

    systemctl stop mysqld
    yum -y install xz#xz是一个压缩工具
    #压缩备份
    tar Jcvf /opt/mysql_all_$(date +%F).tar.xz /usr/local/mysql/data/
    #解压恢复
    tar Jxvf /opt/mysql_all_2022-02-13.tar.xz -C /usr/local/mysql/data
    或
    mv /usr/local/mysql/data/ ~
    tar Jxvf /opt/mysql_all_2022-02-11.tar.xz
    mv /opt/usr/local/mysql/data/ /usr/local/mysql/
    
    systemctl start mysqld
    

    5.2 mysqldump 备份与恢复

    1.完全备份一个或多个完整的库(包括其中所有的表)

    #导出的备份文件就是数据库脚本文件
    mysqldump -u root -p[蜜码] --databases 库名1 [库名2] … > /备份路径/备份文件名.sql
    例:
    mysqldump -u root -p --databases school > /opt/school.sql
    mysqldump -u root -p --databases mysql school > /opt/mysql-school.sql
    

    2、完全备份 MySQL 服务器中所有的库

    mysqldump -u root -p[蜜码] --all-databases > /备份路径/备份文件名.sql
    例:
    mysqldump -u root -p --all-databases > /opt/all.sql

    3、完全备份指定库中的部分表

    mysqldump -u root -p[秘码] [-d] 库名 [表名1] [表名2] … > /备份路径/备份文件名.sql
    #使用“ -d ”选项,说明只保存数据库的表结构
    #不使用“ -d ”选项,说明表数据也进行备份
    例:
    mysqldump -u root -p school class > /opt/school_class.sql

    4、查看备份文件

    cat /opt/备份的文件 |grep -v "^--" | grep -v "^/" | grep -v "^$"
    
    例:
    cat /opt/school_class.sql |grep -v "^--" | grep -v "^/" | grep -v "^$"

    5.3 MySQL完全恢复

    1、恢复数据库

    #“-e”选项,用于指定连接 MySQL 后执行的命令,命令执行完后自动退出
    mysql -u root -p -e 'drop database school;'
    mysql -u root -p -e 'show databases;'
    
    mysql -u root -p < /opt/school.sql
    mysql -u root -p -e 'show databases;'

    2、恢复数据表

    • 当备份文件中只包含表的备份,而不包含创建的库的语句时,执行导入操作时必须指定库名,且目标库必须存在。
    mysql -u root -p -e 'drop table school.class;'
    mysql -u root -p -e 'show tables from school;'
    
    mysql -u root -p school < /opt/school_class.sql
    mysql -u root -p -e 'show tables from school;'

    六、MySQL的日志管理

    MySQL的日志默认保存位置为/usr/local/mysql/data

    MySQL的日志分类

    • 错误日志
    • 通用查询日志
    • 二进制日志
    • 慢查询日志

    6.1 MySQL的日志开启

    • 通过对MySQL的配置文件进行永久性修改
    vim /etc/my.cnf
    [mysqld]
    ##错误日志,用来记录当MySQL启动、停止或运行时发生的错误信息,默认已开启
    #指定错误日志的保存位置和文件名
    log-error=/usr/local/mysql/data/mysql_error.log
    
    ##通用查询日志,用来记录MySQL的所有连接和语句,默认是关闭的
    general_log=ON
    general_log_file=/usr/local/mysql/data/mysql_general.log
    
    ##二进制日志(binlog),用来记录所有更新了数据或者已经潜在更新了数据的语句,记录了数据的更改,可用于数据恢复,默认已开启
    log-bin=mysql-bin
    #也可以 log_bin=mysql-bin
    
    ##慢查询日志,用来记录所有执行时间超过long_query_time秒的语句,可以找到哪些查询语句执行时间长,以便于优化,默认是关闭的
    slow_query_log=ON
    slow_query_log_file=/usr/local/mysql/data/mysql_slow_query.log
    long_query_time=5  #设置超过5秒执行的语句被记录,缺省时为10秒
    
    systemctl restart mysqld.service 
    
    • 进入数据库里查看相对应的日志是否开启
    mysql -u root -p
    show variables like 'general%';        #查看通用查询日志是否开启
    
    show variables like 'log_bin%';        #查看二进制日志是否开启
    show variables like '%slow%';          #查看慢查询日功能是否开启
    show variables like 'long_query_time'; #查看慢查询时间设置
    set global slow_query_log=ON;          #在数据库中设置开启慢查询的方法
    

    七、MySQL 增量备份与恢复的方法

    7.1 MySQL 增量备份

    1、开启二进制日志功能

    vim /etc/my.cnf
    [mysqld]
    log-bin=mysql-bin
    server-id = 1
    binlog_format = MIXED #可选,指定二进制日志(binlog)的记录格式为MIXED
    server-id = 1#记录MySQL的id号,在多台MySQL数据库时可用,以防服务器紊乱
    
    #二进制日志(binlog)有3种不同的记录格式:STATEMENT(基于SQL语句)、ROW(基于行)、MIXED(混合模式),默认格式是STATEMENT
    
    systemctl restart mysqld.service
    ls -l /usr/local/mysql/data/mysql-bin.*#查看生成的二进制文件
    

    2、可每周对数据库或表进行完全备份

    #手动执行备份
    mysqldump -u root -p school class > /opt/school_class_$(date +%F).sql
    mysqldump -u root -p --all-databases > /opt/allmysql_$(date +%F).sql
    
    #使用crontab -e 计划性任务来执行;每周1凌晨2点对表class和所有的库进行备份
    0 2 * * 1 mysqldump -u root -p school class > /opt/school_class_$(date +%F).sql
    0 2 * * 1 mysqldump -u root -p --all-databases > /opt/allmysql_$(date +%F).sql
    

    3、可每天进行增量备份操作,生成新的二进制日志文件

    ls -l /usr/local/mysql/data/mysql-bin.*#查看生成的二进制文件
    mysqladmin -u root -p flush-logs#使用命令刷新命令
    ls -l /usr/local/mysql/data/mysql-bin.*#再次查看生成的二进制文件
    此时会刷新新的二进制日志文件例如mysql-bin.000002

    4、插入新数据,以模拟数据的增加或变更

    mysql -u root -p
    use school;
    insert into class values ('6','zzz','男','897656','666666','南京');
    insert into class values ('7','aaa','女','098765','777777','苏州');

    5、再次生成新的二进制日志文件

    mysqladmin -u root -p flush-logs
    #之前的步骤4的数据库操作会保存到mysql-bin.000002文件中,之后数据库数据再发生变化则保存在mysql-bin.000003文件中

    6、查看二进制日志文件的内容

    cp /usr/local/mysql/data/mysql-bin.000002 /opt/
    mysqlbinlog --no-defaults --base64-output=decode-rows -v /opt/mysql-bin.000002
    #--base64-output=decode-rows:使用64位编码机制去解码并按行读取
    #-v:显示详细内容

    7.2 MySQL 增量恢复

    1. 模拟丢失更改的数据的恢复步骤

    mysql -u root -p
    use school;
    delete from class where id=6;
    delete from class where id=7;
    select * from class;
    quit
    
    mysqlbinlog --no-defaults /opt/mysql-bin.000002 | mysql -u root -p
    mysql -u root -p -e "select * from school.class;"
    
    

    2. 模拟丢失所有数据的恢复步骤

    mysql -u root -p
    use school;
    drop table class;
    show tables;
    quit
    
    mysql -uroot -p school < /opt/school_class_2022-02-13.sql
    mysqlbinlog --no-defaults /opt/mysql-bin.000002 | mysql -uroot -p
    mysql -u root -p -e "select * from school.class;"
    

    7.3 断点恢复

    mysqlbinlog --no-defaults --base64-output=decode-rows -v /opt/mysql-bin.000002
    
    #部分二进制文件的内容
    ......
    BEGIN
    /*!*/;
    ##-------------解释:at xxx 表示位置点------------------------------------------------
    # at 302
    ##--------------解释:开头220213 11:45:53表示时间,其他的现在用不到-----------------------------------
    #220213 11:45:53 server id 1  end_log_pos 449 CRC32 0xe972def7 	Query	thread_id=6	exec_time=0	error_code=0
    ##--------------解释:这里是执行的操作语句---------------------
    use `school`/*!*/;        <-------------use school;使用数据库
    SET TIMESTAMP=1612597553/*!*/; <------------建立时间戳
    insert into class values ('6','zzz','男','897656','666666','南京') <-------向表中插入数据
    /*!*/;
    ##---------------------------------------------------------------
    # at 449
    #220213 11:45:53 server id 1  end_log_pos 480 CRC32 0x5efde826 	Xid = 446
    COMMIT/*!*/;
    # at 480
    #220213 11:45:54 server id 1  end_log_pos 545 CRC32 0x11768895 	Anonymous_GTID	last_committed=1	sequence_number=2	rbr_only=no
    SET @@SESSION.GTID_NEXT= 'ANONYMOUS'/*!*/;
    # at 545
    #220213 11:45:54 server id 1  end_log_pos 628 CRC32 0x778ea5fa 	Query	thread_id=6	exec_time=0	error_code=0
    SET TIMESTAMP=1612597554/*!*/;
    ##-------------------------------插入第二个数据--------------------------
    BEGIN
    /*!*/;
    # at 628
    #220213 11:45:54 server id 1  end_log_pos 775 CRC32 0x66e3bb53 	Query	thread_id=6	exec_time=0	error_code=0
    SET TIMESTAMP=1612597554/*!*/;
    insert into class values ('7','aaa','女','098765','777777','苏州')
    /*!*/;
    # at 775
    #220213 11:45:54 server id 1  end_log_pos 806 CRC32 0x7b972395 	Xid = 447
    COMMIT/*!*/;
    # at 806
    #220213 11:48:52 server id 1  end_log_pos 853 CRC32 0x0d77c456 	Rotate to mysql-bin.000003  pos: 4
    SET @@SESSION.GTID_NEXT= 'AUTOMATIC' /* added by mysqlbinlog */ /*!*/;
    DELIMITER ;
    .......
    

    1. 基于位置恢复

    仅恢复到位置点为“628”之前的数据,即不恢复“id=7”的数据

    #模拟数据丢失
    mysql -uroot -pabc123 school < /opt/school_class_2022-02-13.sql
    mysql -uroot -pabc123 -e "select * from school.class;"
    #到位置点628停止恢复数据
    mysqlbinlog --no-defaults --stop-position='628' /opt/mysql-bin.000002 | mysql -uroot -pabc123
    #查看class表的数据
    mysql -uroot -pabc123 -e "select * from school.class;"
    

    仅恢复“id=7”的数据,跳过“id=6”的数据

    #模拟数据丢失
    mysql -uroot -pabc123 school < /opt/school_class_2022-02-13.sql
    mysql -uroot -pabc123 -e "select * from school.class;"
    #从位置点628开始恢复数据
    mysqlbinlog --no-defaults --start-position='628' /opt/mysql-bin.000002 | mysql -uroot -pabc123
    #查看class表的数据
    mysql -uroot -pabc123 -e "select * from school.class;"
    

    仅恢复“id=7”的数据,跳过“id=6”的数据

    #模拟数据丢失
    mysql -uroot -pabc123 school < /opt/school_class_2022-02-13.sql
    mysql -uroot -pabc123 -e "select * from school.class;"
    #从位置点628开始恢复数据
    mysqlbinlog --no-defaults --start-position='628' /opt/mysql-bin.000002 | mysql -uroot -pabc123
    #查看class表的数据
    mysql -uroot -pabc123 -e "select * from school.class;"
    

    2. 基于时间点恢复

    仅恢复到220213 11:45:54之前的数据,即不恢复“id=7”的数据

    #模拟数据丢失
    mysql -uroot -pabc123 school < /opt/school_class_2022-02-13.sql
    mysql -uroot -pabc123 -e "select * from school.class;"
    #到2022-02-13 11:45:54截止恢复数据
    mysqlbinlog --no-defaults --stop-datetime='2022-02-13 11:45:54' /opt/mysql-bin.000002 | mysql -uroot -pabc123
    #查看class表的数据
    mysql -uroot -pabc123 -e "select * from school.class;"
    

    仅恢复“id=7”的数据,跳过“id=6”的数据恢复

    #模拟数据丢失
    mysql -uroot -pabc123 school < /opt/school_class_2022-02-13.sql
    mysql -uroot -pabc123 -e "select * from school.class;"
    #从2022-02-13 11:45:54开始恢复数据
    mysqlbinlog --no-defaults--start-datetime='2022-02-13 11:45:54' /opt/mysql-bin.000002 | mysql -uroot -pabc123
    #查看class表的数据
    mysql -uroot -pabc123 -e "select * from school.class;"
    

    总结:断点恢复
    如果恢复某条SQL语句之前的所有数据,就stop在这个语句的位置节点或者时间点
    如果恢复某条SQ语句以及之后的所有数据,就从这个语句的位置节点或者时间点start

    更多相关内容
  • 朋友说在windows下面用bat命令备份失败,他一时找不到问题所在,于是找我帮忙查看...查找后解决了该问题,想着总结下来,所以这篇文章主要跟大家分享了一个在Windows下简单的Mysql备份BAT脚本,需要的朋友可以参考下。
  • 使用mysqldump命令备份时候,–all-databases 可以备份所有的数据库。 使用ignore-table 还可以排除制定的表。但是,mysqldump没有参数可以排除数据库的。 要备份的数据库少的时候,可以通过mysqldump -uroot -p...
  • 易语言mysql备份

    2020-07-20 13:31:21
    易语言mysql备份源码,mysql备份,备份数据库
  • MySQL备份

    千次阅读 2022-05-11 20:18:20
    [root@host1 mysql]# pwd /var/lib/mysql 压缩、拷贝到host2 [root@host1 mysql]# tar czf db.tar.gz * [root@host1 mysql]# scp db.tar.gz 192.168.157.11:/beifen host2 首先关闭数据库,清理/var/lib/mysql/下的...

    目录

    一、直接拷贝数据库文件

    二、mysqldump备份数据库

    1、备份

    2、备份还原

    (1)完全备份还原

    (2)增量备份

    #eg

         ​(1)创建一个新的数据库表resume.test

         ​(2)此时完全备份

         ​​(3)接着再往数据库表里面插入两条数据

         ​(4)删除数据库resume,刷新日志

         ​(5)此时会增加一个新的二进制日志

         ​(6)备份还原

    #GTID全局事务标识符

    #binlog日志的GTID新特性

    (1)启动gtid

    (2)使用DDL和DML语句之后查看gtid会发生改变

    #查看binlog

    (3)数据库还原

    三、mydumper备份数据库

    1、备份 mydumper

    2、还原 myloader

     eg:备份数据库表 db.course,删除表后还原

    四、借用windows下的软件备份

    1、首先先授权一个用户

    2、此时软件登录数据库

    五、lvm备份、恢复

    1、数据迁移到逻辑卷

    (1)进行逻辑卷管理

    (2) 将/var/lib/mysql/下所有内容压缩打包到/backup/MySQL/

    (3)将lv_mysql挂载到/var/lib/mysql下此时mysql下内容将自动被清空,接着进行解压

    (4) 接着检查所属用户和组是否为mysql,如果不是则需要修改

    (5)登录数据库

    ​#创建用户并授权方法

    2、快照备份数据库

    (1)锁表(读锁)

    (2)逻辑卷创建快照

    (3)解锁

    (4)挂载

          #如果没有rsync需要进行安装(yum install rsync -y)

    (5)备份

    (6)此时关掉mysql 配置/etc/my.cnf

    (7)接着启动mysql并登录可以看到数据库表和开始一样

    (8)卸载快照并删除

    #脚本方式进行(1)-(8)操作


    一、直接拷贝数据库文件

    首先关闭数据库
    [root@host1 mysql]# pwd
    /var/lib/mysql
    压缩、拷贝到host2
    [root@host1 mysql]# tar czf db.tar.gz *
    [root@host1 mysql]# scp db.tar.gz 192.168.157.11:/beifen
    
    host2
    首先关闭数据库,清理/var/lib/mysql/下的内容
    [root@host2 beifen]# tar xf db.tar.gz /var/lib/mysql/
    将/beifen/db.tar.gz解压到/var/lib/mysql

     此时登录host2的数据库可以看到两个数据库中的内容相同

    二、mysqldump备份数据库

    1、备份

    帮助 mysqldump --help
    
    [root@host1 ~]# mysqldump -u登录用户 -p'密码' 数据库 表名 > 备份文件名称.sql
    #数据库 表名:这里可以是指定数据库或者是某个库表
    -A备份所有数据库,
    -B会将创建数据库语句也备份,
    -b备份数据库表的结构不备份数据。
    ​
    备份数据库
    [root@host1 ~]# mysqldump -uroot -p'MySQL@123' db -B  > beifen1.sql  
    mysqldump: [Warning] Using a password on the command line interface can be insecure.
    [root@host1 ~]# ls
    beifen1.sql
    备份成压缩包形式
    [root@host1 ~]# mysqldump -uroot -p'MySQL@123' db -B | gzip > beifen1.sql.gz
    mysqldump: [Warning] Using a password on the command line interface can be insecure.

     

    备份数据库表
    [root@host1 ~]# mysqldump -uroot -p'MySQL@123' db course > beifen2.sql
    mysqldump: [Warning] Using a password on the command line interface can be insecure.
    [root@host1 ~]# ls beifen*
    beifen1.sql  beifen1.sql.gz  beifen2.sql

    2、备份还原

    (1)完全备份还原

    备份还原
    还原数据库
    方法一
    在mysql中source后跟备份文件存放路径
    mysql> source /backup/MySQL/beifen1.sql
    ​
    方法二
    [root@host1 ~]# mysql -uroot -p'MySQL@123' < /backup/MySQL/beifen1.sql
    mysql: [Warning] Using a password on the command line interface can be insecure.
    ​
    这个时候就可以看到被还原的数据库
    ​
    还原数据库表
    mysql> source /backup/MySQL/beifen2.sql
    ​
    [root@host1 MySQL]# mysql -uroot -p'MySQL@123' db < ./beifen2.sql
    mysql: [Warning] Using a password on the command line interface can be insecure.
    ​
    压缩包还原
    [root@host1 MySQL]# zcat ./beifen1.sql.gz | mysql -uroot -p'MySQL@123'
    mysql: [Warning] Using a password on the command line interface can be insecure.

    (2)增量备份

    首先是要先开启数据库的二进制日志的log_bin

    方法参考MySQL日志管理_spring℡的博客-CSDN博客

    第一步先做完全备份

    #eg

         ​(1)创建一个新的数据库表resume.test

    mysql> select * from test;
    +--------+------+------+------------+------+
    | name   | weig | age  | hobby      | sex  |
    +--------+------+------+------------+------+
    | 白熊   | 80.0 |   10 | dance,sing | m    |
    | 胖达   | 75.0 |   10 | dance,sing | m    |
    +--------+------+------+------------+------+
    2 rows in set (0.00 sec)
    ​
    mysql> insert test values ('克洛伊','35','8','sing','f'),('棕熊','76','9','dance','m');
    Query OK, 2 rows affected (0.01 sec)
    Records: 2  Duplicates: 0  Warnings: 0

         ​(2)此时完全备份

    [root@host1 MySQL]# mysqldump -uroot -p'MySQL@123' --opt -F --single-transaction -B resume > /backup/MySQL/resume.sql
    mysqldump: [Warning] Using a password on the command line interface can be insecure.

         ​​(3)接着再往数据库表里面插入两条数据

    mysql> insert test values ('小白','45','8','sing','f'),('小胖','66','9','dance','m');

         ​(4)删除数据库resume,刷新日志

    mysql> drop database resume;
    Query OK, 1 row affected (0.01 sec)
    mysql> flush logs;
    Query OK, 0 rows affected (0.01 sec)

         ​(5)此时会增加一个新的二进制日志

    [root@host1 mysql]# ll mysql-bin.00000*
    -rw-r-----. 1 mysql mysql   177 Apr 17 14:34 mysql-bin.000002
    -rw-r-----. 1 mysql mysql   177 Apr 17 14:54 mysql-bin.000003
    -rw-r-----. 1 mysql mysql   177 Apr 17 14:59 mysql-bin.000004
    -rw-r-----. 1 mysql mysql   177 Apr 17 15:28 mysql-bin.000005
    -rw-r-----. 1 mysql mysql  3303 Apr 17 15:37 mysql-bin.000006
    -rw-r-----. 1 mysql mysql 18407 Apr 20 15:03 mysql-bin.000007
    -rw-r-----. 1 mysql mysql  2059 Apr 20 16:44 mysql-bin.000008
    -rw-r-----. 1 mysql mysql   665 Apr 20 16:46 mysql-bin.000009

         ​(6)备份还原

    第一步还原完全备份
    mysql> source /backup/MySQL/resume.sql

    第二步还原增量备份
    [root@host1 ~]# mysqlbinlog /var/lib/mysql/mysql-bin.000009

    方法一:根据时间备份还原
    [root@host1 MySQL]# mysqlbinlog --start-datetime="2022-04-20 16:45:32" --stop-datetime="2022-04-20 16:45:57"  /var/lib/mysql/mysql-bin.000009 -r resume1.sql
    [root@host1 MySQL]# mysql -uroot -p'MySQL@123' < resume1.sql
    mysql: [Warning] Using a password on the command line interface can be insecure.
    ​
    方法二:根据位置点备份还原
    [root@host1 MySQL]# mysqlbinlog --start-position=293 --stop-position=455  /var/lib/mysql/mysql-bin.000009 -r resume2.sql
    mysql> source /backup/MySQL/resume2.sql
    mysql> select * from test;
    +-----------+------+------+------------+------+
    | name      | weig | age  | hobby      | sexs  |
    +-----------+------+------+------------+------+
    | 白熊      | 80.0 |   10 | dance,sing | m    |
    | 胖达      | 75.0 |   10 | dance,sing | m    |
    | 克洛伊    | 35.0 |    8 | sing       | f    |
    | 棕熊      | 76.0 |    9 | dance      | m    |
    | 小白      | 45.0 |    8 | sing       | f    |
    | 小胖      | 66.0 |    9 | dance      | m    |
    +-----------+------+------+------------+------+
    6 rows in set (0.00 sec)

    #GTID全局事务标识符

    5.6以后添加5.7做了加强

    #binlog日志的GTID新特性

    (1)启动gtid

    mysql> desc mysql.gtid_executed
       -> ;
    +----------------+------------+------+-----+---------+-------+
    | Field          | Type       | Null | Key | Default | Extra |
    +----------------+------------+------+-----+---------+-------+
    | source_uuid    | char(36)   | NO   | PRI | NULL    |       |
    | interval_start | bigint(20) | NO   | PRI | NULL    |       |
    | interval_end   | bigint(20) | NO   |     | NULL    |       |
    +----------------+------------+------+-----+---------+-------+
    3 rows in set (0.01 sec)
    mysql> show variables like '%gtid%';
    +----------------------------------+-----------+
    | Variable_name                    | Value     |
    +----------------------------------+-----------+
    | binlog_gtid_simple_recovery      | ON        |
    | enforce_gtid_consistency         | OFF       |
    | gtid_executed_compression_period | 1000      |
    | gtid_mode                        | OFF       |
    | gtid_next                        | AUTOMATIC |
    | gtid_owned                       |           |
    | gtid_purged                      |           |
    | session_track_gtids              | OFF       |
    +----------------------------------+-----------+
    8 rows in set (0.00 sec)

     由于gtid_mode=OFF所以需要开启

    [root@host1 ~]# vim /etc/my.cnf
    ​
    gtid-mode=on
    enforce-gtid-consistency=on

    (2)使用DDL和DML语句之后查看gtid会发生改变

    DDL
    mysql> create database dba;
    Query OK, 1 row affected (0.01 sec)
    mysql> use dba
    Database changed
    mysql> create table test (sno char(12),name char(13),cno char(8));
    Query OK, 0 rows affected (0.01 sec)

    DML
    ​
    开启事务mysql> begin;
    ​
    mysql> insert test(sno,name) values('122110','小白');
    Query OK, 1 row affected (0.00 sec)
    #不管是中间进行几次插入
    ​
    事务提交mysql> commit;
    最后79c7390e-ad1f-11ec-9593-000c29ae9e04:只会增一

    #查看binlog

    mysql> SHOW binlog EVENTS in 'mysql-bin.000012';

    (3)数据库还原

    首先有一个数据库 dba 库里面有表tb1,且表内插入了一些简单数据。

    mysql> select * from tb1;
    +-----+--------+
    | sno | name   |
    +-----+--------+
    | 100 | 小明   |
    | 101 | 小李   |
    +-----+--------+
    2 rows in set (0.00 sec)
    
    创完之后删除tb1

    mysql> show binlog events in 'mysql-bin.000012'; 

     此时在/backup/MySQL下编写备份还原部分内容 

    因为9是删表部分因此恢复1-8

    (1)数据备份
    因为GTID幂等性,这里我添加了--skip-gtids
    ​
    [root@host1 MySQL]# mysqlbinlog  --skip-gtids --include-gtids="79c7390e-ad1f-11ec-9593-000c29ae9e04:1-8" mysql-bin.000012 -r gtid_1.sql
    ​
    此时就有了gtid_1.sql
    
    (2)数据恢复​
    mysql> set sql_log_bin=0;
    Query OK, 0 rows affected (0.00 sec)
    ​
    [root@host1 MySQL]# mysql -u root -p'MySQL@123'< gtid_1.sql
    mysql: [Warning] Using a password on the command line interface can be insecure.
    ​
    mysql> set sql_log_bin=1;
    Query OK, 0 rows affected (0.00 sec)

    此时在数据库中就可以查看被删除的数据库已经库表

    三、mydumper备份数据库

    安装:Gitee 极速下载/mydumper

    yum install https://github.com/mydumper/mydumper/releases/download/v0.11.5/mydumper-0.11.5-1.el7.x86_64.rpm

    1、备份 mydumper

    mydumper -uroot -pMySQL@123 -B 数据库名 -T 表名 -o /存放路径
    备份数据库db
    
    [root@localhost ~]# mydumper -u root -p MySQL@123 -B db -o /db
    [root@localhost ~]# tree /db
    /db
    ├── db.course.00000.sql
    ├── db.course-metadata
    ├── db.course-schema.sql
    ├── db-schema-create.sql
    ├── db.student.00000.sql
    ├── db.student-metadata
    ├── db.student-schema.sql
    └── metadata
    ​
    0 directories, 8 files

    2、还原 myloader

    myloader -u root -p MySQL@123 -d /db -o -B db

    先右边再左边 

     eg:备份数据库表 db.course,删除表后还原

    备份
    [root@localhost db]# mydumper -u root -p MySQL@123 -B db -T course -o /db11
    #这里-B后面跟数据库名,-T后面跟表名,-o代表输出到那个位置
    [root@localhost db]# cd /db11
    [root@localhost db11]# ls
    db.course.00000.sql  db.course-metadata  db.course-schema.sql  db-schema-create.sql  metadata
    ​
    删除表course
    mysql> drop table course;
    Query OK, 0 rows affected (0.02 sec)
    ​
    恢复表course
    [root@localhost db11]# myloader -u root -p MySQL@123 -d /db11 -B db  -o
    这里直接恢复数据库就会恢复表内容

    四、借用windows下的软件备份

    1、首先先授权一个用户

    grant all on . to jim@'%' identified by 'Jim@12345';

    2、此时软件登录数据库

    将需要备份的数据库如下备份,后删除再导入即可

    五、lvm备份、恢复

    1、数据迁移到逻辑卷

    先关闭mysql服务,虚拟机添加一块新的磁盘(这里添加6G)

    lvs:查看磁盘分区情况

    lsblk:磁盘剩余内存

    此时重启虚拟机即可

    (1)进行逻辑卷管理

    创建物理卷
    [root@localhost ~]# pvcreate /dev/sdb
      Physical volume "/dev/sdb" successfully created.
    ​
    创建卷组
    [root@localhost ~]# vgcreate vg1 /dev/sdb
      Volume group "vg1" successfully created
    ​
    创建逻辑卷
    [root@localhost ~]# lvcreate -n lv_mysql -L 4G vg1
      Logical volume "lv_mysql" created.
     
    格式化逻辑卷(xfs的文件系统只支持扩大逻辑卷,ext4的文件系统支持扩大和缩小逻辑卷)
    [root@localhost ~]# mkfs.xfs /dev/vg1/lv_mysql

    (2) 将/var/lib/mysql/下所有内容压缩打包到/backup/MySQL/

    [root@localhost mysql]# tar -czvf /backup/MySQL/mysql.tar.gz .
    查看
    [root@localhost mysql]# tar -tvf /backup/MySQL/mysql.tar.gz

    (3)将lv_mysql挂载到/var/lib/mysql下此时mysql下内容将自动被清空,接着进行解压

    [root@localhost mysql]# mount /dev/vg1/lv_mysql /var/lib/mysql
    [root@localhost mysql]# tar xf /backup/MySQL/mysql.tar.gz -C .

    (4) 接着检查所属用户和组是否为mysql,如果不是则需要修改

    [root@localhost lib]# ls -ld mysql
    drwxr-x--x. 15 mysql mysql 4096 May  4 16:42 mysql
    
    此时启动mysql即可
    systemctl start mysqld

    (5)登录数据库

    show databases;
    和原来数据库内容一样
    

    ​#创建用户并授权方法

    mysql> grant all on *.* to admin@'192.168.157.%' identified by 'Admin@123';
    Query OK, 0 rows affected, 1 warning (0.00 sec)

    2、快照备份数据库

    (1)锁表(读锁)

    mysql> flush table with read lock;
    Query OK, 0 rows affected (0.00 sec)

    (2)逻辑卷创建快照

    [root@host1 ~]# lvcreate -n lv_mysql_s -L 500M -s /dev/vg1/lv_mysql
      Logical volume "lv_mysql_s" created.
    [root@host1 ~]# lvs
      LV         VG     Attr       LSize   Pool Origin   Data%  Meta%  Move Log Cpy%Sync Convert
      root       centos -wi-ao---- <17.00g                                                      
      swap       centos -wi-ao----   2.00g                                                      
      lv_mysql   vg1    owi-aos---   4.00g                                                      
      lv_mysql_s vg1    swi-a-s--- 500.00m      lv_mysql 0.00  

    (3)解锁

    ​​​​​​​mysql> unlock tables;
    Query OK, 0 rows affected (0.00 sec)

    (4)挂载

    [root@host1 ~]# mkdir /mnt/mysql -p
    [root@host1 ~]# mount -o nouuid /dev/vg1/lv_mysql_s /mnt/mysql

          #如果没有rsync需要进行安装(yum install rsync -y)

    (5)备份

    [root@host1 mnt]# rsync -av /mnt/mysql/ /mysql_back/

    (6)此时关掉mysql 配置/etc/my.cnf

    (7)接着启动mysql并登录可以看到数据库表和开始一样

    (8)卸载快照并删除

    [root@host1 ~]# umount /mnt/mysql/ && lvremove /dev/vg01/lv_mysql_s

    #脚本方式进行(1)-(8)操作

    cd /mysql/scripts

    [root@host1 scripts]# vim my.sh

    #!/bin/bash
    back_dir=/backup/`date +%F`
    [ -d $back_dir ]|| mkdir -p $back_dir
    echo "flush tables with read lock; system lvcreate -n lv_mysql_s -L 500M -s /dev/vg1/lv_mysql;unlock tables;" |mysql -uroot -pMySQL@123 &>/dev/null
    [ -d /mnt/mysql/ ] || mkdir -p /mnt/mysql/
    mount -o nouuid /dev/vg1/lv_mysql_s /mnt/mysql/
    rsync -a /mnt/mysql/ $back_dir
    if [ $? -eq 0 ];then
           umount /mnt/mysql/ && lvremove -f /dev/vg01/lv_mysql_s &>/dev/null
    fi

    执行脚本

    [root@host1 scripts]# sh my.sh

    展开全文
  • mysql备份和恢复方案

    2022-06-14 18:33:58
    mysql备份和恢复方案mysql备份和恢复方案mysql备份和恢复方案mysql备份和恢复方案mysql备份和恢复方案mysql备份和恢复方案mysql备份和恢复方案mysql备份和恢复方案mysql备份和恢复方案mysql备份和恢复方案mysql备份...
  • 易语言mysql备份源码例程程序演示了利用mysqldump备份mysql数据库的方法。
  • MySQL 备份总结

    千次阅读 多人点赞 2021-05-19 09:29:27
    1)完全备份:每次对数据进行完整的备份,即对整个数据库的备份(是差异备份与增量备份的基础) 2)差异备份备份那些自从上次完全备份之后被修改过的所有文件,备份的时间起点是从上次完全备份起,备份数据量...

    一、BinLog 二进制日志

    1.BinLog 日志内容

    1. 引起 MySQL 服务器改变的任何操作(增 删 改)
    2. 复制功能依赖于此日志(MySQL 主从)
    3. Slave 服务器通过 Master 服务器的二进制日志完成主从复制,在执行之前保持于中继日志 relay log 中。
    4. Slave 服务器通常可以关闭二进制日志以提升性能。

    2.BinLog 日志文件的表现形式

    1)默认在 /usr/local/mysql/data/ 目录下,存在 mysql-bin.000001 mysql-bin.000002 的二进制文件

    [root@MySQL ~]# sed -i '/\[mysqld]/a log-bin=mysql-bin' /etc/my.cnf
    [root@MySQL ~]# sed -i '/\[mysqld]/a server-id=1' /etc/my.cnf
    [root@MySQL ~]# head -3 /etc/my.cnf
    

    在这里插入图片描述
    什么时候二进制日志会重新生成:

    1. 重启 MySQL 服务:systemctl restart mysqld
    2. 在 MySQL 数据库中:flush logs;
    3. 根据 max_binlog_size 设置 MySQL 二进制文件最大值,达到最高值会自动创建。
    [root@MySQL ~]# systemctl restart mysqld
    [root@MySQL ~]# ls -l /usr/local/mysql/data/ | grep 'mysql-bin'
    

    在这里插入图片描述

    • 注意:如果需要删除二进制日志时,切勿直接删除二进制文件,这样会使 MySQL 管理混乱。

    3.BinLog 日志文件查看相关 MySQL 命令

    1)查看正在使用的二进制日志文件

    mysql> show master status;
    

    在这里插入图片描述
    2)手动滚动二进制日志文件

    mysql> flush logs;
    

    在这里插入图片描述
    3)显示所有的二进制日志文件

    mysql> show binary logs;
    

    在这里插入图片描述

    4.MySQL 二进制文件读取工具

    格式:mysqlbinlog [参数] log-files
    

    有以下四种参数选择:

    • --start-position:用来指定二进制日志文件的起始位置;--stop-position:用来指定二进制日志文件的结束位置。
    • --start-datetime:用来指定二进制日志文件的起始日期;--stop-datetime:用来指定二进制日志文件的结束日期。

    使用 mysqlbinlog 工具来对 MySQL 进行增量备份:MySQL 增量备份与恢复

    5.二进制日志格式

    • bin_log_format={ statement | row | mixed } 定义(5.7 版本之前是 statement5.7 版本之后是 row

    1)statement

    • 基于语句,记录生成数据的语句。
    • 缺点:如果当插入信息为函数时,有可能不同时间点执行结果不一样。如 insert into test values(CURRENT_DATE())

    2)row

    • 基于行数据,缺点在于,有时候数据量会过大。

    3)mixed

    • 混合模式,由 MySQL 自行决定何时使用 statementrow 模式。

    查看当前二进制日志记录格式

    mysql> show variables like 'binlog_format';
    

    在这里插入图片描述

    • 如果想要永久修改需:sed -i '/\[mysqld]/a binlog_format=模式' /etc/my.cnf 来进行修改。

    6.备份类型

    1)根据备份时,MySQL 服务是否在线

    • 冷备:停掉 MySQL 这个服务,读写操作都不能进行。
    • 温备:全局施加共享锁,只能读不能写。
    • 热备:不停掉 MySQL 这个服务,读写照样进行。

    2)根据备份时的接口

    • 物理备份(Physical Backup):直接复制数据文件,打包归档。简单来说就是对 MySQL 的数据存放路径进行打包。
    • 逻辑备份(Logical Backup):把数据抽取出来保存在 SQL 脚本中,mysqldump 就属于逻辑备份。

    各自特点:

    • 物理:不需要额外工具,直接归档命令即可,但是跨平台能力比较差;如果数据量超过几十个 G,则适用于物理备份。
    • 逻辑:导入方便,直接读取 SQL 语句即可;逻辑备份恢复时间慢,占用空间大;无法保证浮点数的精度;恢复完数据库后需要重建索引。

    7.根据备份整个数据还是变化数据

    1)完全备份:每次对数据进行完整的备份,即对整个数据库的备份(是差异备份与增量备份的基础)

    • 优点:备份与恢复操作简单方便。
    • 缺点:数据存在大量的重复;占用大量的空间;备份与恢复时间长。

    2)差异备份

    • 备份那些自从上次完全备份之后被修改过的所有文件,备份的时间起点是从上次完全备份起,备份数据量越来越大。
    • 恢复数据时,只需要恢复上次的完全备份与最近的一次差异备份。

    3)增量备份:只有那些在上次完全备份或增量备份后被修改的文件才会被备份。

    • 优点:占用空间小,备份速度快。
    • 缺点:如果中间某次的备份数据损坏,将导致数据丢失。

    8.MySQL 最常用的三种备份工具

    1)mysqldump:通常为数据小的情况下备份;单线程恢复比较慢。

    • InnoDB:热备,温备。
    • MyISAM,Aria:温备。

    2)xtrabackup(通常用 innobackupex 工具):备份 MySQL 大数据;属于物理备份,速度快。

    • InnoDB:热备,增量备份。
    • MyISAM:温备,不支持增量备份,只有完全备份。

    3)lvm-snapshot:接近于热备的工具,因为要先请求全局锁,而后创建快照,并在创建快照完成后释放全局锁;

    • 使用 cp tar 等工具进行物理备份;
    • 备份和恢复速度较快。
    • 很难实现增量备份,并且请求全局需要等待一段时间,在繁忙的服务器上尤其如此。

    两者对比如下:

    工具名称mysqldumpxtrabackup
    备份方式逻辑备份物理备份
    数据保存方式SQL 脚本二进制文件
    是否支持热备份
    是否支持增量备份
    备份过程会锁表不锁表
    是否影响正常业务影响较大影响较小
    备份和恢复性能耗时较长耗时较短
    占用空间占用空间小占用空间大

    二、使用 LVM-Snapshot 工具备份

    基于快照备份注意事项:

    1. 事务日志跟数据日志必须在同一个卷上。
    2. 创建快照卷之前,要请求 MySQL 的全局锁;在快照创建完成之后释放锁。
    3. 请求全局锁完成之后,做一次日志滚动;做二进制日志文件及位置标记(手动进行)

    1.准备 LVM 卷,并将 MySQL 数据迁移到 LVM 卷上

    1)创建分区

    [root@localhost ~]# fdisk -l /dev/sdb
    

    在这里插入图片描述
    2)创建 PV、VG、LVM,并格式化

    [root@localhost ~]# pvcreate /dev/sdb1 /dev/sdb2 /dev/sdb3
    [root@localhost ~]# vgcreate test /dev/sdb1 /dev/sdb2 /dev/sdb3
    [root@localhost ~]# lvcreate -L +10G -n zhangsan test
    [root@localhost ~]# mkfs.xfs /dev/test/zhangsan
    

    在这里插入图片描述
    3)创建目录,并挂载逻辑磁盘

    [root@localhost ~]# mkdir /var/zhangsan
    [root@localhost ~]# mount /dev/test/zhangsan /var/zhangsan/
    [root@localhost ~]# df -hT
    

    在这里插入图片描述
    4)确认服务处于关闭状态,然后将数据迁移到 /var/zhangsan

    [root@localhost ~]# systemctl stop mysqld
    [root@localhost ~]# cd /usr/local/mysql/data/
    [root@localhost data]# tar -cf - . | tar xf - -C /var/zhangsan/
    

    5)重新挂载 zhangsan 到 MySQL 数据库的主目录 /usr/local/mysql/data

    [root@localhost ~]# umount /var/zhangsan/
    [root@localhost ~]# mount /dev/test/zhangsan /usr/local/mysql/data/
    

    6)审核权限并启动服务

    [root@localhost ~]# systemctl start mysqld
    [root@localhost ~]# mysql -uroot -p123123
    mysql> show master status\G
    mysql> flush logs;
    mysql> flush tables with read lock;
    [root@localhost ~]# lvcreate -L +4G -s -n mysql /dev/test/zhangsan 
    [root@localhost ~]# mysql -uroot -p123123 -e "unlock tables;"
    

    7)开启 MySQL 的二进制日志,并重启 MySQL 服务

    [root@localhost ~]# sed -i '/\[mysqld]/a log-bin=mysql-bin' /etc/my.cnf
    [root@localhost ~]# sed -i '/\[mysqld]/a server-id=1' /etc/my.cnf
    [root@localhost ~]# systemctl restart mysqld
    
    mysql> create database Coco;
    mysql> use Coco;
    mysql> create table test(ID int);
    mysql> insert into test values(1),(2),(3);
    [root@localhost ~]# cp /usr/local/mysql/data/mysql-bin.000001 /opt/
    

    模拟数据库故障

    [root@localhost ~]# systemctl stop mysqld
    [root@localhost ~]# umount /dev/test/zhangsan
    

    恢复

    [root@localhost ~]# mount /dev/test/zhangsan /usr/local/mysql/data/
    [root@localhost ~]# systemctl start mysqld
    [root@localhost ~]# mysql -uroot -p123123 -e "select * from Coco.test;"
    

    在这里插入图片描述

    三、使用 XtraBackup 工具备份

    Percona XtraBackup(简称 PXB)是 Percona 公司开发的一个用于 MySQL 数据库物理热备的备份工具,支持 MySQL、Percona Server 和 MariaDB,并且全部开源。

    1.原理

    • 通信方式:2 个工具之间的交互和协调是通过控制文件的创建和删除来实现的。
    • 主要文件有:xtrabackup_suspended_1 xtrabackup_suspended_2 xtrabackup_log_copied

    备份时 xtrabackup_suspended_2 协调这两个工具进程过程如下:

    1. ib 在启动 xb 进程后,会一直等 xb 备份完 InnoDB 文件,方式就是等待 xb_suspended_2 这个文件被创建出来。
    2. xb 在备完 InnoDB 数据后,就在指定目录下创建出这个文件,然后等这个文件被 ib 删除。
    3. ib 检测到文件 xb_suspended_2 被创建出来后,就继续往下走。
    4. ib 在备份完非 InnoDB 表后,删除 xb_suspended_2 这个文件,这样就通知 xb 可以继续了,然后等待 xb_log_copied 被创建。
    5. xb 检测到 xb_suspended_2 文件删除后,就可以继续往下了。

    备份过程:

    • innobackupex 在启动后,会先 fork 一个进程,来启动 xtrabackup 进程,然后等待 xtrabackup 备份完 InnoDB 数据文件;
    • xtrabackup 备份完时,会通过创建文件来通知 innobackupex 进程,接着 innobackupex 进程会去备份非 InnoDB 数据文件。

    在这里插入图片描述

    • Redo 文件:是存储引擎层(InnoDB)生成的日志,主要为了保证数据的可靠性。
    • Ibd 文件:InnoDB 引擎开启的表空间,用来存储表的数据和索引。

    2.安装 XtraBackup 工具

    [root@MySQL ~]# yum -y install perl-DBI perl-DBD-MySQL perl-Time-HiRes perl-IO-Socket-SSL perl-TermReadKey.x86_64 perl-Digest-MD5
    [root@MySQL ~]# rpm -ivh percona-toolkit-2.2.19-1.noarch.rpm
    [root@MySQL ~]# tar xf percona-xtrabackup2.4.5-Linux-x86_64.tar.gz -C /usr/src/
    [root@MySQL ~]# cd /usr/src/percona-xtrabackup-2.4.5-Linux-x86_64/
    [root@MySQL percona-xtrabackup-2.4.5-Linux-x86_64]# cp bin/* /usr/bin/
    

    XtraBackup 中主要包含两个工具:

    xtrabackupPerl 脚本):

    • 用来备份 InnoDB 表的,不能备份非 InnoDB 表,和 MySQL Server 没有交互。

    innobackupexC/C++ 编译的二进制):

    • 用来备份非 InnoDB 表的,同时会调用 xtrabackup 命令来备份 InnoDB 表;
    • 还会和 MySQL Server 发送命令来进行交互,如加读锁 ftwrl、获取位点 show slave status 等。

    简单来说就是 innobackupexxtrabackup 之上做了一层封装。

    常用选项作用
    --host指定主机
    --user指定用户名
    --password指定密码
    --port指定端口
    --databases指定数据库
    --incremental创建增量备份
    --incremental-basedir指定包含完全备份的目录
    --incremental-dir指定包含增量备份的目录
    --apply-log对备份进行预处理操作
    --redo-only不回滚未提交事务
    --copy-back恢复备份目录

    2.完全备份与恢复

    [root@MySQL ~]# innobackupex --user=root --password=123123 /backups
    

    查看备份数据

    [root@MySQL ~]# ls /backups/
    [root@MySQL ~]# ls -l /backups/2021-05-19_22-31-36/
    

    在这里插入图片描述
    注解:

    • backup-my.cnf:备份用到的配置选项信息文件。
    • xtrabackup_binlog_info:MySQL 当前正在使用的二进制日志文件和此时二进制日志文件时间的位置信息文件。
    • xtrabackup_checkpoints:备份的类型、状态和 LSN 状态信息文件。
    • xtrabackup_logfile:备份的日志文件。

    删除原有的数据

    [root@MySQL ~]# rm -rf /usr/local/mysql/data/*
    

    合并数据,使数据文件处于一致性的状态

    [root@MySQL ~]# innobackupex --apply-log /backups/2021-05-19_22-31-36/
    

    恢复数据

    [root@MySQL ~]# innobackupex --copy-back /backups/2021-05-19_22-31-36/
    
    [root@MySQL ~]# ls -l /usr/local/mysql/data/
    [root@MySQL ~]# chown -R mysql:mysql /usr/local/mysql/data/
    

    在这里插入图片描述
    总结:

    1. innobackupex 完全备份,并指定备份目录路径。
    2. 在恢复前,需要使用 --apply-log 参数先进行合并数据文件,确保数据的一致性要求。
    3. 在恢复时,直接使用 --copy-back 参数进行恢复,需要注意的是,在 my.cnf 中要指定数据文件目录的路径。

    3.增量备份与恢复

    [root@MySQL ~]# innobackupex --user=root --password=123123 /backups
    
    • 注意:增量备份前提是需要有完全备份(因为上面已经做过了,所以不再配置)
    [root@MySQL ~]# mysql -uroot -p123123
    mysql> create database Coco;
    mysql> use Coco;
    mysql> create table test(ID int);
    mysql> insert into test values(1),(2),(3);
    

    使用 innobackupex 进行增量备份

    [root@MySQL ~]# innobackupex --user=root --password=123123 \
    --incremental /backups/ \
    --incremental-basedir=/backups/2021-05-19_23-00-37/
    

    查看备份数据

    [root@MySQL ~]# ll /backups/
    [root@MySQL ~]# cat /backups/2021-05-19_23-00-37/xtrabackup_checkpoints
    [root@MySQL ~]# cat /backups/2021-05-19_23-23-45/xtrabackup_checkpoints
    

    在这里插入图片描述
    删除数据库中所有数据

    [root@MySQL ~]# rm -rf /usr/local/mysql/data/*
    

    合并全备数据目录,确保数据的一致性

    [root@MySQL ~]# innobackupex --apply-log --redo-only /backups/2021-05-19_23-00-37/
    

    将增量备份数据合并到全备数据目录当中

    [root@MySQL ~]# innobackupex --apply-log --redo-only /backups/2021-05-19_23-00-37/ \
    --incremental-dir=/backups/2021-05-19_23-23-45/
    

    在这里插入图片描述
    恢复数据

    [root@MySQL ~]# innobackupex --copy-back /backups/2021-05-19_23-00-37/
    
    [root@MySQL ~]# chown -R mysql:mysql /usr/local/mysql/data/
    [root@MySQL ~]# mysql -uroot -p123123 -e "select * from Coco.test;"
    

    在这里插入图片描述
    总结:

    1. 增量备份需要使用 --incremental 参数来指定需要备份到哪个目录,使用 incremental-dir 参数来指定全备目录。
    2. 进行数据备份时,需要使用 --apply-log redo-only 参数来先合并全备数据目录数据,确保全备数据目录的一致性。
    3. 再将增量备份数据使用 --incremental-dir 参数来合并到全备数据当中。
    4. 最后通过全备数据来进行恢复数据,注意,如果有多个增量备份,需要逐一合并到全备数据当中,再进行恢复。
    展开全文
  • Mysql备份与恢复

    2018-05-29 13:14:23
    生产中Mysql备份恢复的形式,基于mysqldump备份及原理,基于Xtrabcackup备份及原理,表空间传输,binlog备份(增量),基于mysql全备+增备的恢复Tips
  •  对于MySQL备份,每个DBA的理解可能都不一样,备份可以分为下面几个维度: 文件种类划分: 1、物理备份,以xtrabackup为代表的物理备份是最常用的备份方法,经常被用在备份大的数据库上面。 2、逻辑备份,以...
  • Mysql备份——mysqldump

    千次阅读 2022-02-07 18:14:42
    Mysql备份——mysqldumpMysqldump备份流程一. mysqldump命令备份数据二. mysqldump常用操作示例三. 还原 MySQL备份内容 Mysqldump备份流程 mysqldump 备份出的文件就是 sql 文件,其核心就是对每个表执行 select ,...

    Mysqldump备份流程

    mysqldump 备份出的文件就是 sql 文件,其核心就是对每个表执行 select ,然后转化成相应的 insert 语句。

    mysqldump 的备份流程大致如下:

    1. 对某个库下所有表加读锁;
    2. 循环备份备份表数据;
    3. 释放读锁;
    4. 循环上面三个步骤;
    5. 备份完毕。

    一. mysqldump命令备份数据

    在MySQL中提供了命令行导出数据库数据以及文件的一种方便的工具mysqldump,我们可以通过命令行直接实现数据库内容的导出dump,首先我们简单了解一下mysqldump命令用法:

    #MySQLdump常用
    mysqldump -u root -p --databases 数据库1 数据库2 > xxx.sql
    

    二. mysqldump常用操作示例

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

    三. 还原 MySQL备份内容

    有两种方式还原,第一种是在 MySQL 命令行中,第二种是使用 SHELL 行完成还原

    #1. 在系统命令行中,输入如下实现还原:
    mysql -uroot -p123456 < /data/mysqlDump/mydb.sql
    
    #2. 在登录进入mysql系统中,通过source指令找到对应系统中的文件进行还原:
    mysql> source /data/mysqlDump/mydb.sql
    

    mysqldump cmd

    [ sysadmin:~ ]# mysqldump --help
    mysqldump  Ver 10.13 Distrib 5.6.51, for Linux (x86_64)
    Copyright (c) 2000, 2021, Oracle and/or its affiliates. All rights reserved.
    
    Oracle is a registered trademark of Oracle Corporation and/or its
    affiliates. Other names may be trademarks of their respective
    owners.
    
    Dumping structure and contents of MySQL databases and tables.
    Usage: mysqldump [OPTIONS] database [tables]
    OR     mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...]
    OR     mysqldump [OPTIONS] --all-databases [OPTIONS]
    
    Default options are read from the following files in the given order:
    /etc/my.cnf /etc/mysql/my.cnf /usr/etc/my.cnf ~/.my.cnf
    The following groups are read: mysqldump client
    The following options may be given as the first argument:
    --print-defaults        Print the program argument list and exit.
    --no-defaults           Don't read default options from any option file,
                            except for login file.
    --defaults-file=#       Only read default options from the given file #.
    --defaults-extra-file=# Read this file after the global files are read.
    --defaults-group-suffix=#
                            Also read groups with concat(group, suffix)
    --login-path=#          Read this path from the login file.
      -A, --all-databases Dump all the databases. This will be same as --databases
                          with all databases selected.
      -Y, --all-tablespaces
                          Dump all the tablespaces.
      -y, --no-tablespaces
                          Do not dump any tablespace information.
      --add-drop-database Add a DROP DATABASE before each create.
      --add-drop-table    Add a DROP TABLE before each create.
                          (Defaults to on; use --skip-add-drop-table to disable.)
      --add-drop-trigger  Add a DROP TRIGGER before each create.
      --add-locks         Add locks around INSERT statements.
                          (Defaults to on; use --skip-add-locks to disable.)
      --allow-keywords    Allow creation of column names that are keywords.
      --apply-slave-statements
                          Adds 'STOP SLAVE' prior to 'CHANGE MASTER' and 'START
                          SLAVE' to bottom of dump.
      --bind-address=name IP address to bind to.
      --character-sets-dir=name
                          Directory for character set files.
      -i, --comments      Write additional information.
                          (Defaults to on; use --skip-comments to disable.)
      --compatible=name   Change the dump to be compatible with a given mode. By
                          default tables are dumped in a format optimized for
                          MySQL. Legal modes are: ansi, mysql323, mysql40,
                          postgresql, oracle, mssql, db2, maxdb, no_key_options,
                          no_table_options, no_field_options. One can use several
                          modes separated by commas. Note: Requires MySQL server
                          version 4.1.0 or higher. This option is ignored with
                          earlier server versions.
      --compact           Give less verbose output (useful for debugging). Disables
                          structure comments and header/footer constructs.  Enables
                          options --skip-add-drop-table --skip-add-locks
                          --skip-comments --skip-disable-keys --skip-set-charset.
      -c, --complete-insert
                          Use complete insert statements.
      -C, --compress      Use compression in server/client protocol.
      -a, --create-options
                          Include all MySQL specific create options.
                          (Defaults to on; use --skip-create-options to disable.)
      -B, --databases     Dump several databases. Note the difference in usage; in
                          this case no tables are given. All name arguments are
                          regarded as database names. 'USE db_name;' will be
                          included in the output.
      -#, --debug[=#]     This is a non-debug version. Catch this and exit.
      --debug-check       Check memory and open file usage at exit.
      --debug-info        Print some debug info at exit.
      --default-character-set=name
                          Set the default character set.
      --delayed-insert    Insert rows with INSERT DELAYED.
      --delete-master-logs
                          Delete logs on master after backup. This automatically
                          enables --master-data.
      -K, --disable-keys  '/*!40000 ALTER TABLE tb_name DISABLE KEYS */; and
                          '/*!40000 ALTER TABLE tb_name ENABLE KEYS */; will be put
                          in the output.
                          (Defaults to on; use --skip-disable-keys to disable.)
      --dump-slave[=#]    This causes the binary log position and filename of the
                          master to be appended to the dumped data output. Setting
                          the value to 1, will printit as a CHANGE MASTER command
                          in the dumped data output; if equal to 2, that command
                          will be prefixed with a comment symbol. This option will
                          turn --lock-all-tables on, unless --single-transaction is
                          specified too (in which case a global read lock is only
                          taken a short time at the beginning of the dump - don't
                          forget to read about --single-transaction below). In all
                          cases any action on logs will happen at the exact moment
                          of the dump.Option automatically turns --lock-tables off.
      -E, --events        Dump events.
      -e, --extended-insert
                          Use multiple-row INSERT syntax that include several
                          VALUES lists.
                          (Defaults to on; use --skip-extended-insert to disable.)
      --fields-terminated-by=name
                          Fields in the output file are terminated by the given
                          string.
      --fields-enclosed-by=name
                          Fields in the output file are enclosed by the given
                          character.
      --fields-optionally-enclosed-by=name
                          Fields in the output file are optionally enclosed by the
                          given character.
      --fields-escaped-by=name
                          Fields in the output file are escaped by the given
                          character.
      -F, --flush-logs    Flush logs file in server before starting dump. Note that
                          if you dump many databases at once (using the option
                          --databases= or --all-databases), the logs will be
                          flushed for each database dumped. The exception is when
                          using --lock-all-tables or --master-data: in this case
                          the logs will be flushed only once, corresponding to the
                          moment all tables are locked. So if you want your dump
                          and the log flush to happen at the same exact moment you
                          should use --lock-all-tables or --master-data with
                          --flush-logs.
      --flush-privileges  Emit a FLUSH PRIVILEGES statement after dumping the mysql
                          database.  This option should be used any time the dump
                          contains the mysql database and any other database that
                          depends on the data in the mysql database for proper
                          restore.
      -f, --force         Continue even if we get an SQL error.
      -?, --help          Display this help message and exit.
      --hex-blob          Dump binary strings (BINARY, VARBINARY, BLOB) in
                          hexadecimal format.
      -h, --host=name     Connect to host.
      --ignore-table=name Do not dump the specified table. To specify more than one
                          table to ignore, use the directive multiple times, once
                          for each table.  Each table must be specified with both
                          database and table names, e.g.,
                          --ignore-table=database.table.
      --include-master-host-port
                          Adds 'MASTER_HOST=<host>, MASTER_PORT=<port>' to 'CHANGE
                          MASTER TO..' in dump produced with --dump-slave.
      --insert-ignore     Insert rows with INSERT IGNORE.
      --lines-terminated-by=name
                          Lines in the output file are terminated by the given
                          string.
      -x, --lock-all-tables
                          Locks all tables across all databases. This is achieved
                          by taking a global read lock for the duration of the
                          whole dump. Automatically turns --single-transaction and
                          --lock-tables off.
      -l, --lock-tables   Lock all tables for read.
                          (Defaults to on; use --skip-lock-tables to disable.)
      --log-error=name    Append warnings and errors to given file.
      --master-data[=#]   This causes the binary log position and filename to be
                          appended to the output. If equal to 1, will print it as a
                          CHANGE MASTER command; if equal to 2, that command will
                          be prefixed with a comment symbol. This option will turn
                          --lock-all-tables on, unless --single-transaction is
                          specified too (in which case a global read lock is only
                          taken a short time at the beginning of the dump; don't
                          forget to read about --single-transaction below). In all
                          cases, any action on logs will happen at the exact moment
                          of the dump. Option automatically turns --lock-tables
                          off.
      --max-allowed-packet=#
                          The maximum packet length to send to or receive from
                          server.
      --net-buffer-length=#
                          The buffer size for TCP/IP and socket communication.
      --no-autocommit     Wrap tables with autocommit/commit statements.
      -n, --no-create-db  Suppress the CREATE DATABASE ... IF EXISTS statement that
                          normally is output for each dumped database if
                          --all-databases or --databases is given.
      -t, --no-create-info
                          Don't write table creation info.
      -d, --no-data       No row information.
      -N, --no-set-names  Same as --skip-set-charset.
      --opt               Same as --add-drop-table, --add-locks, --create-options,
                          --quick, --extended-insert, --lock-tables, --set-charset,
                          and --disable-keys. Enabled by default, disable with
                          --skip-opt.
      --order-by-primary  Sorts each table's rows by primary key, or first unique
                          key, if such a key exists.  Useful when dumping a MyISAM
                          table to be loaded into an InnoDB table, but will make
                          the dump itself take considerably longer.
      -p, --password[=name]
                          Password to use when connecting to server. If password is
                          not given it's solicited on the tty.
      -P, --port=#        Port number to use for connection.
      --protocol=name     The protocol to use for connection (tcp, socket, pipe,
                          memory).
      -q, --quick         Don't buffer query, dump directly to stdout.
                          (Defaults to on; use --skip-quick to disable.)
      -Q, --quote-names   Quote table and column names with backticks (`).
                          (Defaults to on; use --skip-quote-names to disable.)
      --replace           Use REPLACE INTO instead of INSERT INTO.
      -r, --result-file=name
                          Direct output to a given file. This option should be used
                          in systems (e.g., DOS, Windows) that use carriage-return
                          linefeed pairs (\r\n) to separate text lines. This option
                          ensures that only a single newline is used.
      -R, --routines      Dump stored routines (functions and procedures).
      --set-charset       Add 'SET NAMES default_character_set' to the output.
                          (Defaults to on; use --skip-set-charset to disable.)
      --set-gtid-purged[=name]
                          Add 'SET @@GLOBAL.GTID_PURGED' to the output. Possible
                          values for this option are ON, OFF and AUTO. If ON is
                          used and GTIDs are not enabled on the server, an error is
                          generated. If OFF is used, this option does nothing. If
                          AUTO is used and GTIDs are enabled on the server, 'SET
                          @@GLOBAL.GTID_PURGED' is added to the output. If GTIDs
                          are disabled, AUTO does nothing. If no value is supplied
                          then the default (AUTO) value will be considered.
      --single-transaction
                          Creates a consistent snapshot by dumping all tables in a
                          single transaction. Works ONLY for tables stored in
                          storage engines which support multiversioning (currently
                          only InnoDB does); the dump is NOT guaranteed to be
                          consistent for other storage engines. While a
                          --single-transaction dump is in process, to ensure a
                          valid dump file (correct table contents and binary log
                          position), no other connection should use the following
                          statements: ALTER TABLE, DROP TABLE, RENAME TABLE,
                          TRUNCATE TABLE, as consistent snapshot is not isolated
                          from them. Option automatically turns off --lock-tables.
      --dump-date         Put a dump date to the end of the output.
                          (Defaults to on; use --skip-dump-date to disable.)
      --skip-opt          Disable --opt. Disables --add-drop-table, --add-locks,
                          --create-options, --quick, --extended-insert,
                          --lock-tables, --set-charset, and --disable-keys.
      -S, --socket=name   The socket file to use for connection.
      --secure-auth       Refuse client connecting to server if it uses old
                          (pre-4.1.1) protocol.
                          (Defaults to on; use --skip-secure-auth to disable.)
      --ssl               Enable SSL for connection (automatically enabled with
                          other flags).
      --ssl-ca=name       CA file in PEM format (check OpenSSL docs, implies
                          --ssl).
      --ssl-capath=name   CA directory (check OpenSSL docs, implies --ssl).
      --ssl-cert=name     X509 cert in PEM format (implies --ssl).
      --ssl-cipher=name   SSL cipher to use (implies --ssl).
      --ssl-key=name      X509 key in PEM format (implies --ssl).
      --ssl-crl=name      Certificate revocation list (implies --ssl).
      --ssl-crlpath=name  Certificate revocation list path (implies --ssl).
      --ssl-verify-server-cert
                          Verify server's "Common Name" in its cert against
                          hostname used when connecting. This option is disabled by
                          default.
      --ssl-mode=name     SSL connection mode.
      -T, --tab=name      Create tab-separated textfile for each table to given
                          path. (Create .sql and .txt files.) NOTE: This only works
                          if mysqldump is run on the same machine as the mysqld
                          server.
      --tables            Overrides option --databases (-B).
      --triggers          Dump triggers for each dumped table.
                          (Defaults to on; use --skip-triggers to disable.)
      --tz-utc            SET TIME_ZONE='+00:00' at top of dump to allow dumping of
                          TIMESTAMP data when a server has data in different time
                          zones or data is being moved between servers with
                          different time zones.
                          (Defaults to on; use --skip-tz-utc to disable.)
      -u, --user=name     User for login if not current user.
      -v, --verbose       Print info about the various stages.
      -V, --version       Output version information and exit.
      -w, --where=name    Dump only selected records. Quotes are mandatory.
      -X, --xml           Dump a database as well formed XML.
      --plugin-dir=name   Directory for client-side plugins.
      --default-auth=name Default authentication client-side plugin to use.
      --enable-cleartext-plugin
                          Enable/disable the clear text authentication plugin.
    
    Variables (--variable-name=value)
    and boolean options {FALSE|TRUE}  Value (after reading options)
    --------------------------------- ----------------------------------------
    all-databases                     FALSE
    all-tablespaces                   FALSE
    no-tablespaces                    FALSE
    add-drop-database                 FALSE
    add-drop-table                    TRUE
    add-drop-trigger                  FALSE
    add-locks                         TRUE
    allow-keywords                    FALSE
    apply-slave-statements            FALSE
    bind-address                      (No default value)
    character-sets-dir                (No default value)
    comments                          TRUE
    compatible                        (No default value)
    compact                           FALSE
    complete-insert                   FALSE
    compress                          FALSE
    create-options                    TRUE
    databases                         FALSE
    debug-check                       FALSE
    debug-info                        FALSE
    default-character-set             utf8
    delayed-insert                    FALSE
    delete-master-logs                FALSE
    disable-keys                      TRUE
    dump-slave                        0
    events                            FALSE
    extended-insert                   TRUE
    fields-terminated-by              (No default value)
    fields-enclosed-by                (No default value)
    fields-optionally-enclosed-by     (No default value)
    fields-escaped-by                 (No default value)
    flush-logs                        FALSE
    flush-privileges                  FALSE
    force                             FALSE
    hex-blob                          FALSE
    host                              (No default value)
    include-master-host-port          FALSE
    insert-ignore                     FALSE
    lines-terminated-by               (No default value)
    lock-all-tables                   FALSE
    lock-tables                       TRUE
    log-error                         (No default value)
    master-data                       0
    max-allowed-packet                25165824
    net-buffer-length                 1046528
    no-autocommit                     FALSE
    no-create-db                      FALSE
    no-create-info                    FALSE
    no-data                           FALSE
    order-by-primary                  FALSE
    port                              0
    quick                             TRUE
    quote-names                       TRUE
    replace                           FALSE
    routines                          FALSE
    set-charset                       TRUE
    single-transaction                FALSE
    dump-date                         TRUE
    socket                            (No default value)
    secure-auth                       TRUE
    ssl                               FALSE
    ssl-ca                            (No default value)
    ssl-capath                        (No default value)
    ssl-cert                          (No default value)
    ssl-cipher                        (No default value)
    ssl-key                           (No default value)
    ssl-crl                           (No default value)
    ssl-crlpath                       (No default value)
    ssl-verify-server-cert            FALSE
    tab                               (No default value)
    triggers                          TRUE
    tz-utc                            TRUE
    user                              (No default value)
    verbose                           FALSE
    where                             (No default value)
    plugin-dir                        (No default value)
    default-auth                      (No default value)
    enable-cleartext-plugin           FALSE
    
    
    展开全文
  • mysql自动备份

    2018-12-04 09:28:36
    mysql的自动备份代码,根据自己的需要改动一下,需要的可以自己试试
  • windows系统完美使用的MYSQL自动备份工具,不借助windows计划任务实现自动备份,自动获取mysql安装路径。纯绿色。支持windows2003-2019
  • mysql备份方式工具详解

    千次阅读 2022-03-21 23:52:31
    文章目录1、MySQL数据库备份1.1、数据丢失的原因场景1.2、数据丢失的损失1.3、备份需要考虑的问题2、数据库备份的分类2.1、常见的备份方法3、MySQL物理冷备4、MySQLdump4.1、mysqldump对单个库进行完全备份4.2、...
  • 1、本地备份编写自动备份脚本:vim /var/lib/mysql/autobak内容如下: 代码如下:cd /data/home/mysqlbakrq=` date +%Y%m%d `/usr/local/mysql/bin/mysqldump sqldb –flush-logs -uroot -p123456 –opt > 777city_$...
  • MySQL备份数据库

    千次阅读 2021-01-18 21:28:06
    最近,笔者因为一些原因,不得不手动在生产环境下操作数据库。在生产环境下操作数据非常危险,如果update...笔者总结了mysql几种备份数据的方法。1. 小表快速备份这种方法最简单,也是笔者备份小表常用的方式。对需...
  • Mysql 备份的三种方式

    千次阅读 2021-06-16 14:21:03
    备份的本质就是将数据集另存一个副本,但是原数据会不停的发生变化,所以利用备份只能回复到数据变化之前的数据。那变化之后的呢?所以制定一个好的备份策略很重要。 一、备份的目的 做灾难恢复:对损坏的数据...
  • mysql备份还原

    千次阅读 2021-01-19 06:24:37
    一、备份常用操作基本命令1、...文件名.sql2、备份MySQL数据库为带删除表的格式备份MySQL数据库为带删除表的格式,能够让该备份覆盖已有数据库而不需要手动删除原有数据库。mysqldump--add-drop-table-u username-p...
  • linux系统定时备份mysql备份数据库

    千次阅读 2022-04-13 11:23:49
    BACKUP=/home/backup/mysql #当前时间 DATETIME=$(date +%Y-%m-%d) echo "===备份开始===" #后台系统数据库 DATABASE=wechat #数据库地址 HOST=localhost #数据库用户名 DB_USER=root #数据库密码 DB_PW=xydtech #...
  • MySQL备份与还原

    千次阅读 2021-01-19 11:17:21
    MySQL备份与还原方式一:使用(Navicat for MySQL)工具备份与还原带数据备份步骤一,使用Navicat for MySQL登录数据库,选择需要备份的数据库,点击备份按钮。步骤二,点击新建备份,然后到对象选择,勾选需要备份的...
  • mysql备份数据库/备份表

    千次阅读 2021-12-09 22:08:23
    1.create table 备份 like 主表(备份结构) create table student_20211209 like student; 2.insert into 备份表 select * from student;(备份数据) insert into student_20211209 select * from student; ...
  • 使用Xtrabackup进行MySQL备份

    千次阅读 2021-06-03 01:03:13
    使用Xtrabackup进行MySQL备份 一、安装 1、简介 Xtrabackup是由percona提供的mysql数据库备份工具,据官方介绍,这也是世界上惟一一款开源的能够对innodb和xtradb数据库进行热备的工具。特点: (1)备份过程快速、...
  • linux下mysql备份和恢复

    千次阅读 2022-02-11 16:56:10
    2.备份mysql下的test全库放下/root目录下 /usr/bin/mysqldump -uroot -p1234 --default-character-set=utf8 --databases test > /root/test.sql 3.恢复(将test库还原到test库) mysql -uroot -p test < ~/...
  • MySQL8.0备份工具xtrabackup,支持8.0.20版本!!!
  • 史上最全的MYSQL备份方法

    千次阅读 2021-01-18 19:20:58
    本人曾经用过的备份方式有:mysqldump、mysqlhotcopy、BACKUP TABLE 、SELECT INTOOUTFILE,又或者备份二进制日志(binlog),还可以是直接拷贝数据文件和相关的配置文件。MyISAM表是保存成文件的形式,因此相对比较...
  • Mysql备份压缩及恢复数据库方法总结

    千次阅读 2021-02-08 11:29:45
    一般情况我们通过mysqldump来备份MySQL数据库,并上传至其它备份机器。...下面介绍如何使用bzip2和gzip进行压缩mysql备份文件。备份并用bzip压缩:代码如下mysqldump | bzip2 > outputfile.sql...
  • 易语言MYSQL数据库备份还原器源码,MYSQL数据库备份还原器,复制目录,子程序_备份选定的数据库,子程序_还原指定还原点数据
  • 1.备份MySQL到指定的目录。 2.支持压缩备份。无需安装压缩软件支持CAB压缩备份。或者安装RAR软件,支持RAR压缩备份。 3.支持备份日志。可以了解哪些数据库没有备份成功。 4.支持保留多少次备份。也就是删除多少次...
  • 主要介绍了CentOS7开启MySQL8主从备份、每日定时全量备份,解决了链接mysql数据库很慢的问题,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 307,275
精华内容 122,910
关键字:

mysql备份

mysql 订阅