当前位置: 首页 > news >正文

深圳住建网站郑州seo外包顾问热狗

深圳住建网站,郑州seo外包顾问热狗,做英文网站价格,制作网站的模板MySQL的物理备份: xtrabackup备份介绍: xtrabackup优缺点: 优点: 1、备份过程快速、可靠(因为是物理备份);直接拷贝物理文件。 2、支持增量备份,更为灵活; 3、备份…

MySQL的物理备份:

xtrabackup备份介绍:

xtrabackup优缺点:

优点:

1、备份过程快速、可靠(因为是物理备份);直接拷贝物理文件。

2、支持增量备份,更为灵活;

3、备份过程不会打断正在执行的事务

4、能够支持压缩功能节约磁盘空间和流量;

5、自动实现备份检验

6、还原速度快;

缺点:

1、只能对innodb表增量备份,myisam表增量备份时是全备;

2、innobackupex备份MyISAM表之前要对全库进行READ LOCK,阻塞操作,若备份是在从库上进行的话会影响主从同步,造成延迟。对innodb表备份不会阻塞读写。

xtrabackup备份原理

  1. innobackupex首先会==启动==一个==xtrabackup_log后台检测的进程,实时检测mysql的==redo log==的变化,一旦发现redo有新的日志写入,立刻将日志写入到日志文件==xtrabackup_log==中。

  2. ==物理==拷贝==innodb的数据文件和系统表空间文件idbdata1==到对应的以默认时间戳为备份目录的地方

  3. 复制结束后,执行==flush table with read lock==操作进行全库锁表准备备份非InnoDB文件

  4. 物理复制.frm .myd .myi等非InnoDB引擎文件到备份目录

  5. 查看二进制日志的位置

  6. 解锁表unlock tables

  7. ==停止==xtrabackup_log进程

innodb引擎,如果对数据进行了增删修操作,那么这个日志发生了变化。就把获取的内容写到xtrabackup log中。

innodb的数据文件就是.frm和idb两个数据文件。系统表空间文件就是ibdata1文件。

innodb的数据备份好了之后,那还有一些MyISAM引擎的文件也需要进行处理。那这个时候就要进行flush table with read lock操作。

然后开始复制.frm .myd .myi这些MyISAM文件。

然后还要查看二进制文件的位置。--master-data。备份二进制文件。

然后要解锁unlock tables。

最后再把xtrabackup log进程停止掉。

redo log日志:

事务日志或称redo日志。在mysql中默认以ib_logfile0, ib_logfile1的名称存在。

xtrabackup备份恢复原理: 

说明:就是开始备份,将之前的数据进行备份。那么备份期间这段时间产生的新数据也进行下备份,这样才是一个完整的备份。这是这个软件高级的地方。

具体文字描述如下(了解):

  • 在InnoDB内部会维护一个redo日志文件,我们也可以叫做事务日志文件。事务日志会存储每一个InnoDB表数据的记录修改。当InnoDB启动时,InnoDB会检查数据文件和事务日志,并执行两个步骤:它应用(前滚)已经提交的事务日志到数据文件,并将修改过但没有提交的数据进行回滚操作。

  • xtrabackup在启动时会记住log sequence number(LSN),并且复制所有的数据文件。复制过程需要一些时间,所以这期间如果数据文件有改动,那么将会使数据库处于一个不同的时间点。这时,xtrabackup会运行一个后台进程,用于监视事务日志,并从事务日志复制最新的修改。xtrabackup必须持续的做这个操作,是因为事务日志是会轮转重复的写入,并且事务日志可以被重用。所以xtrabackup自启动开始,就不停的将事务日志中每个数据文件的修改都记录下来。

  • 上面就是xtrabackup的备份过程。接下来是准备(prepare)过程。在这个过程中,xtrabackup使用之前复制的事务日志,对各个数据文件执行灾难恢复(就像MySQL刚启动时要做的一样)。当这个过程结束后,数据库就可以做恢复还原了。

  • 以上的过程在xtrabackup的编译二进制程序中实现。程序innobackupex可以允许我们备份MyISAM表和frm文件从而增加了便捷和功能。Innobackupex会启动xtrabackup,直到xtrabackup复制数据文件后,然后执行FLUSH TABLES WITH READ LOCK来阻止新的写入进来并把MyISAM表数据刷到硬盘上,之后复制MyISAM数据文件,最后释放锁。

  • 备份MyISAM和InnoDB表最终会处于一致,在准备(prepare)过程结束后,InnoDB表数据已经前滚到整个备份结束的点,而不是回滚到xtrabackup刚开始时的点。这个时间点与执行FLUSH TABLES WITH READ LOCK的时间点相同,所以MyISAM表数据与InnoDB表数据是同步的。类似Oracle的recover和restore,InnoDB的prepare过程可以称为recover(恢复),MyISAM的数据复制过程可以称为restore(还原)。

  • ==Mysql5.7.3以后开启二进制日志需要加上server-id选项,不然报错==

