项目5 备份与恢复MySQL数据库_第1页
项目5 备份与恢复MySQL数据库_第2页
项目5 备份与恢复MySQL数据库_第3页
项目5 备份与恢复MySQL数据库_第4页
项目5 备份与恢复MySQL数据库_第5页
已阅读5页,还剩57页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数据库运维与管理项目5备份与恢复MySQL数据库教学目标知识目标掌握MySQL备份的概念和分类掌握mysqldump命令的使用方法掌握PerconaXtraBackup工具的使用方法掌握数据库迁移的概念掌握MySQL数据表的导出和导入方法素养目标提高安全防范意识加强规范操作意识能力目标能使用mysqldump命令备份和恢复数据能使用PerconaXtraBackup实现热备份能基于crontab实现自动备份作业能基于各种命令实现数据表的导入和导出项目5

备份与恢复MySQL数据库项目场景:天天电器商场的服务器已使用多年。由于服务器硬件故障率高,经常会导致数据丢失,受到各部门抱怨。但公司近期没有设备更新计划,信息部门决定实施一个自动的备份方案,当服务器重装的时候能重新加载备份数据。数据备份一、备份的分类1、按照备份的方法分类按照备份的方法(是否需要数据库离线),可以将备份分为热备份、冷备份和温备份。(1)热备份(HotBackup)。热备份可以在数据库运行中直接进行,对正在运行的数据库操作没有任何的影响,数据库的读写操作可以正常执行。(2)冷备份(ColdBackup)。冷备份必须在数据库停止运行的情况下进行,数据库的读写操作不能执行。这种备份方式非常简单,一般只需要复制相关的数据库物理文件即可。(3)温备份(WarmBackup)。温备份是在数据库运行过程中进行的,但是会对当前数据库的操作有所影响,温备份时仅支持读操作,不支持写操作。数据备份2、按照备份的数据库内容分类

按照备份的数据库内容来分类,备份又可以分为完全备份和部分备份。1.完全备份。完全备份是指对数据库进行完整的备份,即备份整个数据库,如果数据较多则会占用较多的时间和较大的空间。2.部分备份。部分备份是指备份部分数据库内容(例如,只备份一个表)。部分备份又分为增量备份和差异备份。增量备份需要使用专业的备份工具。增量备份是指在上次完全备份的基础上,对更改的数据进行备份。注意:在MySQL中,进行不同方式的备份前,还要考虑存储引擎是否支持,例如MyISAM存储引擎不支持热备份,只支持温备份和冷备份;而InnoDB存储引擎则支持热备份、温备份和冷备份。备份的数据和备份工具二、备份的数据一般情况下,需要备份的数据分为以下几种。(1)表数据。(2)二进制日志、InnoDB事务日志。(3)代码(存储过程、存储函数、触发器、事件调度器)。(4)服务器配置文件。备份的数据和备份工具三、备份的工具以下是几种常用的备份工具。(1)mysqldump:逻辑备份工具,适用于所有的存储引擎,支持温备份、完全备份、部分备份,对于InnoDB存储引擎支持热备份。(2)cp、tar等归档复制工具:物理备份工具,适用于所有的存储引擎,支持冷备份、完全备份、部分备份。(3)lvm2snapshot:借助文件系统管理工具进行备份。(4)XtraBackup:一款由Percona公司提供的非常强大的InnoDB/XtraDB热备份工具,支持完全备份、增量备份。使用mysqldump命令备份

