MySQL数据库运维技术详解_第1页
MySQL数据库运维技术详解_第2页
MySQL数据库运维技术详解_第3页
MySQL数据库运维技术详解_第4页
MySQL数据库运维技术详解_第5页
已阅读5页,还剩92页未读 继续免费阅读

下载本文档

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

文档简介

1、MySQL数据库运维技术详解技术创新,变革未来智慧IT01020304目 录Contents05MySQL用户管理MySQL文件结构MySQL导入导出MySQL备份恢复MySQL背景概述01 MySQL简介与主流分支版本01MySQL 之父Michael “Monty” Widenius1、开源MySQL数据库的创始成员2、MySQL AB公司的首席技术官3、MySQL数据库第一行代码的作者4、MySQL数据库命名人5、MariaDB创始人兼首席技术官;6、独自完成撰写MySQL数据库服务器端95%的代码。MySQLMaxDBMariaDB01MySQL 介绍1999成立MySQL AB公司2

2、000公布源码,采 用GPL协议, 正式进入开源 世界2008.1.16Sun收购 MySQL2019MySQL5.6 MySQL5.7 MySQL8.0(2016.8.25DMR、2018.4.8 GA)2005.10里程碑,发布 MySQL5.0,奠 定了迈向高性 能数据库基础2009.4.20Oracle收购Sun(MySQL5.5)1979 TcX UNIREG1995 Sun Solaris01MySQL 主流分支MySQLEnterprisePercona ServerMariaDBDrizzleMySQL官方MySQL号称最接近MySQL Enterprise发行版的 产品Xtr

3、aDBMonty团队迭代更干净、快速的MySQL不兼容MySQL01MySQL 行业前景01全球最大网站Top2001国内MySQL行业应用 互联网行业数据库MySQL市场第一 甲骨文公司的两款数据库(Oracle+MySQL)共占据着全世界的数据库市场份额的60%以 上,在中国(Oracle+MySQL)的使用更占到80%左右 中国前100个大企业/国有企业有99个以上使用Oracle为主MySQL为辅,中国前100个互 联网行业公司有95%以上使用MySQL为主Oracle/NoSQL为辅 MySQL数据库在互联网行业90%以上的使用比例,最典型的就是BAT了,近2年开始MySQL扩展到金

4、融、通信、生产制造、快速消费品零售、物流运输、医疗、政府等行业01MySQL 介绍Oracle VS MySQL : 企业服务软件的开源与闭源之争01MySQL 介绍Oracle VS MySQL : 企业服务软件的开源与闭源之争Oracle: 功能强大保障体系充分,MOS成熟度高BUG更新较快并发机制粒度细,并发高软件成本高运维成本依赖数据规模,小规模数据库 运维成本远高于MySQL,大规模数据库 运维成高低于MySQL。传统行业的霸主技术掌控度低MySQL:功能略有不足保障体系成熟度不如Oracle BUG更新不如Oracle并发机制较粗,比Mongo类NoSQL要强, 并发性总体不如Or

5、acle软件成本低运维成本依赖数据规模,小规模数据库 运维成本低于Oracle,大规模数据库运维 成高低于Oracle。互联网行业技术掌控度高2. MySQL用户管理01MySQL用户管理用户管理的重要性在 MySQL 中管理用户时,可以控制允许或不允许用户 执行的操作。根据用户的职能创建不同权限的帐户。避免使用 root 帐户。通过恰当调整单个用户权限确保数据完整性。允许授权用户完成其工作。阻止未经授权用户访问超出其权限的数据。02MySQL用户管理用户账户验证是否是否03MySQL用户管理查看用户账户设置查询 mysql 数据库以查看 user 标识信息包括权限在内的所有信息mysql S

6、ELECT user, host, password FROM mysql.user WHERE user=root;+| user | host+| root | localhost+| password|+| *A07651E7A7AA2B2805402F9D66691E53275FA7C1 | root | localhost.localdomain | *A07651E7A7AA2B2805402F9D66691E53275FA7C1 | root | | *A07651E7A7AA2B2805402F9D66691E53275FA7C1 |+mysql SELECT * FROM m