获取xtrabackup备份工具:

我这边还是使用老师提供的版本:

依赖库和软件包。

xtrabackup软件的安装:

第一步:上传软件包和依赖库:

第二步:安装软件包:

[root@mysql-server ~]# rpm -ivh libev-4.15-3.el7.x86_64.rpm
warning: libev-4.15-3.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID 352c64e5: NOKEY
Preparing...                          ################################# [100%]
Updating / installing...1:libev-4.15-3.el7                 ################################# [100%]
[root@mysql-server ~]# rpm -ivh percona-xtrabackup-24-2.4.7-2.el7.x86_64.rpm
warning: percona-xtrabackup-24-2.4.7-2.el7.x86_64.rpm: Header V4 DSA/SHA1 Signature, key ID cd2efd2a: NOKEY
error: Failed dependencies:perl(DBD::mysql) is needed by percona-xtrabackup-24-2.4.7-2.el7.x86_64perl(Digest::MD5) is needed by percona-xtrabackup-24-2.4.7-2.el7.x86_64

 出现这个问题。

那么,我们可以直接使用yum来进行安装,解决依赖的问题。

[root@mysql-server ~]# rpm -ql percona-xtrabackup-24
/usr/bin/innobackupex
/usr/bin/xbcloud
/usr/bin/xbcloud_osenv
/usr/bin/xbcrypt
/usr/bin/xbstream
/usr/bin/xtrabackup
/usr/share/doc/percona-xtrabackup-24-2.4.7
/usr/share/doc/percona-xtrabackup-24-2.4.7/COPYING
/usr/share/man/man1/innobackupex.1.gz
/usr/share/man/man1/xbcrypt.1.gz
/usr/share/man/man1/xbstream.1.gz
/usr/share/man/man1/xtrabackup.1.gz

 innobackupex和xtrabackup是两个核心的工具。

xtrabackup全库备份与恢复:

备份核心思路:

1)使用innobackupex对数据库中的所有库进行全量备份(物理文件拷贝),备份完成之后,其不能立即进行数据恢复。(数据不完整,还缺少12:00~12:30这个过程中的数据。)

2)预备阶段,备份过程中产生的xtrabackup log应用到全量备份集。整合到全量备份集中。