MySQL主要提供了mysqldump命令用于实现备份。使用mysqldump命令备份一个数据库的语法格式如下。mysqldump-uusername-pdbname[tbname...]>filename.sqlusername:账户名称。dbname:需要备份的数据库名称。tbname:数据库中需要备份的数据表名称,可以指定多个数据表。省略该参数时,会备份整个数据库。>:用来告诉mysqldump命令,将备份数据表的定义和数据写入指定的备份文件。filename.sql:备份文件的名称,文件名前面可以加绝对路径。通常将数据库备份成一个扩展名为.sql的文件。使用mysqldump命令备份下面通过示例来介绍mysqldump命令的基本使用方法。1.备份单个数据库信息,命令语法格式如下。mysqldump-u账户名-p密码--databases数据库>/保存路径/文件名.sql例如,备份data数据库,账户名是root,密码是root,备份到当前文件夹的1.sql文件中,命令如下。mysqldump-uroot-proot--databasesdata>1.sql2.备份全部数据库信息,命令语法格式如下。mysqldump-u账户名-p密码--all-databases>/保存路径/文件名.sql例如,备份全部数据库,账户名是root,密码是root,备份到当前文件夹的2.sql文件中,命令如下。mysqldump-uroot-proot--all-databases>2.sql3.备份某一个数据表,命令语法格式如下。mysqldump-u账户名-p密码数据库名表名>/保存路径/文件名.sql例如,备份data数据库中的users表,账户名是root,密码是root,备份到当前文件夹的3.sql文件中,命令如下。mysqldump-uroot-prootdatausers>3.sql使用PerconaXtraBackup工具快速备份备份操作示例(1)全库备份——备份所有数据库,存放在以时间命名的目录下。innobackupex会在指定存放数据的目录下用当前时间作为名称创建一个目录,所有生成的备份文件都会存放在这个目录下,命令如下。shell>innobackupex--defaults-file=/usr/local/mysql/f--user=root--password=xxx--socket=/var/lib/mysql/mysql.sock/data/backup/当出现“completedOK!”则表示备份完成。(2)全库备份——备份所有数据库,并指定目录的名称。在使用innobackupex进行备份时,可以使用--no-timestamp参数来阻止它自动创建一个以时间命名的目录,如此一来,innobackupex将会创建一个backup_dir目录来存储备份数据,命令如下。shell>innobackupex--defaults-file=/usr/local/mysql/f--user=root--password=xxx--socket=/var/lib/mysql/mysql.sock--no-timestamp/data/backup/backup_dir使用PerconaXtraBackup工具快速备份备份操作示例(3)全库备份——备份所有数据库,并打包。--stream=tar参数表示流式备份的格式,备份完成之后以指定格式存储到标准输出,目前只支持tar和xbstream格式,命令如下。shell>innobackupex--defaluts-file=/usr/local/mysql/f--user=root--password=xxx--socket=/var/lib/mysql/mysql.sock--stream=tar--no-timestamp/home/data/backup1>/home/data/backup/xtra_backup20210329.tar上述代码中,“1>”代表标准输出(stdout),“>”前面不加1,具有同样效果;“2>”代表标准错误(stderr)。(4)全库备份——备份所有数据库,并压缩打包。命令如下。shell>innobackupex--defaluts-file=/usr/local/mysql/f--user=root--password=xxx--socket=/var/lib/mysql/mysql.sock--stream=tar--no-timestamp/home/data/backup|gzip>/home/data/backup/150_backup.tar.gz解压PerconaXtraBackup的备份文件,必须使用tar和-i参数。例如,可以先创建解压的目录150_backup,然后解压到此目录。解压备份文件的命令如下。shell>tar-zixvf150_backup.tar.gz-C./150_backup使用PerconaXtraBackup工具快速备份备份操作示例(5)全库备份——备份到远程并压缩。命令如下。shell>innobackupex--defaluts-file=/usr/local/mysql/f--user=root--password=xxx--socket=/var/lib/mysql/mysql.sock--stream=tar/home/data/backup|sshroot@192.168.2.151"gzip>/home/data/150_backup/150_backup.tar.gz"(6)备份指定数据库。例如,备份数据库A和B,使用--databases参数指定数据库,命令如下。shell>innobackupex--defaults-file=/usr/local/mysql/f--user=root--password=xxx--socket=/var/lib/mysql/mysql.sock--databases="AB"--no-timestamp/data/backup/backup_database(7)备份不同数据库下的不同表。还是使用--databases参数,指定数据库中的表,命令如下。shell>innobackupex--defaults-file=/usr/local/mysql/f--user=root--password=xxx--socket=/var/lib/mysql/mysql.sock--databases="A.hrms_aoB.checktype"--no_x0002_timestamp/data/backup/backup_tables使用PerconaXtraBackup工具快速备份备份操作示例(8)备份一个数据库下的表。例如,备份A数据库下以h开头的表,使用--include参数,该参数使用正则表达式匹配表的名字,命令如下。shell>innobackupex--defaults-file=/usr/local/mysql/f--user=root--password=xxx--socket=/var/lib/mysql/mysql.sock--include="A.h"--no-timestamp/data/backup/backup_tables(9)增量备份。使用--incremental-basedir和--incremental参数来进行增量备份,命令如下。shell>innobackupex--defaults-file=/usr/local/mysql/f--user=root--password=xxx--socket=/var/lib/mysql/mysql.sock--no-timestamp--incremental-basedir=/data/backup/backup_dir--incremental/data/backup/increment_data/上述代码中,--incremental-basedir表示完全备份目录;--incremental表示增量备份目录。数据恢复一、使用mysql命令恢复在MySQL中,可以使用mysql命令来恢复备份的数据。mysql命令可以执行备份文件中的CREATE语句和INSERT语句,也就是说,mysql命令可以通过CREATE语句来创建数据库和表,通过INSERT语句来插入备份的数据。mysql命令语法格式如下。mysql-uusername-P[dbname]<filename.sql上述语法格式中的参数说明如下。username表示账户名称。dbname表示数据库名称,该参数是可选参数。如果filename.sql文件为执行mysqldump命令创建的包含创建数据库语句的文件,则执行mysql命令时不需要指定数据库名称。如果指定的数据库名称不存在则将会报错。filename.sql表示备份文件的名称。下面介绍mysql命令的使用方法。数据恢复1.恢复所有数据库例如,恢复all.sql文件中的所有数据库,命令如下。mysql-uroot-p<C:\all.sql2.恢复到指定数据库例如,将node.sql文件导入ss数据库,账户名为root,密码为root,命令如下。mysql-uroot-prootss<node.sql3.通过source导入数据库首先通过mysql命令登录数据库,在mysql命令提示符下执行source命令。source命令语法格式是:source路径/文件名.sql。例如,将node.sql文件导入ss数据库,账户名为root,密码为root,命令如下。shell>mysql-uroot–prootmysql>usessmysql>sourcenode.sql数据恢复二、直接复制到数据库目录采用直接复制数据的方式可以将数据文件直接复制到MySQL的数据库目录下。通过这种方式恢复数据时,必须保证两个MySQL的主版本号是相同的,因为只有两个MySQL的主版本号相同时,才能保证这两个MySQL数据库的文件类型是相同的,而且,这种方式对复制使用MyISAM存储引擎的表比较有效。在Linux系统下数据库目录通常在/var/lib/mysql、/user/local/mysql/data或/user/local/mysql/var这3个目录下。上述位置只是数据库目录常用的位置,具体位置要根据MySQL安装时设置的位置确定。三、XtraBackup快速恢复1.恢复完全备份需要说明的是,进行数据恢复时,需要关闭MySQL服务器,而且数据目录必须是空的,因为执行innobackupex--copy-back命令不会覆盖已存在的文件。数据恢复(1)准备完全备份命令示例:shell>innobackupex--apply-log/data/backup/2021-11-08_09-41-06(2)恢复命令示例:shell>innobackupex--defaults-file=/usr/local/mysql/f--copy-back/data/backup/2021-11-08_09-41-06/注意:恢复到指定目录,需要在f文件中进行配置,例如datadir=/data/mysql这个配置项就指明了MySQL的数据目录是/data/mysql目录。总结恢复完全备份的两个要点。(1)数据目录必须为空。除非指定innobackupex--force-non-empty-directorires参数,否则--copy-backup参数不会覆盖已存在的文件。(2)在恢复之前,必须关闭MySQL实例,不能将一个运行中的MySQL实例还原到数据目录中。数据恢复2.恢复增量备份准备增量备份与准备完全备份有一些不同,具体如下。(1)需要在每个备份(包括完全备份和各个增量备份)上,将已经提交的事务进行重放。重放之后,所有的备份数据将合并到完全备份数据上。(2)基于所有的备份将未提交的事务进行回滚。第一步:通过--apply-log参数进行完全备份,命令如下。shell>innobackupex--apply-log--redo-only/data/backup/backup_dir第二步:把增量备份数据合并到完全备份数据上,命令如下。shell>innobackupex--apply-log--redo-only/data/backup/backup_dir--incremental_x0002_dir=/data/backup/increment_data待增量备份数据合并到完全备份数据上,再查看xtrabackup_checkpoints文件,代码如下。数据恢复[root@report-serverbackup_dir]#morextrabackup_checkpointsbackup_type=log-appliedfrom_lsn=0to_lsn=48526869189