7、ysql.userG* 1. row * Host: localhostUser: rootPassword: *A07651E7A7AA2B2805402F9D66691E53275FA7C1Select_priv: Y Insert_priv: Y Update_priv: Y Delete_priv: Y04MySQL用户管理连接验证MySQL 将使用以下各项验证帐户:用户名口令客户端主机(Oracle不存在此步)在指定主机名时,要注意:在使用客户机连接时指定服务器的主机名。在向服务器添加用户时指定客户机的主机名。05MySQL用户管理创建用户提供每个用户帐户的用户和主机。例如,使用 C

8、REATE USER.IDENTIFIED BY 语句可以:为用户 jason建立一个帐户- 该帐户从 7 发出连接该帐户使用口令 hzmcCREATE USER jason7 IDENTIFIED BY hzmc;在创建帐户时避免可能的安全风险:不创建没有口令的帐户。在可能的情况下,避免在指定帐户主机名时使用通配符。06MySQL用户管理主机名模式允许的主机名格式示例:主机名:localhost合格的主机名:IP 地址:8模式或通配符:% 或 _07MySQL用户管理用户名和主机组合示例user列host列对应连接情况jason7使用jason用户登入,只有从7 主机 发出登入请求才能成功创

9、建连接jasonwww.test.%使用jason用户登入,可以从 主机名为www.test.(com/cn/)任意主机创建连接jason使用jason用户登入,只能从主机名为 主机发出请求才能成功创建连接jason%可以从任意主机使用jason用户连接192.168.200.%可以从192.168.200.%网段的任意主机创建连接, 并且无需输入任何用户信息%任意主机均可以创建连接,并且连接过程中无 需用户信息08MySQL用户管理设置账户口令设置 MySQL 用户口令的方法有多种:CREATE USER.IDENTIFIED BYGRANT.IDENTIFIED BYSET PASSWOR

10、DUPDATE mysql.userSET PASSWORD 语句是设置或更改帐户口令的最常用方法, 如下例中所示:SET PASSWORD FOR jason8= PASSWORD(NewPass);09MySQL用户管理确认口令为所有用户帐户分配唯一的强口令。避免可以轻易猜测到的口令。使用以下 SELECT 语句可列出没有口令的所有帐户SELECT Host, User FROM mysql.user WHERE Password = ;确定重复口令:如下例中所示:SELECT User FROM mysql.user GROUP BY password HAVING count(user

11、)1;让口令失效:ALTER USER jason8 PASSWORD EXPIRE;10MySQL用户管理处理用户账户使用 RENAME USER 语句可重命名用户帐户:RENAME USER jason7 TO hzmc7;更改现有帐户的帐户名称更改帐户名称的用户名或主机名部分,或同时更改两者使用 DROP USER 语句可删除用户帐户:DROP USER jason7;撤消现有帐户的所有权限,然后删除该帐户从存在帐户的任何授权表中删除帐户的所有记录11MySQL用户管理授权在用户登入验证之后,MySQL 将提出以下问题以验证帐户权 限:用户是谁?用户拥有哪些权限?这些权限适用于哪些方面?

12、必须设置恰当的帐户和权限才能让授权生效。12MySQL用户管理确定相应的用户权限在正确的访问级别授予权限:列存储过程全局数据库表根据用户的访问要求授予用户权限:只读全局、数据库或表级别权限,例如 SELECT修改数据库全局、数据库或表级别权限,例如 INSERT、 UPDATE、DELETE、CREATE、ALTER 和 DROP管理全局级别权限,例如 FILE、PROCESS、 SHUTDOWN 和 SUPER13MySQL用户管理授予管理特权以下全局特权适用于管理用户:FILE:允许用户指示 MySQL 服务器在服务器主机文件系 统中读取和写入文件PROCESS:允许用户使用 SHOW P

