MYSQL-------------MySQL 日志&& MySQL 备份与恢复

打印 上一主题 下一主题

主题 1829|帖子 1829|积分 5487

MySQL 日志

错误日志



  • 功能:记录 MySQL 服务器启动、运行和关闭过程中出现的错误信息,以及非常情况,是排查服务器问题的重要依据。
  • 日志的位置和格式

    • 位置通常由 log_error 参数指定,在 MySQL 设置文件 /etc/my.cnf 或 my.ini 中设置,例如:
    1. [mysqld]
    2. log_error = /var/log/mysql/error.log
    复制代码
      

    • 格式包含时间戳、错误级别、错误代码、错误信息等,示例如下:
    1. 2025-01-07T12:00:00.000000Z 2 [ERROR] [MY-012345] [Server] Some error message here
    复制代码

  • 日志的读取

    • 直接使用文本编辑器打开错误日志文件查看,例如:
    1. less /var/log/mysql/error.log
    复制代码
      

    • 也可以使用 tail 命令实时查看最新的错误信息:
    1. tail -f /var/log/mysql/error.log
    复制代码

二进制日志



  • 功能:记录对数据库的修改操纵,如插入、更新、删除等,用于数据复制、恢复和审计。
  • 日志的位置和格式

    • 位置由 log-bin 参数指定,例如:
    1. [mysqld]
    2. log-bin = /var/log/mysql/mysql-bin
    复制代码
      

    • 二进制日志包含一系列的变乱,以二进制格式存储,不能直接读取。

  • 日志的读取

    • 使用 mysqlbinlog 工具读取二进制日志:
    1. mysqlbinlog /var/log/mysql/mysql-bin.000001
    复制代码
      

    • 该工具可以将二进制日志转换为文本形式,方便查看。

  • 日志的删除

    • 主动删除:可通过 expire_logs_days 参数设置二进制日志的保留天数,超过该天数的日志会主动删除,例如:
    1. [mysqld]
    2. expire_logs_days = 7
    复制代码
      

    • 手动删除:使用 PURGE BINARY LOGS 语句删除指定日志文件或之前的日志,例如:
    1. PURGE BINARY LOGS TO'mysql-bin.000005';
    复制代码
      

    • 或根据时间删除:
    1. PURGE BINARY LOGS BEFORE '2025-01-07 12:00:00';
    复制代码

  • 其他选项

    • binlog_format 参数可以设置二进制日志的格式,有 STATEMENT、ROW 和 MIXED 三种。例如:
    1. [mysqld]
    2. binlog_format = ROW
    复制代码

查询日志



  • 功能:记录全部客户端的查询操纵,包括 SELECT、INSERT、UPDATE 等,有助于调试和性能分析。
  • 日志的位置和格式

    • 位置由 general_log 和 general_log_file 参数指定,例如:
    1. [mysqld]
    2. general_log = 1
    3. general_log_file = /var/log/mysql/query.log
    复制代码
      

    • 格式包含时间戳、用户、IP 地址、查询语句等,示例如下:
    1. 2025-01-07T12:00:00.000000Z        root[root] @ localhost [] Query    SELECT * FROM table_name
    复制代码

  • 日志的读取

    • 与错误日志类似,可使用文本编辑器或 tail 命令查看,例如:
    1. less /var/log/mysql/query.log
    复制代码
    1. tail -f /var/log/mysql/query.log
    复制代码

慢查询日志



  • 功能:记录实行时间超过 long_query_time 参数设定值的查询操纵,用于优化性能。
  • 文件位置和格式

    • 位置由 slow_query_log 和 slow_query_log_file 参数指定,例如:
    1. [mysqld]
    2. slow_query_log = 1
    3. slow_query_log_file = /var/log/mysql/slow-query.log
    4. long_query_time = 2
    复制代码
      

    • 格式包含时间戳、查询语句、实行时间等,示例如下:
    1. # Time: 2025-01-07T12:00:00.000000Z
    2. # User@Host: root[root] @ localhost []  Id: 1
    3. # Query_time: 2.500000  Lock_time: 0.100000 Rows_sent: 10 Rows_examined: 100
    4. SELECT * FROM table_name WHERE column_name = 'value';
    复制代码

  • 日志的读取

    • 可使用文本编辑器或 tail 命令查看,例如:
    1. less /var/log/mysql/slow-query.log
    复制代码
    1. tail -f /var/log/mysql/slow-query.log
    复制代码

  • 其他选项

    • log_queries_not_using_indexes 参数可设置是否记录未使用索引的查询,例如:
    1. [mysqld]
    2. log_queries_not_using_indexes = 1
    复制代码
      

    • min_examined_row_limit 参数可以设置记录的最小检查行数,例如:
    1. [mysqld]
    2. min_examined_row_limit = 100
    复制代码

   总之,MySQL
的各种日志在数据库管理、性能优化、故障排查和数据恢复等方面发挥着重要作用。通过公道设置日志的位置、格式和相关参数,能够更好地使用日志信息,确保数据库体系的稳固运行和性能优化。在查看日志时,根据不同日志的特点和功能,选择合适的工具和方法,实时发现问题并采取相应的步伐。同时,要注意定期清理日志文件,避免占用过多磁盘空间,影响体系性能。
  

MySQL 备份与恢复

备份/恢复计谋



  • 计谋选择的重要性:根据业务需求、数据重要性和体系可用性,选择合适的备份和恢复计谋至关重要。例如,对于焦点业务体系,大概需要频繁备份和快速恢复,而对于开发情况,备份频率可以较低。