#与增量备份上的LSN一致last_lsn=48526869189compact=0recover_binlog_info=0backup_type=incrementalfrom_lsn=48526868973#上次完全备份上的LSNto_lsn=48526869189#增量备份的截止LSNlast_lsn=48526869189compact=0recover_binlog_info=0查看增量备份上的xtrabackup_checkpoints文件,内容如下数据恢复第三步:回滚完全备份,命令如下。shell>innobackupex--apply-log/data/backup/backup_dir第四步:恢复命令如下。shell>innobackupex--defaults-file=/usr/local/mysql/f--copy-back/data/backup/backup_dir进入数据目录,修改权限,命令如下。shell>chown-Rmysql:mysql*启动MySQL服务,检查数据是否恢复成功。数据库迁移一、相同版本MySQL之间的数据库迁移这类的数据库迁移较简单。其迁移过程就是普通的数据备份与数据恢复操作。安全、常用的方法是使用mysqldump命令导出数据,然后在目标数据库服务器使用mysql命令导入数据,最终完成整个数据库迁移过程。例:要将主机上的MySQL数据库全部迁移到主机上,只需在主机上执行如下命令。shell>mysqldump-h-uroot-ppassworddbname|mysql-h-uroot-ppassword上述的命令中,导出的数据直接通过管道“|”导入目标数据库系统;dbname为要迁移的数据库名称,如果需要迁移所有数据库,可使用--all-databases参数(即将dbname改为--all-databases)。数据库迁移二、不同版本MySQL之间的数据库迁移不同版本的MySQL之间的数据库迁移主要有以下两种情况。低版本数据库向高版本数据库迁移(升级)。高版本数据库向低版本数据库迁移(降级)。表的导出和导入一、使用SELECT…INTOOUTFILE语句导出文本文件在MySQL中,可以使用SELECT...INTOOUTFILE语句将表的内容导出为一个文本文件。其基本的语法格式如下。SELECT[列名]FROMtable[WHERE语句]