13、ROCESSLIST 语句查看客户机正在执行的所有语句SUPER:允许用户中止其他客户机连接,或者更改服务器的运行时配置killALL:授予所有特权(但不能向其他用户授予特权)要尽可能少地授予管理特权,因为管理特权可能会被恶意用户或 粗心用户滥用。14MySQL用户管理授予管理权限GRANT 语句GRANT 语句可创建新帐户或者修改现有帐户。GRANT 语法:GRANT SELECT ON twindata.* TO jason7 IDENTIFIED BY hzmc;该语句的语法要授予的权限权限级别:全局:*.*数据库:.*表:.存储例程:.要授予其权限的帐户可选口令15MySQL用户管理显

14、示 GRANT 权限使用 SHOW GRANTS 语句显示常规帐户特权:SHOW GRANTS;SHOW GRANTS FOR CURRENT_USER();指定帐户名称:mysql SHOW GRANTS FORtwindata%;+| Grants for twindata%+|+| GRANT ALL PRIVILEGES ON *.* TO twindata% IDENTIFIED BY PASSWORD *A07651E7A7AA2B2805402F9D66691E53275FA7C1 WITH GRANT OPTION+16MySQL用户管理授权表MySQL 服务器在启动时将授权表

15、从 mysql 数据库读取到内存 中,并使所有访问控制决策都以这些表为依据。表与权限级别对应:这些表指示了每个帐户的有效性和权限,并且每个级别的安 全程度是递进的。权限级别/表内容和权限user针对服务器已知的每个帐户包含一个记录db特定于数据库的权限tables_priv特定于表的权限columns_priv特定于列的权限procs_priv存储过程和函数权限17MySQL用户管理使用授权表每个授权表有 host 列和 user 列,用于标识其记录 适用的帐户。在连接尝试过程中,服务器会确定客户机是否能连接。在连接后,服务器会确定每条语句的访问特权MySQL 安装过程会创建授权表。授权表使用

16、 MyISAM 存储引擎。MyISAM 保证可用。18MySQL用户管理影响权限更改MySQL 会维护授权表的内存中副本以避免访问磁盘上表的开销。应避免直接在授权表中修改用户帐户。如果直接修改授权表,应通过发出帐户修改语句(如 GRANT、REVOKE、SET PASSWORD 和RENAME USER)会将更改同时应用于授权表及其内存中表副本。对全局特权和口令的更改仅应用于该帐户的后续连接。对数据库级别特权的更改在客户机的下一条 USE db_name 语句 后应用。对表和例程特权的更改会立即应用。19MySQL用户管理撤消帐户权限使用 REVOKE 语句可以撤消特定的 SQL 语句特权:R

17、EVOKE DELETE, INSERT, UPDATE ON twindata.* FROM jason8;撤消特权以便将特权授予其他用户:REVOKE GRANT OPTION ON twindata.* FROM jason8;撤消所有权限(包括向他人授权):REVOKE ALL PRIVILEGES, GRANT OPTION FROM jason8;在发出 REVOKE 之前使用 SHOW GRANTS 语句确定要撤消的 特权,随后再次确认结果。20MySQL用户管理SHOW PROCESSLISTSHOW PROCESSLIST 显示了正在运行的进程线程。SHOW PROCESSL

18、IST 将生成以下列:Id:连接标识符User:发出语句的 MySQL 用户Host:发出语句的客户机的主机名db:选择默认数据库,否则为 NULLCommand:线程正在执行的命令类型Time:线程处于当前状态的时间(秒)State:指示线程正在执行的内容的操作、事件或状态Info:线程正在执行的语句;否则为 NULL21MySQL用户管理禁用客户机访问控制要指示服务器不读取授权表并禁用访问控制,可使用-skip-grant-tables 选项。每个连接都成功:可以提供任何用户名及任何口令,并且可以从任何主机 连接。该选项将禁用整个特权系统。连接的用户实际上拥有所有特权。阻止客户机连接:使用

19、 -skip-networking 选项可阻止网络访问,并且仅允 许在本地套接字、命名管道或共享内存上访问。使用 -socket 选项可在非标准套接字上启动服务器以防 止本地应用程序或用户随便访问。22MySQL用户管理设置帐户资源限制通过将全局变量 MAX_USER_CONNECTIONS 设置为非零值,限 制使用服务器资源。这将限制任何一个帐户的同时连接数量,但不会限制客户机在连 接后能执行的操作。限制单个帐户的以下服务器资源:MAX_QUERIES_PER_HOUR:一个帐户每小时可发出的查询数量MAX_UPDATES_PER_HOUR:一个帐户每小时可发出的更新数量MAX_CONNEC