3)模拟故障(删除数据) rm -rf data/*

4)动员运维工程师进行全库恢复。

5)再测试验证。

第一步:准备数据:

mysql> create database db_itheima default charset=utf8;
Query OK, 1 row affected (0.00 sec)mysql>
mysql> use db_itheima;
Database changed
mysql>
mysql> create table t1(-> id int,-> name varchar(10)-> )engine=myisam;
Query OK, 0 rows affected (0.00 sec)mysql> insert into t1 values(1, '吕布');
Query OK, 1 row affected (0.00 sec)mysql>
mysql> create table t2(-> id int,-> name varchar(10)-> )engine=innodb;
Query OK, 0 rows affected (0.02 sec)mysql>
mysql> insert into t2 values(1, '貂蝉');
Query OK, 1 row affected (0.00 sec)

第二步:专门准备一个数据库备份账号,开通相应权限。

创建备份用户admin,并授予相应权限
mysql> grant reload,process,lock tables,replication client on *.* to 'admin'@'localhost' identified by '123';
mysql> flush privileges;说明:
在数据库中需要以下权限:
RELOAD和LOCK TABLES权限:为了执行FLUSH TABLES WITH READ LOCK
REPLICATION CLIENT权限:为了获取binary log位置
PROCESS权限:显示有关在服务器中执行的线程的信息(即有关会话执行的语句的信息),允许使用SHOW ENGINE
mysql> grant reload,lock tables,process,replication client on *.* to 'admin'@'localhost' identified by '123';
Query OK, 0 rows affected, 1 warning (0.00 sec)mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

第三步:使用innobackupex工具进行全库备份。

把数据导出备份到/full_xtrabackup目录。

遇到这个错误,不能连接到/var/lib/mysql/mysql.sock。

目前,我们的mysql.sock是在/tmp/mysql.sock这个地方。我们有两种方法来解决:

1)软链接;

2)-S /tmp/mysql.sock。

第四步:预备阶段,把备份这段时间内产生的日志整合到全量备份中。

[root@mysql-server ~]# cd /full_xtrabackup/
[root@mysql-server full_xtrabackup]# ll
total 0
drwxr-x--- 2 root root   6 Sep 29 18:50 2023-09-29_18-50-24
drwxr-x--- 6 root root 241 Sep 29 18:52 2023-09-29_18-52-20
[root@mysql-server full_xtrabackup]#
[root@mysql-server full_xtrabackup]# innobackupex --user=admin --password=123 --apply-log /full_xtrabackup/2023-09-29_18-52-20

--apply-log  应用这个日志。整合日志,把这些日志整合到刚才的备份的数据文件夹中。

第五步:模拟数据库故障:

删除数据目录中的所有文件。

[root@mysql-server ~]# rm -rf /mysql_3306/data/*
[root@mysql-server ~]# pkill mysqld[root@mysql-server ~]# service mysql_3306 start
Starting MySQL.Logging to '/mysql_3306/data/mysql.err'.
.. ERROR! The server quit without updating PID file (/mysql_3306/data/mysql-server.lnmp.com.pid).

这个故障模拟的比较狠的,然后测试数据库启动,无法进行启动。

第六步:快速地恢复数据库中的数据。

如果没有--default-file=/mysql_3306/my.cnf这个配置选项,innnobackupex就无法找到mysql中的数据目录。需要把my.cnf配置文件传递给innobackupex,让其自动识别到文件中的数据目录。

在执行这个命令之前,还需要将/mysql_3306/data目录进行清空。程序会检查这个文件。

然后,我们看到这个data目录中数据库文件和redo日志文件都已经恢复。

我们发现这些文件的权限都还不对。

需要更改权限。

第七步:恢复数据时记得更改/mysql_3306/data目录下的文件拥有者以及所属组权限。如果不更改权限,mysql无法启动。

[root@mysql-server ~]# chown -R mysql:mysql /mysql_3306/data[root@mysql-server ~]# ll /mysql_3306/data
total 122920
drwxr-x--- 2 mysql mysql       90 Sep 30 09:03 db_itheima
-rw-r----- 1 mysql mysql      850 Sep 30 09:03 ib_buffer_pool
-rw-r----- 1 mysql mysql 12582912 Sep 30 09:03 ibdata1
-rw-r----- 1 mysql mysql 50331648 Sep 30 09:03 ib_logfile0
-rw-r----- 1 mysql mysql 50331648 Sep 30 09:03 ib_logfile1
-rw-r----- 1 mysql mysql 12582912 Sep 30 09:03 ibtmp1
drwxr-x--- 2 mysql mysql     4096 Sep 30 09:03 mysql
drwxr-x--- 2 mysql mysql     8192 Sep 30 09:03 performance_schema
drwxr-x--- 2 mysql mysql     8192 Sep 30 09:03 sys
-rw-r----- 1 mysql mysql       19 Sep 30 09:03 xtrabackup_binlog_pos_innodb
-rw-r----- 1 mysql mysql      471 Sep 30 09:03 xtrabackup_info

第八步:启动mysql,测试其是否正常。

[root@mysql-server ~]# service mysql_3306 start
Starting MySQL.Logging to '/mysql_3306/data/mysql.err'.
. SUCCESS!mysql> select * from t1;
+------+--------+
| id   | name   |
+------+--------+
|    1 | 吕布   |
+------+--------+
1 row in set (0.00 sec)mysql> select * from t2;
+------+--------+
| id   | name   |
+------+--------+
|    1 | 貂蝉   |
+------+--------+
1 row in set (0.00 sec)
http://www.hrbkazy.com/news/6388.html

相关文章:

  • 网站开发常用软件是什么每日新闻简报
  • 做简历的什么客网站域名备案
  • 如何查网站的百度快照最近重大新闻头条
  • 糖果屋网站建设策划书免费推广平台排行榜
  • 企业网站建设套餐上海seo行业
  • 怎样用c语言做网站网络营销工程师
  • 自己做网站需要什么软件下载市场营销渠道
  • 做网站视频下载html静态网页制作
  • 山东省个人网站备案网络宣传渠道
  • 深圳建立企业网站扬州网络优化推广
  • 怎么做网站关键词seo外链推广员
  • 建设部网站办事大厅怎么免费制作网页
  • 商业网站建设软件宁波网站推广
  • 厦门医院网站建设贵州seo推广
  • 网站制作报价开网站开发怎么做
  • 网站建设需要几个阶段ip域名查询
  • worldpress 建站百度一下电脑版
  • 响水网站建设服务商全专业优化公司
  • Wordpress自动回复评论长沙seo研究中心
  • 免费制作照片的网站软文营销推广
  • 妈妈在家里做女视频网站网站收录怎么弄
  • 三星杭州 两学一做网站谷歌推广怎么做
  • 陕西的网站建设公司哪家好百度seo新规则
  • 如何让自己做的网页有网站免费推广网
  • 网站建设学习步骤专业精准网络营销推广
  • 邢台做网站动态广州网络seo优化
  • 做网站没有成本费用如何做账欧美seo查询
  • 广州网站托管百度一下首页百度一下
  • WordPress大胡子白杨seo
  • 做网站软件_手机推广普通话手抄报内容大全资料