在MySQL服务器启动时,它检查其命令行的操作,来查看它是否应该执行登录并打开相应的日志文件(如果应该的话)。可以让服务器生成两种主要类型的日志文件:常规日志文件。它报告客户机的连接、查询和其他各种各样的事件。它对于跟踪服务器的活动很有用:谁正
在MySQL服务器启动时,它检查其命令行的操作,来查看它是否应该执行登录并打开相应的日志文件(如果应该的话)。可以让服务器生成两种主要类型的日志文件:常规日志文件。它报告客户机的连接、查询和其他各种各样的事件。它对于跟踪服务器的活动很有用:谁正在连接、从哪里连接,以及他们正在做什么。
更新日志
它报告修改数据库的查询。在此上下文中的术语“更新”不只涉及UPDATE语句,还涉及修改数据库的所有语句。由于这个原因,它包含了对D E L E T E、INSERT、REPLACE、CREATE TABLE、DROP TABLE、GRANT 和REVOKE 的查询记录。更新日志的内容以SQL 语句的形式书写,这些语句用作对mysql的输入。如果在崩溃后必须恢复表的话,更新日志与备份是很有用的。您可以从备份文件中恢复数据库,然后通过将更新日志作为对mysql的输入,重新运行在该备份文件之后又修改数据库的任何查询。这样,可将表恢复到崩溃时刻的状态。
为了使日志有效,可使用--log 选项开启常规日志,并用--log-update 选项开启更新日志。可以在mysqld.safe_mysqld 或mysql.server 的命令行中,或在某个选项的[mysqld] 组中指定这些选项。当日志有效时,日志文件在缺省时被写到服务器的数据目录中。
笔者建议在首次使用MySQL时应使两种日志类型都有效。在获得一些使用MySQL的经验后,可能会只用更新日志来对付,以便减少磁盘空间的需求。
在使日志有效后,要确保不用大量的日志信息将磁盘填满,尤其是如果服务器正在处理大量的查询话。可使用日志文件循环和截止时间,在避免日志文件无边界地增长的同时保持最近的几个日志是联机可用的。
日志文件循环工作如下。假定日志文件名为l o g。在第一个循环中, log 被重新命名为l o g . 0,且服务器开始写新的l o g文件。在第二次循环中, log.0 被重命名为l o g . 1,log 重命名为l o g . 0,服务器开始写另一个新的log 文件。这样,每个文件循环通过名字l o g . 0、l o g . 1,等等。当文件到达循环的某一点时,可以终止它。
更新日志和LOAD DATA 语句
通常,当服务器执行LOAD DATE 语句时,它只将该语句本身而不是被加载的行内容写到更新日志中。这意味着除非该数据文件仍然保持可访问,否则使用更新日志的恢复操作将是不完整的。为了确保这一点的安全,除非数据库已经备份,否则不应该删除数据文件。
系统备份
更新日志对于数据库恢复并不是任何时候都好,如果一个磁盘崩溃导致您失去了更新日志的话,应确保您执行定期的文件系统备份。将更新日志写到与存储数据库不相同的磁盘中也是一个好主意。
例如,如果您每天都循环日志,并且想保持一周的日志,则应保留log.0 到l o g . 6。在下一个循环中,将通过令log.5 覆盖log.6 使其成为新的log.6 来终止l o g . 6。这样,您就可以保留许多日志而又避免了它们超过磁盘的限度。
日志循环频率和保持的旧日志数量将依赖于服务器的繁忙程度(活动的服务器产生更多的日志信息)以及您希望为旧日志投入多少磁盘空间。当循环常规日志时,可以用mysqla d - min flush-logs 命令告诉服务器关闭当前的日志文件并打开新的日志文件。
执行常规日志循环的脚本类似如下(可修改它来反映您的日志基名和数据目录的位置,或许还有希望保留的旧日志的数量):
最好从mysqladm 账号中运行此脚本以确保日志文件属于那个用户。如果在.my.cnf 选项文件中保留连接参数,您不需要在该脚本的mysqladmin 命令中指定任何参数。如果您不这样做的话可以建立一个受限用户,它除了发布刷新命令外什么也不做。然后可以以最小的风险在该脚本中放置这个用户的口令。如果想这样做,则该用户应只有RELOAD 权限。例如,要想调用用户flush 并分配一个口令f l us h pass,可使用下列GRANT 语句:
GRANT RELOAD ON *.* TO flush@localhost IDENTIFIEDBY "flushpass"
当需要在脚本中执行刷新操作时,可以这样做:
mysqladmin -uflush -pflushpass flush -logs
在Linux 中,最好用logrotate 来安装MySQL分发包中的mysql- log - rotate 脚本,而不是自己编写脚本。如果mysql-log-rotate 不通过RPM 文件自动安装,应查看MySQL分发包的support-files 目录。
由于服务器处理更新日志文件的方法不同,日志文件的循环在更新日志与常规日志之间稍有不同。如果告诉服务器使用没有扩展名的更新日志文件名(如up date),则服务器将使用顺序的up date . 0 0 1、update.002 等自动创建更新日志文件名。在服务器启动以及在日志刷新时,一个新的更新日志产生。如果您开启更新日志而没有指定文件名,服务器则使用主机名作为基名产生一个更新日志文件的序列。
当终止一个由这种方法生成的文件序列时,您或许想要根据其期限(最后被修改的时间)而非根据名字来终止它们。这样做的理由是由于您不知道flush-log 命令将在何时发布,因此您不能指望在任何给定的时间周期内创建固定数量的更新日志。例如,如果用mysqldump 备份表并使用--flush-logs 选项,在该更新日志名序列中的一个新文件随每个备份一同创建。
对于带有由服务器自动产生的顺序文件名的更新日志,基于日志期限的终止脚本类似如下:
find 命令定位并删除修改时间超过一个星期的更新日志文件。重要的是使用-name 参数来对一个数字的文件扩展名进行测试,以避免删除由错误的update 所指定的表。
还可以告诉服务器使用固定的更新日志文件名(如果希望的话),如果想用与常规日志相同的方法循环更新日志,这是有用的。要想使用固定的更新日志名,应指定一个包含扩展名的名字。例如,可以用--log-update=update.log 选项启动服务器来使用名字up date . l o g。服务器将一直关闭并在接收flush-logs 命令时打开该日志,但是服务器并不是每次都产生新的文件。在这种情况下,用于更新日志的日志循环脚本和用于常规日志的脚本仅在循环的文件基名上有所不同。
如果想自动执行日志循环和终止,可使用c r o n。假定循环常规日志和更新日志的脚本为rotate-logs 和r o t a t e - up date - l o g s,且安装在/usr/user/mysql/bin 目录中。以mysqlladm 用户进行注册,然后用以下命令编辑mysqladm 用户的crontab 文件: % crontab -e
此命令允许编辑当前crontab 文件的备份(如果之前没有这样做,则它可能为空)。按以下方法将行增加到该文件中:
这个项告诉cron 在每天早上4 点运行此脚本。您可以改变时间或按需要进行调度。有关说明请参见crontab 的人工页。