20、TIONS_PER_HOUR:一个帐户每小时可连接到服务 器的次数MAX_USER_CONNECTIONS:允许的同时连接数量grant select on *.* to jason7 with max_updates_per_hour 5;23MySQL用户管理连接问题排查相同点对应的数据库服务器是否正常客户端与服务器网络是否正常对应的连接端口是否打开Oracle客户端TNSPING监听是否正常数据库实例是否注册成功MySQLmysqladmin -h 1 -ujason -p ping24MySQL用户管理Oracle验证方式:用户名和密码权限粒度:db、table、routine 授予最

21、高权限:grant dba to user;回收所有权限:revoke dba from user;alter user: 修改用户密码或默认配置rename user:非常规情况下无法修改用户名 grant:只授权无法创建用户drop user:cascade删除用户所有对象 禁止客户端访问:关闭监听设置账户资源限制:利用resource managerOracle VS MySQLMySQL验证方式:用户名、密码和主机权限粒度:user、db、table、column、routine授予最高权限:grant a l on *.* to userlocalhost; 回收所有权限:revok

22、e a l privileges,grant option from userlocalhost;alter user: 使用户密码失效rename user:修改用户名、主机 grant:如果用户不存在先创建后授权 drop user:只删除用户及相应的授权禁止客户端访问:设置 -skip-network参数设置账户资源限制:修改权限表中的资源相关参数25MySQL用户管理小结通过本节,应该学会如何:描述用户连接和查询流程列出用户验证要求创建、修改和删除用户帐户列出用户授权要求描述用户访问权限级别授予、撤消用户特权使用 SHOW PROCESSLIST 列出运行的线程禁用服务器客户机访问控制

23、设置帐户资源限制03MySQL文件结构01MySQL文件结构初始化参数文件启动时读取各种选项,控制命令行要执行的功能、内存占用、执 行方式等Windows平台:C:WINDOWSmy.ini系统盘的根目录保存的文件,即C:my.iniMySQL安装目录下,一般C:Program FilesMySQLMySQL5.6 Server 目 录。UNIX/Linux平台:/etc/f/etc/mysql/fSYSCONFDIR/f:通过CMake源码编译时SYSCONFDIR参数指定的路径$MYSQL_HOME/f:在MYSQL_HOME环境变量所在位置/f: 表示当前用户根目录下02MySQL文件结

24、构错误日志文件类似于Oracle中的alert警告日志,用于记录Note、Warning、Error信息错误日志文件在启动mysqld时,通过log-error选项指定路径及文 件名默认文件名为host_name.err,保存在mysql的%datadir%文件下03MySQL文件结构查询日志文件MySQL查询日志有两种:慢查日志(Slow Query Log)普通查询日志(General Query Log)MySQL的查询日志可以同时记录到文件和数据库的表对 象里04MySQL文件结构查询日志文件-慢查日志所有查询语句执行时间超过系统变量long_query_time(默认10秒)指 定的

25、参数值,并且访问的记录数超过系统变量min_examined_row_limit(默认0条)的数量语句启动和禁用慢查日志:show_query_logshow_query_log_file在MySQL服务运行期间实时修改SET GLOBAL show_query_log = OFF/ON;其他相关参数:log_slow_admin_statmentslog_queries_not_using_indexes05MySQL文件结构查询日志文件-普通查询日志普通查询日志记录内容包括:客户端发出的SQL语句数据库或对象的管理操作客户端连接断开信息启动或禁用普通日志general_loggeneral

26、_log_file在MySQL服务运行期间实时修改SET GLOBAL general_log = OFF/ON;06MySQL文件结构配置查询日志MySQL服务启动时配置,通过指定-log_output选项(TABLE,FILE,NONE)仅启动普通查询日志,并记录到日志文件和日志表-log-output=TABLE,FILE -general_log启动普通查询日志和慢查询日志,日志记录到数据库日志表-log-output=TABLE -general_log -slow_query_logMySQL服务运行中实时修改log_outputgeneral_log&slow_query_log

