MySQL数据备份和数据恢复

一、备份的相关名词

1.1.物理备份

        原始数据在操作系统呈什么样的表现形式,备份出来也是什么样。

1.2.逻辑备份

       数据库的逻辑备份保存的是数据库逻辑结构(CREATE DATABASE,CREATE TABLE语句),以及所存储的数据(转换成INSERT语句或者定界文件)。

       备份集是基于查询MySQL服务获得的数据库结构及内容信息;

1.3.联机备份

      数据库服务运行期间执行备份操作。

1.4.脱机备份

       冷备份,数据库服务停止运行的时候进行备份。

1.5.本地备份

        MySQL服务器上执行备份。

1.6.远程备份

       远程服务器执行备份。

1.7.完整备份

        完整备份也叫全量备份,指备份数据库中的所有数据。

1.8.增量备份

        只备份指定时间点后发生的修改。

二、备份工具

 2.1复制表相关的文件的方式创建备份集,这中备份方式只是适合MyISAM引擎     

mysql> create database backtest;
Query OK, 1 row affected (0.01 sec)

mysql> use backtest;
Database changed

sql> create table myisambak(id int) engine=myisam;
Query OK, 0 rows affected (0.01 sec)

[root@localhost mysql]# cd backtest/
[root@localhost backtest]# ls
db.opt myisambak.frm myisambak.MYD myisambak.MYI

mysql> flush tables myisambak with read lock;
Query OK, 0 rows affected (0.02 sec)

[root@localhost backtest]# cp myisambak.* /var/lib/databack/

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

 2.2使用SQL语句创建备份

     这中备份方式不包含表结构。

mysql> select * from myisambak into outfile '/var/lib/mysql-files/myisambak.text';
Query OK, 4 rows affected (0.00 sec)

2.3冷复制方式创建物理备份

        关闭mysql数据库,复制data目录。

三、mysqldump备份与恢复

 3.1 mysqldump备份,

!!!!!!!!!!!!!默认会锁表,要加参数但是如果加上–single-transaction会加上事务,不会锁表

[root@localhost ~]# mysqldump -uroot -p gis

  备份到指定的目录下面

[root@localhost ~]# mysqldump -uroot -p gis > /var/lib/mysql-files/gisbak.sql

备份多个数据库

[root@localhost ~]# mysqldump -uroot -p --databases heng heng2 > /tmp/hengbak.sql

输出定界格式文件,当以定界格式输出时候,mysqldump输出信息默认就不在是标准输出,而是根据对象,生成两个文件,一个扩展名为.txt,存数据,另外一个是存储结构扩展名为.sql

[root@localhost ~]# mysqldump -uroot -p --tab=/var/lib/mysql-files gis

指定分隔符

[root@localhost tmp]# mysqldump -uroot -p --tab=/tmp/bak backtest myisambak --fields-terminated-by=',' --fields-enclosed-by='"'
Enter password:

查看结果:

[root@localhost bak]# cat myisambak.txt
"2","aa"
"3","dd"
"4","bb"
"5","cc"

3.2 mysqldump恢复

通过mysqldump命令附加--tab参数导出后,每个表对象会有两个同名的文件,扩展名为.sql,保存对象创建的脚本,另外哪个为.txt保存的是数据,恢复时候首先打开.sql的文件,

 

[root@localhost bak]# mysql -uroot -p backtest < /tmp/bak/myisambak.sql
Enter password: 

恢复数据文件

mysql> load data infile '/tmp/bak/myisambak.txt' into table myisambak fields terminated by ',' enclosed by '"';
Query OK, 4 rows affected (0.00 sec)
Records: 4  Deleted: 0  Skipped: 0  Warnings: 0

用source命令恢复sql语句:

mysql> source /tmp/bak/myisambak.sql
Query OK, 0 rows affected (0.00 sec)

3.3自动化备份策略

库级备份

[root@localhost tmp]# mysqldump -uroot -p -A -R -x --default-character-set=utf8 | gzip > /tmp/dbfulbak_`date +%F`.sql.gz
Enter password:

-A   all  database;    -R   Dump stored routines (functions and procedures)     -x     lock-all-tables

 3.4XtraBackup备份

下载;

[root@localhost tmp]# wget -P /tmp http://www.percona.com/redir/downloads/XtraBackup/XtraBackup-2.0.7/binary/Linux/x86_64/percona-xtrabackup-2.0.7-552.tar.gz

  [root@localhost tmp]# tar -zxvf percona-xtrabackup-2.0.7-552.tar.gz -C /usr/local/

  [root@localhost ~]# echo "export PATH=/usr/local/percona-xtrabackup-2.0.7/bin:\$PATH" >> /root/.bash_profile


  mysql> create user xtrabak@'localhost' identified by 'Password@123';
  Query OK, 0 rows affected (0.00 sec)

 

mysql> grant reload,lock tables,Replication client,super on *.* to xtrabak@'localhost';
Query OK, 0 rows affected (0.05 sec)

备份报错:

[root@localhost bin]# ./xtrabackup_56 --defaults-file=/etc/my.cnf --backup --target-dir=/tmp/bak20220614
./xtrabackup_56: error while loading shared libraries: libssl.so.6: cannot open shared object file: No such file or directory


[root@localhost bin]# yum -y install openssl*
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
my | 3.6 kB 00:00:00
软件包 1:openssl-libs-1.0.2k-19.el7.x86_64 已安装并且是最新版本
软件包 1:openssl-1.0.2k-19.el7.x86_64 已安装并且是最新版本
正在解决依赖关系
--> 正在检查事务

 

 

posted @ 2022-06-15 08:56  中仕  阅读(4)  评论(0编辑  收藏  举报