INTOOUTFILE'目标文件'[OPTION];该语句分为两个部分。前半部分是一个普通的SELECT语句,通过这个SELECT语句来查询所需要的数据;后半部分则用来导出数据。其中,“目标文件”参数表示将查询的记录导出到目标文件中;“OPTION”参数为可选参数表的导出和导入二、使用mysqldump命令导出文本文件mysqldump命令的语法格式如下。mysqldump-uroot-pPassword-T目标目录dbnametable[OPTION]上述语法格式中的参数说明如下。Password:root账户的密码。dbname:数据库的名称。table:表的名称。OPTION可以取以下值。--fields-terminated-by=字符串:设置字段的分隔符,默认值是“\t”。--fields-enclosed-by=字符:设置字符来标注字段。--fields-optionally-enclosed-by=字符:设置字符来标注CHAR、VARCHAR和TEXT等字符型字段。--fields-escaped-by=字符:设置转义字符。--fields-terminated-by=字符串:设置每行的结束符。表的导出和导入例1:用mysqldump命令来导出test数据库下order表的记录,各字段用“、”隔开,字符型数据用双引号标注,命令如下。mysqldump-uroot-p-TD:\testorder--fields-terminated-by="\r\n"--fields-terminated-by="、"--fields-optionally-enclosed-by='"'表的导出和导入

使用mysqldump命令还可以导出XML格式的文件。其语法格式如下。mysqldump-uroot-pPassword--xml|-Xdbnametable>目标文件名;上述语法格式中的参数说明如下。Password:root账户的密码。--xml|-X:导出XML格式的文件。dbname:数据库的名称。table:表的名称。目标文件名:导出的XML文件的路径。例:将数据表student中的内容导出到XML文件中,命令如下。shell>mysqldump-uroot-p--xmlteststudent>D:/student.xml表的导出和导入三、使用mysql命令导出文本文件在MySQL管理过程中,有时候需要把数据库中的数据导出到外部存储文件中,MySQL中的数据可以导出到TXT、XML、HTML等格式的文件中,同样这些导出文件也可以再次导入MySQL中。使用mysql命令导出文本文件的语法格式如下。mysql-u账户名-p--execute="SELECT语句"数据库名>导出文件存放路径表的导出和导入四、使用LOADDATAINFILE语句导入文本文件