逻辑备份和恢复

备份



  • 使用 mysqldump 工具

    • 功能:将数据库的结构和数据以逻辑 SQL 语句的形式导出,适用于全量备份和部门备份。
    • 示例:
    1. # 全量备份
    2. mysqldump -u root -p --all-databases > all_databases_backup.sql
    3. # 部分备份,只备份一个数据库
    4. mysqldump -u root -p database_name > database_backup.sql
    5. # 备份单个表
    6. mysqldump -u root -p database_name table_name > table_backup.sql
    复制代码
      

    • 解释:

      • -u root:指定用户名。
      • -p:提示输入暗码。
      • --all-databases:备份全部数据库。
      • database_name:要备份的数据库名称。
      • table_name:要备份的表名。

    • 优点:

      • 备份文件是文本格式,便于阅读和编辑。
      • 可以在不同 MySQL 版本和服务器之间进行恢复。


完全恢复



  • 使用 mysql 命令

    • 功能:将逻辑备份文件导入到 MySQL 数据库中,实现完全恢复。
    • 示例:
    1. # 恢复全量备份
    2. mysql -u root -p < all_databases_backup.sql
    3. # 恢复部分备份
    4. mysql -u root -p database_name < database_backup.sql
    复制代码
      

    • 解释:

      • 输入命令后,会根据备份文件中的 SQL 语句重建数据库结构和数据。


基于时间点恢复



  • 使用二进制日志(binlog)联合 mysqldump 备份

    • 步骤:

      • 起首,使用 mysqldump 进行全量备份。
      • 记录备份时的二进制日志文件和位置。
      • 在需要恢复时,先使用 mysqldump 备份文件恢复。
      • 然后,使用 mysqlbinlog 读取二进制日志文件,找到对应时间点的日志,并将其应用到数据库。

    • 示例:
    1. # 假设全量备份已经完成,使用 mysqlbinlog 恢复到指定时间点
    2. mysqlbinlog --start-datetime="2025-01-07 10:00:00" --stop-datetime="2025-01-07 11:00:00" mysql-bin.000001 | mysql -u root -p
    复制代码
      

    • 解释:

      • --start-datetime 和 --stop-datetime 用于指定时间范围,将该时间范围内的 binlog 内容应用到数据库。


基于位置恢复



  • 使用二进制日志(binlog)的位置信息

    • 步骤:

      • 进行全量备份并记录二进制日志位置。
      • 当需要恢复时,根据二进制日志中的位置信息进行恢复。

    • 示例:
    1. # 假设知道起始位置和结束位置
    2. mysqlbinlog --start-position=100 --end-position=200 mysql-bin.000001 | mysql -u root -p
    复制代码
      

    • 解释:

      • --start-position 和 --end-position 可以精确控制恢复的范围,从指定位置开始和结束。


物理备份和恢复

冷备份



  • 操纵方法

    • 功能:在 MySQL 服务器关闭的情况下,直接复制数据文件进行备份。
    • 示例:
    1. # 关闭 MySQL 服务器
    2. systemctl stop mysqld
    3. # 备份数据目录,假设数据目录为 /var/lib/mysql
    4. cp -R /var/lib/mysql /backup/mysql_backup
    5. # 启动 MySQL 服务器
    6. systemctl start mysqld
    复制代码
      

    • 解释:

      • 确保服务器关闭,防止数据不一致。
      • 复制数据目录,包含表空间文件、日志文件等。


热备份



  • 使用工具进行备份

    • 对于 InnoDB 存储引擎:

      • 使用 Percona XtraBackup 或 MySQL Enterprise Backup 等工具。
      • 示例(使用 Percona XtraBackup):
      1. # 全量备份
      2. innobackupex --user=root --password=password /backup/innobackup
      复制代码
         

      • 解释:

        • innobackupex 是 Percona XtraBackup 的命令行工具。
        • 备份完成后,会天生一个完备的备份集,包括数据文件、日志文件等。



表的导入导出

导入



  • 使用 LOAD DATA INFILE 语句

    • 功能:将数据文件导入到表中。
    • 示例:
    1. LOAD DATA INFILE '/path/to/data.txt'
    2. INTO TABLE table_name
    3. FIELDS TERMINATED BY ','
    4. LINES TERMINATED BY '\n';
    复制代码
      

    • 解释:

      • 以逗号分隔字段,以换行符分隔行,将文件中的数据导入到表中。


导出



  • 使用 SELECT INTO OUTFILE 语句

    • 功能:将表中的数据导出到文件。
    • 示例:
    1. SELECT * INTO OUTFILE '/path/to/output.txt'
    2. FIELDS TERMINATED BY ','
    3. LINES TERMINATED BY '\n'
    4. FROM table_name;
    复制代码
      

    • 解释:

      • 将表中的数据以逗号分隔字段,以换行符分隔行导出到文件。


   小结

  

  • MySQL 的备份和恢复包括逻辑备份和物理备份。
  • 逻辑备份使用 mysqldump 工具,以 SQL 语句形式备份,可机动进行完全恢复、基于时间点和位置的恢复。
  • 物理备份包括冷备份和热备份,冷备份需要关闭服务器,热备份可使用专业工具进行在线备份。
  • 表的导入导出可以通过 SQL 语句实现,方便数据的迁移和交换。
  • 公道的备份和恢复计谋有助于保障数据的安全性和体系的可用性,在选择计谋时要综合考虑体系的性能、业务需求和恢复的实时性等因素。
  


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

北冰洋以北

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表