27、general_log_file&slow_query_log_file07MySQL文件结构二进制日志文件记录对数据发生或潜在发生更改的SQL语句,并以二进制的形式保存在磁盘 中二进制日志文件作用:用于复制用于恢复二进制日志索引文件为了能跟踪二进制日志文件的状态,MySQL服务会创建一个与二进制日志文 件同名(但扩展名为index)的二进制日志索引文件,包含所有可供使用的 二进制日志文件-log-bin-index=file_namemysqlbinlog用于查看二进制日志文件mysqlbinlog log_file | mysql -h server_name08MySQL文件结构表对象数

28、据文件数据文件的类型基于存储引擎 常见的数据文件类型如下:frm文件:表对象的结构定义文件ibd文件:InnoDB引擎专用的数据文件(含索引)MYD文件:MyISAM引擎专用的数据文件CSV文件:CSV引擎专用的数据文件ARZ文件:ARCHIVE引擎专用的数据文件08MySQL文件结构Oracle初始化参数文件:pfile、spfile 错误日志文件:log-error二进制日志文件:binlog 慢查日志:slow_query_log普通查询日志:general_log 表对象数据文件:dbfOracle VS MySQLMySQL初始化参数文件:f 错误日志文件:alert二进制日志文件:

29、慢查日志:v$session_longops普通查询日志:v$session、DBA_HIST_ACTIVE_SESS_HISTORY 表对象数据文件:frm、ibd、MYD、CSV、ARZ04数据导入导出01数据导入导出常用的方法导入利用CSV存储引擎加载数据利用mysqlimport工具导入数据导出SQL语句导出数据02数据导入导出利用CSV存储引擎加载数据CSV存储引擎基于CSV格式文件存储数据。CSV纯文本格式文件,以逗号 分隔取值。以逗号分隔取值,统一CSV格式文件 10,ACCOUNTING,NEW YORK 20,RESEARCH,DALLAS 30,SALES,CHICAGO