MySQL中提供了LOADDATAINFILE语句用于导入文本文件。该语句的完整语法格式如右图所示。表的导出和导入例:从当前目录中读取文件dump.txt,将该文件中的数据插入当前数据库的mytbl表中,命令如下。mysql>LOADDATALOCALINFILE'dump.txt'INTOTABLEmytbl;可以在LOADDATA语句中指定列的分隔符(默认为“\t”)和每行的结束符(默认为“\n”),命令如下。mysql>LOADDATALOCALINFILE'dump.txt'INTOTABLEmytbl->FIELDSTERMINATEDBY':'->LINESTERMINATEDBY'\r\n';LOADDATA语句默认情况下是按照数据文件中列的顺序插入数据的,如果数据文件中列的顺序与插入表中列的顺序不一致,则需要指定列的顺序。例如,数据文件中列的顺序是a,b,c,但插入表中列的顺序为b,c,a,则数据导入命令如下。mysql>LOADDATALOCALINFILE'dump.txt'INTOTABLEmytbl->INTOTABLEmytbl(b,c,a);表的导出和导入五、使用mysqlimport命令导入文本文件在MySQL中,可以使用mysqlimport命令将文本文件导入MySQL中。基本语法格式如下。mysqlimport-uroot-pPassword[--local]dbnamefilename.txt[OPTION]上述语法格式中“Password”参数是root账户的密码,必须与“-p”参数紧挨着;“--local”参数是在本地计算机中查找文本文件时使用的;“dbname”参数是数据库的名称;“filename.txt”参数指定了文本文件的路径和名称;“OPTION”为可选参数,其说明如表5-1所示。表的导出和导入Linuxcrontab一、crontab介绍Linuxcrontab是用来定期执行程序的命令。当操作系统安装完成之后,默认便会执行此任务调度命令。crontab命令会定期检查是否有要执行的工作,如果有要执行的工作便会自动执行该工作。crontab是crontable的简写,它是cron的配置文件,也可以称为作业列表,可以在以下目录下找到相关配置文件。/var/spool/cron/目录下存放的是每个用户的crontab任务,每个任务以创建者的名字命名。/etc/crontab文件负责调度各种管理和维护任务。/etc/cron.d/目录用来存放任何要执行的crontab文件或脚本。当然,还可以把脚本放在/etc/cron.hourly、/etc/cron.daily、/etc/cron.weekly、/etc/cron.monthly目录中,让它每小时/天/星期/月执行一次。Linuxcrontab二、crontab命令的使用方法crontab命令的语法格式如下。crontab[-uuser]{-e|-r|-1}上述语法格式中的参数说明如下。-uuser:设定指定user的时程表。如果不使用-uuser,就表示设定自己的时程表。-e:运行文本编辑器来设定时程表,内置的文本编辑器是Vi。-r:删除目前的时程表。-l:列出目前的时程表。使用crontab-e进入当前用户的工作表编辑界面,该界面是常见的Vim界面。每行是一条命令,命令由“时间+动作”构成,格式如下。f1f2f3f4f5program上述格式中,f1~f5表示时间,分别表示分、时、日、月、周;program表示动作。Linuxcrontab时间中的通配符说明如下。(1)*:取值范围内的所有数字。(2)/:每过多少个数字。(3)-:从起始时间到终止时间。(4),:散列数字。

下面通过几个例子说明时间中的通配符的使用方法。例1:每分钟执行一次myCommand。*****myCommand例2:每小时的第3分钟和第15分钟执行myCommand。3,15****myCommandLinuxcrontab例3:在8点到11点的第3分钟和第15分钟执行myCommand。3,158-11***myCommand例4:每隔两天的8点到11点的第3分钟和第15分钟执行myCommand。3,158-11*/2**myCommand例5:每周一8点到11点的第3分钟和第15分钟执行myCommand。3,158-11**1myCommand例6:每天21:30重启smb。3021***/etc/init.d/smbrestart例7:每小时重启smb。0*/1***/etc/init.d/smbrestart项目任务分解任务5-1使用mysqldump命令备份和恢复数据任务说明

