共计 4025 个字符,预计需要花费 11 分钟才能阅读完成。
如何进行 MySQL 管理基础中的维护、备份和恢复,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面丸趣 TV 小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
1. 日志记录
MySQL 的日志文件可用于分析性能和排查问题,保存在与数据文件相同的目录下。有以下几种不同类型日志文件:
日志文件类型 默认文件名 mysqld 选项 作用
错误日志 主机名 .err log-error 记录服务器上发生的每个错误。
一般查询日志 主机名 .log log 记录客户机发给服务器的每个查询的踪迹。
慢查询日志 主机名 -slow.log log-slow-queries 记录执行时间超过 long_query_time 值的所有查询。
二进制日志 主机名 -bin-###### log-bin 记录更新了或已经潜在更新了数据的所有语句。
注:log-bin 选项中的“######”是二进制日志文件的编号,每次生成新日志文件会自动增加。如果指定日志文件名,MySQL 会只取第一个“.”前面的部分,并自动添加 6 位数字编号,从 000001 开始。
可以使用 FLUSH LOGS 命令刷新日志,错误日志的内容写入相同路径下的 *.err-old 文件,然后 *.err 文件被清空;一般查询日志和慢查询日志中会生成一条包含 mysqld 信息和列标题的记录,将新旧记录分割开;当前的二进制日志会被关闭,使用新的顺序编号创建新日志。
[@more@]2. 检查和修理表
检查表可以使用 myisamchk 工具或 CHECK TABLE 命令,前者只能用于 MYISAM 表,后者适用于所有表。myisamchk 可以分别使用 -F、-m、-e、-C、- w 选项执行快速检查、中速检查、扩展检查(最慢)、变更检查、等待检查,CHECK TABLE 命令可以添加 FAST、MEDIUM、EXTENDED 等关键字来指定检查的种类。
检查表时如果发现错误,就应该对其进行修理。最好先复制存在问题的表,以便尝试不同的修理方法。myisamchk 工具使用 - r 选项,可以修理损坏的表,与检查表时相同,被修理的表不能被锁定。另外,还可以使用 -o、- q 选项执行不同类型的修理操作。还可以使用 REPAIR TABLE 命令对表进行修复,类似地,可以添加 QUICK 或 EXTENDED 关键字设置修理操作的类型。
myiasmchk 工具要求表不能被锁定,所以最好在服务器关闭的情况下使用,而 CHECK TABLE 和 REPAIR TABLE 命令则必须在服务器运行时使用。
此外,使用 OPTIMIZE TABLE 命令可以对表进行优化,整理数据文件碎片,对索引页进行排序,更新表的统计信息。需要注意的是,优化操作会锁定表,过程中客户机无法访问。
3. 备份和恢复
使用 mysqldump 工具可以对表或数据库进行备份。执行备份操作的用户应在进行转储的表或数据库上具有 select 和 lock tables 权限。
mysql show grants for ggyy@localhost;
+————————————————————————————————————-+
| Grants for ggyy@localhost |
+————————————————————————————————————-+
| GRANT USAGE ON *.* TO ggyy @ localhost IDENTIFIED BY PASSWORD *484FFAA42C12F40931C794D33A11B7F075B91467 |
| GRANT SELECT, LOCK TABLES ON `ggyy`.* TO ggyy @ localhost |
+————————————————————————————————————-+
2 rows in set (0.00 sec)
下面是一些转储表的例子:
1 转储 ggyy 数据库中的 blob_text_test 表,将结果重定向到一个指定的文件。
mysqldump ggyy blob_text_test -u ggyy -p E:ackupMySQLlob_text_test.sql
2 转储 ggyy 数据库中的 char_test 表,使结果直接输出到一个指定的文件。(-r 选项用于在 MSDOS 环境中使输出文件行尾只有换行符,而不是换行符 + 回车符。)
mysqldump ggyy char_test -u ggyy -p -r E:ackupMySQLchar_test.sql
3 转储 ggyy 数据库中的多个表,将结果重定向到一个指定的文件。
mysqldump ggyy date_time_test float_test int_test members members_temp test_crttb test_crttb2 test_crttb3 test_crttb4 test_crttb5 ts_dt_test -u ggyy -p E:ackupMySQLggyy-tables.sql
4 转储 test 数据库中的 namelist 和 oraleng 表,只产生少量的输出,将结果重定向到一个指定的文件。(–compact 选项使转储结果中不包含 DROP TABLE、ALTER TABLE … DISABLE KEYS、LOCK TABLES 等语句和“–”开头的注释。)
mysqldump test namelist oraleng –compact -u root -p E:ackupMySQL
amelist+oraleng.sql
5 只转储 test 数据库中 test 表的定义,将结果重定向到一个指定的文件。
mysqldump test test -d -u root -p E:ackupMySQL est_def.sql
6 只转储 test 数据库中 test 表的数据,将结果重定向到一个指定的文件。
mysqldump test test -t -u root -p E:ackupMySQL est_data.sql
当然还可以对整个数据库进行转储,语法是 mysqldump
。如果同时转储多个数据库可以使用 -B 选项,例如转储 ggyy 和 test 数据库:
mysqldump -B ggyy test -u root -p -r E:ackupMySQLmysqlback_20100319.sql
mysqldump 工具生成的包含 SQL 语句的文件,可以使用 mysql 命令行工具运行,从而达到恢复数据的目的。执行恢复操作的用户应该在进行导入的数据库上具有 drop、create、alter、insert 等权限。
mysql show grants for ggyy@localhost;
+————————————————————————————————————-+
| Grants for ggyy@localhost |
+————————————————————————————————————-+
| GRANT USAGE ON *.* TO ggyy @ localhost IDENTIFIED BY PASSWORD *484FFAA42C12F40931C794D33A11B7F075B91467 |
| GRANT SELECT, INSERT, CREATE, DROP, ALTER, LOCK TABLES ON `ggyy`.* TO ggyy @ localhost |
+————————————————————————————————————-+
2 rows in set (0.00 sec)
下面的命令可以将之前转储的 ggyy 数据库中的表导入到 ggyy 数据库中:
mysql ggyy -u ggyy -p E:ackupMySQLlob_text_test.sql
mysql ggyy -u ggyy -p E:ackupMySQLchar_test.sql
mysql ggyy -u ggyy -p E:ackupMySQLggyy-tables.sql
另外,在 mysql 提示符下使用 SOURCE 命令同样可以进行恢复。下面的语句可以将之前转储的 test 数据库中的表导入到 test 数据库中:
source E:ackupMySQL
amelist+oraleng.sql
source E:ackupMySQL est_def.sql
source E:ackupMySQL est_data.sql
undefinedundefinedundefinedundefinedundefinedundefined
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注丸趣 TV 行业资讯频道,感谢您对丸趣 TV 的支持。