30、40,OPERATIONS,BOSTON创建CSV格式引擎表create table tb_csv1(id int not null default 0,username varchar(14) not null,city varchar(13) not null) engine=csv;定向输入到CSV表格对象的数据文件内more /tmp/tab.txt /var/lib/mysql/test/tb_csv1.CSV03数据导入导出利用mysqlimport工具导入数据创建表对象create table tb_cmd(id int(11) default 0,username varcha

31、r(14),city varchar(13) engine=innodb;创建临时文件cp /tmp/tab.txt /tmp/tb_cmd.txt导入数据mysqlimport -uroot -p -S /var/lib/mysql/mysql.sock test -default-character-set=utf8 -fields- terminated-by=, /var/lib/mysql-files/tb_cmd.txt04数据导入导出mysqlimport常用参数-d,-delete:导入前先删除对象中所有记录-f,-force:导入出错时,仍继续执行-i,ignore:导入的记

32、录中发现重复值,不处理该条记录-r,-replace:导入的记录中发现重复值,覆盖原记录-L,-local:从执行mysqlimport命令的客户端本地读取文件-l,-lock-tables:导入时先锁定表-s,-silent:以静默方式导入,不输出操作结果-ignore-lines=#:跳过文件中的前n行记录-fields-enclosed-by:包括住列值的符号-lines-terminated-by:文件中记录行的结束符05数据导入导出SQL语句导入导出将 SELECT 与 INTO OUTFILE 一起使用:将结果集直接写入文件除非另有说明,否则,假定文件路径位于数据库数据 目录下SE

33、LECT * INTO OUTFILE/tmp/jason.txt FROM tb_cmd;输出文件:写入服务器主机,而不是通过网络写入客户机使用文件系统访问权限进行创建针对语句所选的每一行,都包含对应的一行06数据导入导出使用数据文件格式说明符默认情况下,将 SELECT 和 INTO OUTFILE 一起使用将输出 TSV。“制表符分隔值”文件用制表符分隔列,用换行符分隔记录。您可以选择替代的分隔符:FIELDSTERMINATED BY string ENCLOSED BY char ESCAPED BY charLINES TERMINATED BY stringFIELDS 子句指定

34、列的特征。如果未为 TERMINATED BY、ENCLOSED BY 和 ESCAPED BY指定值,则这些选项将使用默认值。LINES TERMINATED BY 指定行分隔符。07数据导入导出使用数据文件格式说明符行终结符说明符:默认为换行符。示例: LINES TERMINATEDBYn LINES TERMINATEDBYr序列含义NNULL0NULL(零) 字节b退格n换行r回车s空格t制表符单引号双引号反斜杠08数据导入导出使用 LOAD DATA INFILE 导入数据LOAD DATA INFILE:将文件中的行值读入表是 SELECT.INTO OUTFILE 的逆向操作使

35、用相似的子句和格式说明符:示例:LOAD DATA INFILE /tmp/jason.txt INTO TABLE tb_cmdFIELDS TERMINATED BY ;假定文件位于服务器主机上的数据库数据目录中09数据导入导出跳过或变换输入数据要忽略数据文件中的行,请使用 IGNORE n LINES:mysql LOAD DATA INFILE /tmp/jason.txt- INTO TABLE test.tb_cmd FIELDS TERMINATED BY ; ENCLOSED BY - IGNORE 2 LINES;Query OK, 2 rows affected (0.03

36、 sec)文件中有 4 行,但仅装入 2行。要忽略或变换列值,请执行以下操作:(可选)通过使用 SET 子句变换列:LOAD DATA INFILE /tmp/tb_sql1.txt INTO TABLE test.tb_sql1FIELDS TERMINATED BY ; ENCLOSED BY (id,uname,age,email,tmp_sex,tmp_tel,status) SET sex=if (tmp_sex=f,0,1);该语句将忽略 SET 表达式中未使用的变量的值。10数据导入导出重复记录要控制 LOAD DATA INFILE 对包含重复的主键或唯一键的行的处 理方式,请

37、执行以下操作:使用 IGNORE 关键字放弃包含重复键的行。使用 REPLACE 关键字将这些行替换为文件中包含相同键的版 本。这与使用 INSERT 和 REPLACE 语句控制重复项的方法类似:IGNOREON DUPLICATE KEY UPDATE05MySQL备份恢复01MySQL备份恢复DBA五条守则备份重于一切三思而后行rm是危险的制定规范做任何重大操作的时候都要经过测试02MySQL备份恢复备份基础知识最重要的备份原因:完整系统恢复审计功能常见 DBA 任务备份类型:热备份冷备份温备份03MySQL备份恢复备份基础知识磁盘逻辑/文本备份二进制日志04MySQL备份恢复使用 My

38、SQL 进行备份逻辑备份(文本表示:SQL 语句)物理备份(数据文件的二进制副本)基于复制的备份增量备份(刷新二进制日志)05MySQL备份恢复测验哪种备份类型在读取或修改数据的过程中进行,很少中断 或者不中断传输或处理数据的功能?冷备份热备份温备份06MySQL备份恢复逻辑(文本)备份逻辑备份:将数据库和表转换为 SQL 语句可移植要求 MySQL 服务器在备份期间运行可以备份本地和远程 MySQL 服务器07MySQL备份恢复物理(原始或二进制)备份物理备份:生成数据库文件的完整副本 可以使用标准命令,如 tar、cp必须恢复到同一个数据库引擎比逻辑备份和恢复的速度快数据库文件在备份期间不

39、能有更改。实现这一点的方法取决于存储引擎对于 InnoDB:需要关闭 MySQL 服务器对于 MyISAM:锁定表以允许读取,但不允许更改可以使用快照、复制或专有方法8MySQL备份恢复基于复制的备份MySQL 复制可用于备份:主服务器用于生产应用程序。从属服务器用于备份目的。这样可避免影响生产应用程序。从属服务器的备份为逻辑备份或原始备份。较高的成本:必须有另一台服务器和存储设备用于存储 数据库的副本。基于异步复制:从属服务器相对于主服务器可能会有延迟。如果在从属服务器读取二进制日志之前未清除二进制日志,这 是可接受的。9MySQL备份恢复mysqlbackup工作原理mysqlbackup

40、对innodb的表空间进行物理复制,但是,它是记录LSN点 的,在备份过程中,新增加的输入直接写入备份文件的 ibbackup_logfile中.同时记录最后的LSN点mysqlbackup对 myisam进行的是锁表全备.就算是增量备份,它依然是 全备.还原的时候,检测对比ibbackup_logfile文件里面与表空间里面的差值, 使ibbackup_logfile里面的数据进入事务日志或表空间在备份文件中的meta/backup_variables.txt文件中记录了备份的一些 信息10MySQL备份恢复mysqlbackup安装rootmysqltest soft# rpm -ivh

41、meb-3.10.0-rhel5.x86_64.rpm Preparing. # 100%1:meb# 100%rootmysqltest soft# ln -s /opt/mysql/meb-3.10/bin/mysqlbackup/usr/bin/mysqlbackuprootmysqltest soft# su - mysql-bash-4.1$ which mysqlbackup11MySQL备份恢复mysqlbackupmysqlbackup 是一种易于使用的工具,适用于所有 备份和恢复操作。基本用法:mysqlbackup -u -p-backup_dir=backup-and-a

42、pply-logbackup:执行备份初始阶段backup-and-apply-log:这个参数,在备份的时候,就把事务 日志检测的功能就完成了,并把ibbackup_logfile与表空间差值的 LSN内容放入到了事务日志里面,所以在还原的时候,就只需要备 份物理文件就行12MySQL备份恢复mysqlbackup使用全库备份-bash-4.1$ mysqlbackup -user=root -password=jason - socket=/var/lib/mysql/mysql.sock -backup-dir=/tmp/mysql -with- timestamp backup-and

43、-apply-log13MySQL备份恢复mysqlbackup使用增量备份-bash-4.1$ mysqlbackup -user=root -password=jason - socket=/var/lib/mysql/mysql.sock -with-timestamp -incremental - incremental-backup-dir=/tmp/mysql/incr -incremental- base=dir:/tmp/mysql/2017-02-23_11-19-45 backupincremental:代表为增量备份incremental-backup-dir:增量备份存

44、放到哪个路径下incremental-base :增量备份的基础备份或增量备份的文件14MySQL备份恢复使用 mysqlbackup 恢复备份基本用法:mysqlbackup -backup-dir= copy-back:指定备份文件的存储位置copy-back-and-apply-log:指示 mysqlbackup 执行恢复操 作并应用操作日志15MySQL备份恢复使用 mysqlbackup 恢复全库恢复twindata-bash-4.1$ mysqlbackup -user=root -password=jason - socket=/var/lib/mysql/mysql.sock

45、 -databases=twindata - datadir=/var/lib/mysql -backup-dir=/tmp/mysql/2017-02-23_11-19-45 copy-back-and-apply-logapply-log:mysqlbackup会检测ibbackup_logfile和表空间的LSN点, 然后比较ibbackup_logfile文件表空间LSN的差值,把这个值放到事务日志 LOG里面.16MySQL备份恢复使用 mysqlbackup 恢复增量恢复检测匹配释放增量备份-bash-4.1$ mysqlbackup -user=root -password=ja

46、son - socket=/var/lib/mysql/mysql.sock -backup-dir=/tmp/mysql/2017-02-23_13-02-33 - incremental-backup-dir=/tmp/mysql/incr/2017-02-23_13-05-26 apply- incremental-backup进行物理文件复制-bash-4.1$ mysqlbackup -user=root -password=jason - socket=/var/lib/mysql/mysql.sock -datadir=/var/lib/mysql -backup- dir=/t

47、mp/mysql/2017-02-23_13-02-33 copy-back-and-apply-log17MySQL备份恢复增量还原原理首先检测匹配释放全备事务日志文件(当然如果备份中使用了 backup-and-apply-log,在备份的时候,已经检测匹配了,就不需要这一 步了)增量备份的文件释放到全备文件里面.(首先会进入事务日志,然后是 表空间),所以-backup-dir指向全备目录(基于LSN点向后增加)因为增量的页面,已经全部进入了事务日志或表空间,这个时候,就可 以直接备份物理文件了.18MySQL备份恢复mysqlhotcopyPerl 脚本:备份 MyISAM 和 ARC

48、HIVE 表使用 FLUSH TABLES、LOCK TABLES 以及 cp 或 scp可以进行数据库备份在数据库目录所在的同一台计算机上运行基本用法:mysqlhotcopy -u -p 选项:-flush-log19MySQL备份恢复原始 MyISAM 和 ARCHIVE 备份备份过程:在服务器运行期间,锁定要复制的表:mysql USE mysqlmysql FLUSH TABLES users WITH READ LOCK;执行文件系统复制。启动新的二进制日志文件:FLUSH LOGS;在文件系统复制后解除锁定:UNLOCK TABLES;20MySQL备份恢复mysqldump将表

49、内容转储到文件:所有数据库、特定数据库或特定表允许备份本地服务器或远程服务器与存储引擎无关以文本格式写入可移植卓越的复制/移动策略适用于小规模导出,但不适用于完整备份解决方案基本用法:mysqldump -user= -password=-opt db_name backup.file21MySQL备份恢复mysqldump调用方式mysqldump的调用方式:shell mysqldump options db_name tablesshell mysqldump options -database DB1 DB2 DB3.shell mysqldump options -all-datab

50、ase22MySQL备份恢复mysqldump重要参数Options(参数)说明-add-drop-database在每个CREATE DATABASE语句前添加DROPDATABASE语句-add-drop-tables在每个CREATE TABLE语句前添加DROP TABLE语句-all-database转储所有数据库中的所有表,与-database相同-default-character-set=charset使用charsetas默认字符集。-database,-B转储几个数据库23MySQL备份恢复mysqldump重要参数Options(参数)说明-add-locks在插入数据开

51、始的时候加上LOCK TABLES-R, -routines导出函数和存储过程-triggers导出触发器-n, -no-create-db不提供建库语句-t, -no-create-info不写重新创建每个转储表的CREATE TABLE语句-d, -no-data不提供导出数据库数据记录-tables用表格式显示输出24MySQL备份恢复mysqldump重要默认参数-Options(-选项)设置选项但无=时的默认值未设置选项时的默认值-add-drop-databaseFALSE不启用-add-drop-tablesTRUE启用-all-databaseFALSE-default-cha

52、racter-setutf8UTF-8-databaseFALSE不启用-add-locksTRUE启用25MySQL备份恢复mysqldump重要默认参数-Options(-选项)设置选项但无=时的默认值未设置选项时的默认值-routinesFALSE5.0不启用,5.1启用-triggersTRUE启用-no-create-dbFALSE启用-no-create-infoFALSE不启用-no-dataFALSE不启用-tab=nameNo default value不启用26MySQL备份恢复mysqldump确保一致性:仅限 -master-data 选项在备份过程中锁定表在备份文件中

53、记录 binlog 位置-master-data 和 -single-transaction 选项一起使用不锁定表;仅保证 InnoDB 表一致性。-lock-all-tables通过锁定表实现一致性-flush-logs启动新的二进制日志27MySQL备份恢复mysqldump常见操作导出全库(包括存储过程和触发器)mysqldump single-transaction-triggers R all.sql导出test库mysqldump single-transaction B twindata test.sql导出全库的表结构mysqldump single-transaction A

54、 -no-data all.sql导出所有的数据,不导出表结构mysqldump single-transaction A -no-create-info all.sql恢复全库mysql -uroot -p all.sql恢复单个库mysql -uroot -p twindata /tmp/mysql/twindata.sqlmore twindata.sql结果是怎么样的?29MySQL备份恢复mysqldump备份恢复测试单库备份mysqldump -user=root -password=jason -databases twindata /tmp/mysql/twindata.sql单库恢复mysql -uroot -p = 几 GB仅 MyISAMInnoDB 和/或MyISAM快照MySQLBackup31MyS

温馨提示

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

评论

0/150

提交评论