MySQL自带了一款功能强大的逻辑备份工具,即mysqldump命令,其不仅常常被用于执行数据备份任务,而且可用于数据迁移。使用mysqldump命令可以把数据从MySQL数据库中以SQL语句的形式直接输出或生成备份的文件。尽管mysqldump命令只是一个命令,但是其功能已经相当完善。本任务要求使用mysqldump命令进行数据的备份与恢复。项目任务分解任务实施过程步骤1:备份数据在MySQL中,经常使用mysqldump命令备份整个数据库,使用mysqldump命令时,需要指明备份数据库的账户和密码,并设置备份文件的路径和文件名,命令如下。shell>mysqldump-uroot-p--all-databases>full.sql如何判断备份是否成功呢?当查看备份文件时,能在文件最后一行找到如下内容,则表示备份成功。shell>tail-10full.sql--Dumpcompletedon2020-10-1913:54:51项目任务分解任务实施过程备份时,可通过设置参数来改变要备份的数据,例如备份指定数据库test就可用如下命令。shell>mysqldump-uroot-p--single-transaction-E-R--databasestest>test.sql上述命令中,--single-transaction使得在备份过程中,数据库锁定但是可以进行读取操作,无法进行DDL操作,这样可以保证InnoDB引擎表的一致性;-E和-R分别表示导出事件和存储过程。步骤2:恢复数据在逻辑备份中,相对于备份数据,恢复数据显得很简单,只需要将备份文件导入数据库即可,命令如下。shell>mysql-uroot-p<full.sql项目任务分解任务5-2使用PerconaXtraBackup备份和恢复数据任务说明

PerconaXtraBackup是一个基于MySQL的服务器的开源热备份实用程序,它不会在备份期间锁定数据库。无论是24小时×7天高负载服务器还是低事务量环境,PerconaXtraBackup都可以使备份成为一个无缝过程,且不会破坏生产环境中服务器的性能。Percona推荐从存储库安装PerconaXtraBackup。在本任务中,需要完成在Linux系统下部署PerconaXtraBackup,并实现MySQL数据库的热备份。项目任务分解任务实施过程步骤1:安装依赖包在安装PerconaXtraBackup之前,请确保已安装相关依赖软件包,命令如下。shell>yum–yinstalllibevshell>yum-yinstallperlshell>yum-yinstallrsyncperllperl-Digest-MD5步骤2:安装PerconaXtraBackup官方推荐从Percona存储库安装PerconaXtraBackup,首先安装Percona存储库,命令如下。shell>sudoyuminstall-y/yum/percona-release-latest.noarch.rpm项目任务分解任务实施过程步骤3:启用PerconaXtraBackup存储库命令及执行结果如下。shell>percona-releaseenable-onlytoolsrelease*DisablingallPerconaRepositories*EnablingthePerconaToolsrepository<*>Alldone!步骤4:安装PerconaXtraBackupPerconaXtraBackup8.0只支持MySQL8.0,如果是其他版本MySQL,需安装PerconaXtraBackup2.4。安装PerconaXtraBackup8.0的命令如下。shell>yuminstall-ypercona-xtrabackup-80项目任务分解任务实施过程步骤5:赋予账户备份权限备份前,账户需要获得BACKUP_ADMIN权限才能使用xtrabackup命令进行热备份,获得权限的命令如下。mysql>grantBACKUP_ADMINon*.*to'root'@'%';mysql>flushprivileges;步骤6:备份数据安装完成后,首先尝试在MySQL数据库中备份全库,使用xtrabackup命令时,需要指明备份数据库的配置文件和账号密码,并设置备份文件的路径和文件名,命令如下。shell>xtrabackup--defaults-file=/etc/f-uroot-p--backup--target-dir=/XtraBackup/backup项目任务分解任务实施过程执行上述命令后,PerconaXtraBackup则开始备份,并在控制台输出备份的过程,最后,如果输出“completedOK!”,则说明本次物理备份成功,如图5-1所示。项目任务分解任务实施过程步骤7:恢复数据在PerconaXtraBackup中,使用--backup参数进行备份后,需要准备数据文件才能恢复数据。数据文件在准备好之前时间点不一致,因为它们是在程序运行的不同时间复制的,而准备步骤可使文件在同一时刻完全一致。命令如下。shell>xtrabackup--defaults-file=/etc/f-uroot-p--prepare--target-dir=/XtraBackup/backup最后,如果输出“completedOK!”,则说明本次准备成功,如图5-3所示。项目任务分解任务实施过程准备完成后,就可以开始恢复数据,需要注意的是,进行恢复时,首先要保证数据库的数据目录为空,否则恢复时将报错。恢复命令如下。shell>xtrabackup--defaults-file=/etc/f-uroot-p--copy-back--target-dir=/XtraBackup/backup输入上述命令并按“Enter”键后,PerconaXtraBackup会开始恢复,并在控制台输出恢复的过程,最后,如果输出“completedOK!”,则说明本次恢复成功,如图5-5所示。项目任务分解任务5-3使用mysqldump+crontab自动备份数据库任务说明