MySQL索引基数对查询性能有显著影响:1.高基数索引能更有效地缩小数据范围,提高查询效率;2.低基数索引可能导致全表扫描,降低查询性能;3.在联合索引中,应将高基数列放在前面以优化查询。

MySQL學習路徑包括基礎知識、核心概念、使用示例和優化技巧。 1)了解表、行、列、SQL查詢等基礎概念。 2)學習MySQL的定義、工作原理和優勢。 3)掌握基本CRUD操作和高級用法,如索引和存儲過程。 4)熟悉常見錯誤調試和性能優化建議,如合理使用索引和優化查詢。通過這些步驟,你將全面掌握MySQL的使用和優化。

MySQL在現實世界的應用包括基礎數據庫設計和復雜查詢優化。 1)基本用法:用於存儲和管理用戶數據,如插入、查詢、更新和刪除用戶信息。 2)高級用法:處理複雜業務邏輯,如電子商務平台的訂單和庫存管理。 3)性能優化:通過合理使用索引、分區表和查詢緩存來提升性能。

MySQL中的SQL命令可以分為DDL、DML、DQL、DCL等類別,用於創建、修改、刪除數據庫和表,插入、更新、刪除數據,以及執行複雜的查詢操作。 1.基本用法包括CREATETABLE創建表、INSERTINTO插入數據和SELECT查詢數據。 2.高級用法涉及JOIN進行表聯接、子查詢和GROUPBY進行數據聚合。 3.常見錯誤如語法錯誤、數據類型不匹配和權限問題可以通過語法檢查、數據類型轉換和權限管理來調試。 4.性能優化建議包括使用索引、避免全表掃描、優化JOIN操作和使用事務來保證數據一致性

InnoDB通過undolog實現原子性,通過鎖機制和MVCC實現一致性和隔離性,通過redolog實現持久性。 1)原子性:使用undolog記錄原始數據,確保事務可回滾。 2)一致性:通過行級鎖和MVCC確保數據一致。 3)隔離性:支持多種隔離級別,默認使用REPEATABLEREAD。 4)持久性:使用redolog記錄修改,確保數據持久保存。

MySQL在數據庫和編程中的地位非常重要,它是一個開源的關係型數據庫管理系統,廣泛應用於各種應用場景。 1)MySQL提供高效的數據存儲、組織和檢索功能,支持Web、移動和企業級系統。 2)它使用客戶端-服務器架構,支持多種存儲引擎和索引優化。 3)基本用法包括創建表和插入數據,高級用法涉及多表JOIN和復雜查詢。 4)常見問題如SQL語法錯誤和性能問題可以通過EXPLAIN命令和慢查詢日誌調試。 5)性能優化方法包括合理使用索引、優化查詢和使用緩存,最佳實踐包括使用事務和PreparedStatemen

MySQL適合小型和大型企業。 1)小型企業可使用MySQL進行基本數據管理,如存儲客戶信息。 2)大型企業可利用MySQL處理海量數據和復雜業務邏輯,優化查詢性能和事務處理。

InnoDB通過Next-KeyLocking機制有效防止幻讀。 1)Next-KeyLocking結合行鎖和間隙鎖,鎖定記錄及其間隙,防止新記錄插入。 2)在實際應用中,通過優化查詢和調整隔離級別,可以減少鎖競爭,提高並發性能。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境