北冰洋以北 发表于 2025-1-9 20:11:24

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

MySQL 日志

错误日志



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

[*]位置通常由 log_error 参数指定,在 MySQL 设置文件 /etc/my.cnf 或 my.ini 中设置,例如:

log_error = /var/log/mysql/error.log
   

[*]格式包含时间戳、错误级别、错误代码、错误信息等,示例如下:
2025-01-07T12:00:00.000000Z 2 Some error message here

[*]日志的读取:

[*]直接使用文本编辑器打开错误日志文件查看,例如:
less /var/log/mysql/error.log
   

[*]也可以使用 tail 命令实时查看最新的错误信息:
tail -f /var/log/mysql/error.log

二进制日志



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

[*]位置由 log-bin 参数指定,例如:

log-bin = /var/log/mysql/mysql-bin
   

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

[*]日志的读取:

[*]使用 mysqlbinlog 工具读取二进制日志:
mysqlbinlog /var/log/mysql/mysql-bin.000001
   

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

[*]日志的删除:

[*]主动删除:可通过 expire_logs_days 参数设置二进制日志的保留天数,超过该天数的日志会主动删除,例如:

expire_logs_days = 7
   

[*]手动删除:使用 PURGE BINARY LOGS 语句删除指定日志文件或之前的日志,例如:
PURGE BINARY LOGS TO'mysql-bin.000005';
   

[*]或根据时间删除:
PURGE BINARY LOGS BEFORE '2025-01-07 12:00:00';

[*]其他选项:

[*]binlog_format 参数可以设置二进制日志的格式,有 STATEMENT、ROW 和 MIXED 三种。例如:

binlog_format = ROW

查询日志



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

[*]位置由 general_log 和 general_log_file 参数指定,例如:

general_log = 1
general_log_file = /var/log/mysql/query.log
   

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

[*]日志的读取:

[*]与错误日志类似,可使用文本编辑器或 tail 命令查看,例如:
less /var/log/mysql/query.log
tail -f /var/log/mysql/query.log

慢查询日志



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

[*]位置由 slow_query_log 和 slow_query_log_file 参数指定,例如:

slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow-query.log
long_query_time = 2
   

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

[*]日志的读取:

[*]可使用文本编辑器或 tail 命令查看,例如:
less /var/log/mysql/slow-query.log
tail -f /var/log/mysql/slow-query.log

[*]其他选项:

[*]log_queries_not_using_indexes 参数可设置是否记录未使用索引的查询,例如:

log_queries_not_using_indexes = 1
   

[*]min_examined_row_limit 参数可以设置记录的最小检查行数,例如:

min_examined_row_limit = 100

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

备份/恢复计谋



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

备份



[*]使用 mysqldump 工具:

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

[*]解释:

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

[*]优点:

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


完全恢复



[*]使用 mysql 命令:

[*]功能:将逻辑备份文件导入到 MySQL 数据库中,实现完全恢复。
[*]示例:
# 恢复全量备份
mysql -u root -p < all_databases_backup.sql
# 恢复部分备份
mysql -u root -p database_name < database_backup.sql
   

[*]解释:

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


基于时间点恢复



[*]使用二进制日志(binlog)联合 mysqldump 备份:

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

[*]示例:
# 假设全量备份已经完成,使用 mysqlbinlog 恢复到指定时间点
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)的位置信息:

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

[*]示例:
# 假设知道起始位置和结束位置
mysqlbinlog --start-position=100 --end-position=200 mysql-bin.000001 | mysql -u root -p
   

[*]解释:

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


物理备份和恢复

冷备份



[*]操纵方法:

[*]功能:在 MySQL 服务器关闭的情况下,直接复制数据文件进行备份。
[*]示例:
# 关闭 MySQL 服务器
systemctl stop mysqld
# 备份数据目录,假设数据目录为 /var/lib/mysql
cp -R /var/lib/mysql /backup/mysql_backup
# 启动 MySQL 服务器
systemctl start mysqld
   

[*]解释:

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


热备份



[*]使用工具进行备份:

[*]对于 InnoDB 存储引擎:

[*]使用 Percona XtraBackup 或 MySQL Enterprise Backup 等工具。
[*]示例(使用 Percona XtraBackup):
# 全量备份
innobackupex --user=root --password=password /backup/innobackup
   

[*]解释:

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



表的导入导出

导入



[*]使用 LOAD DATA INFILE 语句:

[*]功能:将数据文件导入到表中。
[*]示例:
LOAD DATA INFILE '/path/to/data.txt'
INTO TABLE table_name
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n';
   

[*]解释:

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


导出



[*]使用 SELECT INTO OUTFILE 语句:

[*]功能:将表中的数据导出到文件。
[*]示例:
SELECT * INTO OUTFILE '/path/to/output.txt'
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
FROM table_name;
   

[*]解释:

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


   小结



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

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: MYSQL-------------MySQL 日志&& MySQL 备份与恢复