项目场景中需要完成对MySQL数据库的自动备份,以便在服务器崩溃时能恢复数据库。在Windows系统下,可以通过“任务计划程序”来实现定时任务。在Linux系统下,可以执行crontab命令实现定时任务。本任务要求在Linux系统下通过crontab命令实现对数据库的自动备份操作。任务实施项目任务分解步骤1:编写备份脚本文件在Linux系统下,使用Vi或者Vim编写脚本文件并将脚本文件命名为mysql_dump_script.sh。脚本文件内容如下。#!/bin/bash#保存备份天数,备份31天数据number=31#备份保存路径backup_dir=/root/mysqlbackup#日期dd=$(date+%Y-%m-%d-%H-%M-%S)项目任务分解#备份工具tool=mysqldump#用户名username=root#密码password=Hello123.#将要备份的数据库database_name=mydbmkdir-p$backup_dir;fi#简单写法mysqldump-uroot-p123456users>/root/mysqlbackup/users-$filename.sql$tool-u$username-p$password$database_name>$backup_dir/$database_name-$dd.sql#写创建备份日志echo"create$backup_dir/$database_name-$dd.dupm">>$backup_dir/log.txt#找出需要删除的备份delfile=$(ls-l-crt$backup_dir/*.sql|awk'{print$9}'|head-1)#判断现在的备份数量是否大于$numbercount=$(ls-l-crt$backup_dir/*.sql|awk'{print$9}'|wc-l)if[$count-gt$number]then#删除最早生成的备份,只保留number数量的备份rm$delfile#写删除文件日志echo"delete$delfile">>$backup_dir/log.txtfi项目任务分解任务实施过程步骤2:给脚本文件增加可执行权限编辑好脚本文件以后,还需要给它加上可执行权限,命令如下。shell>chmod+xmysql_dump_script.sh步骤3:编辑crontab定时任务使用crontab–e命令创建定时任务,命令如下。shell>crontab–e在定时任务中输入如下内容,设置在每天1点执行备份脚本文件。01***/root/mysql_dump_script.sh步骤4:启动crontab定时任务命令如下。systemctlstartcrond在任务启动后,服务器就会按照指定的每天1点执行备份脚本文件实现数据库的备份。项目任务分解任务5-4迁移MySQL数据库任务说明

在项目场景中需要完成MySQL数据库的迁移工作,本任务要求将Linux系统中的MySQL数据库迁移到Windows系统的MySQL数据库中,实现不同系统下的相同数据库产品间的数据库迁移工作。项目任务分解任务实施过程步骤1:允许远程访问首先将Linux系统下MySQL数据库的root账户设置为允许远程主机访问,命令语句如下。mysql>updatemysql.usersethost='%'whereuser='root';mysql>flushprivileges;步骤2:在Windows系统的MySQL中建立目标数据库使用mysqldump命令导入数据库时,要求目标数据库必须先存在,所以在导入的目标主机上先创建好目标数据库,这里的目标主机使用的是Windows系统,所以在目标主机中先打开命令提示符,在命令提示符下输入如下命令。d: #转换盘符,本任务的数据库安装在D盘cdmysql-8.0.27-winx64\bin #Windows系统中MySQL的安装目录mysql–uroot-pmysql>createdatabasesakila;项目任务分解任务实施过程步骤3:迁移数据库在导入的目标主机上先打开命令提示符,在命令提示符下输入如下命令进行sakila数据库的迁移。D:\mysql-8.0.27-winx64\bin>mysqldump-h00-uroot-pHello123.sakila|mysql-uroot-p123456sakila步骤4:检查迁移结果最后,检查一下迁移的结果。在目标主机的命令提示符下登录本地数据库并查看,命令如下。mysql–uroot-pmysql>usesakila;mysql>showtables;如果能显示出sakila数据库中的所有表,证明数据库迁移成功。项目任务分解任务5-5迁移MySQL表数据任务说明

在项目场景中,有时还需要在不同数据库之间完成数据迁移的工作,本任务就是要求将MySQL中数据表的数据迁移至SQLServer中。完成不同数据库之间的数据迁移有很多方法既可以借助于第三方的数据抽取工具(如Kettle),也可以将数据先导出成一种中间格式,再将中间格式的数据导入至数据库中,本任务的实施采用后一种方式。项

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论