[{"data":1,"prerenderedAt":338},["ShallowReactive",2],{"site-data":3,"article-46":143,"article-show-hot-46":172,"article-show-new-46":262},{"settings":4,"categorys":35,"tree":97,"models":118,"search_model_select":128,"nav_list":130},{"changefreq":5,"changyan_app_id":6,"changyan_app_key":6,"copy":7,"description":8,"editor":9,"file":6,"guest_feedback":10,"head_html":6,"icp":11,"index_banner":12,"index_banner_bg":13,"is_excel":14,"is_watermark":10,"keywords":15,"links":16,"logo":17,"lzcms_banner":6,"lzcms_banner_link":18,"member_register_enabled":14,"qq_app_id":6,"qq_app_key":6,"qr_code":6,"search_model":19,"site_closedreason":6,"site_idea":6,"site_idea1":20,"site_idea2":21,"site_idea3":22,"site_name":23,"site_statistice":6,"site_status":14,"site_url":18,"sitemap_model":19,"stationmaster_motto":24,"stationmaster_name":25,"stationmaster_occupation":26,"stationmaster_qq":27,"stationmaster_qqnet":28,"stationmaster_qqnet_code":29,"threshold":14,"title_add":30,"watermark":6,"watermark_alpha":31,"watermark_height":32,"watermark_locate":33,"watermark_width":34},"weekly","","版权所有 © \u003Ca class=\"site_url\" href=\"https://zhl123.com\">2026 zhl123.com\u003C/a>","linux、Python、mysql、docker、k8s技术交流","layedit","0","粤ICP备15054664号-1","/uploads/images/20181109/7a86191de8b8bb60e9c6b54d8b27c5cc.jpg","#xe604","1","linux、Python、mysql、docker、k8s","{\"1\":{\"id\":\"1\",\"link_url\":\"https://linux.org\",\"logo\":\"\",\"name\":\"linux\",\"sort\":\"0\",\"status\":\"1\"}}","/uploads/images/20181109/e7305012448aed257176dd591846f50a.png","https://zhl123.com","2","学无止境\n学习，探索，研究，从不了解到了解，从无知到掌握，到灵活运用，在不断的学习中加深认识。由浅入深，由表及里。","业精于勤\n“业精于勤荒于嬉”，精深的业技靠的是勤学、刻苦努力，靠的是争分夺秒的勤学苦练才会有精深的技术。得在认真，失在随便。","工匠精神\n精益求精，注重细节，追求完美和极致，不惜花费时间精力，孜孜不倦，反复改进产品，把99%提高到99.99%。","linux","业精于勤、学无止境、工匠精神","廖地金","高级Linux运维工程师","1256636645","592958303","\u003Ca target=\"_blank\" href=\"//shang.qq.com/wpa/qunwpa?idkey=09be7d1a682073783fd636102e666393169b8a8aac8f3393da1de57bcaa821a0\">\u003Cimg border=\"0\" src=\"//pub.idqqimg.com/wpa/images/group.png\" alt=\"Linux技术\" title=\"Linux技术\">\u003C/a>"," | Python | mysql | docker | k8s 技术交流","100","300","9","500",{"0":36,"17":51,"18":60,"19":63,"20":67,"21":71,"22":76,"25":80,"26":83,"27":89,"29":94},{"children":37},{"0":38,"25":43,"26":48},[39,40,41,42],25,21,22,26,[44,45,46,47],17,18,19,20,[49,50],27,29,{"create_time":6,"description":6,"id":44,"image_url":6,"index_template":52,"is_cover":53,"is_menu":53,"keywords":6,"list_template":54,"model_code":55,"model_id":56,"model_name":57,"name":23,"parent_id":39,"seo_description":6,"seo_keywords":6,"seo_title":6,"show_template":58,"sort":53,"subtitle":6,"update_time":6,"url":59},"index",1,"list","article",2,"文章模型","show","/article/lists?category_id=17",{"create_time":6,"description":6,"id":45,"image_url":6,"index_template":52,"is_cover":53,"is_menu":53,"keywords":6,"list_template":54,"model_code":55,"model_id":56,"model_name":57,"name":61,"parent_id":39,"seo_description":6,"seo_keywords":6,"seo_title":6,"show_template":58,"sort":56,"subtitle":6,"update_time":6,"url":62},"python","/article/lists?category_id=18",{"create_time":6,"description":6,"id":46,"image_url":6,"index_template":52,"is_cover":53,"is_menu":53,"keywords":6,"list_template":54,"model_code":55,"model_id":56,"model_name":57,"name":64,"parent_id":39,"seo_description":6,"seo_keywords":6,"seo_title":6,"show_template":58,"sort":65,"subtitle":6,"update_time":6,"url":66},"容器技术",3,"/article/lists?category_id=19",{"create_time":6,"description":6,"id":47,"image_url":6,"index_template":52,"is_cover":53,"is_menu":53,"keywords":6,"list_template":54,"model_code":55,"model_id":56,"model_name":57,"name":68,"parent_id":39,"seo_description":6,"seo_keywords":6,"seo_title":6,"show_template":58,"sort":69,"subtitle":6,"update_time":6,"url":70},"负载均衡",4,"/article/lists?category_id=20",{"create_time":6,"description":6,"id":40,"image_url":6,"index_template":52,"is_cover":53,"is_menu":53,"keywords":6,"list_template":54,"model_code":55,"model_id":56,"model_name":57,"name":72,"parent_id":73,"seo_description":6,"seo_keywords":6,"seo_title":6,"show_template":58,"sort":74,"subtitle":6,"update_time":6,"url":75},"分享无价",0,5,"/article/lists?category_id=21",{"create_time":6,"description":6,"id":41,"image_url":6,"index_template":52,"is_cover":53,"is_menu":53,"keywords":6,"list_template":54,"model_code":55,"model_id":56,"model_name":57,"name":77,"parent_id":73,"seo_description":6,"seo_keywords":6,"seo_title":6,"show_template":58,"sort":78,"subtitle":6,"update_time":6,"url":79},"随笔",6,"/article/lists?category_id=22",{"create_time":6,"description":6,"id":39,"image_url":6,"index_template":52,"is_cover":53,"is_menu":53,"keywords":6,"list_template":54,"model_code":55,"model_id":56,"model_name":57,"name":81,"parent_id":73,"seo_description":6,"seo_keywords":6,"seo_title":6,"show_template":58,"sort":73,"subtitle":6,"update_time":6,"url":82},"学无止境","/article/lists?category_id=25",{"create_time":6,"description":6,"id":42,"image_url":6,"index_template":52,"is_cover":53,"is_menu":53,"keywords":6,"list_template":54,"model_code":84,"model_id":65,"model_name":85,"name":86,"parent_id":73,"seo_description":6,"seo_keywords":6,"seo_title":6,"show_template":58,"sort":87,"subtitle":6,"update_time":6,"url":88},"picture","图集模型","关于",8,"/picture/lists?category_id=26",{"create_time":6,"description":6,"id":49,"image_url":6,"index_template":52,"is_cover":53,"is_menu":73,"keywords":6,"list_template":54,"model_code":90,"model_id":53,"model_name":91,"name":92,"parent_id":42,"seo_description":6,"seo_keywords":6,"seo_title":6,"show_template":58,"sort":47,"subtitle":6,"update_time":6,"url":93},"page","单页模型","关于博主","/page/27",{"create_time":6,"description":6,"id":50,"image_url":6,"index_template":52,"is_cover":73,"is_menu":73,"keywords":6,"list_template":54,"model_id":73,"name":95,"parent_id":42,"seo_description":6,"seo_keywords":6,"seo_title":6,"show_template":58,"sort":47,"subtitle":6,"update_time":6,"url":96},"留言","/feedback",[98,108,110,112],{"children":99,"create_time":6,"description":6,"id":39,"image_url":6,"index_template":52,"is_cover":53,"is_menu":53,"keywords":6,"list_template":54,"model_code":55,"model_id":56,"model_name":57,"name":81,"parent_id":73,"seo_description":6,"seo_keywords":6,"seo_title":6,"show_template":58,"sort":73,"subtitle":6,"update_time":6,"url":82},[100,102,104,106],{"children":101,"create_time":6,"description":6,"id":44,"image_url":6,"index_template":52,"is_cover":53,"is_menu":53,"keywords":6,"list_template":54,"model_code":55,"model_id":56,"model_name":57,"name":23,"parent_id":39,"seo_description":6,"seo_keywords":6,"seo_title":6,"show_template":58,"sort":53,"subtitle":6,"update_time":6,"url":59},[],{"children":103,"create_time":6,"description":6,"id":45,"image_url":6,"index_template":52,"is_cover":53,"is_menu":53,"keywords":6,"list_template":54,"model_code":55,"model_id":56,"model_name":57,"name":61,"parent_id":39,"seo_description":6,"seo_keywords":6,"seo_title":6,"show_template":58,"sort":56,"subtitle":6,"update_time":6,"url":62},[],{"children":105,"create_time":6,"description":6,"id":46,"image_url":6,"index_template":52,"is_cover":53,"is_menu":53,"keywords":6,"list_template":54,"model_code":55,"model_id":56,"model_name":57,"name":64,"parent_id":39,"seo_description":6,"seo_keywords":6,"seo_title":6,"show_template":58,"sort":65,"subtitle":6,"update_time":6,"url":66},[],{"children":107,"create_time":6,"description":6,"id":47,"image_url":6,"index_template":52,"is_cover":53,"is_menu":53,"keywords":6,"list_template":54,"model_code":55,"model_id":56,"model_name":57,"name":68,"parent_id":39,"seo_description":6,"seo_keywords":6,"seo_title":6,"show_template":58,"sort":69,"subtitle":6,"update_time":6,"url":70},[],{"children":109,"create_time":6,"description":6,"id":40,"image_url":6,"index_template":52,"is_cover":53,"is_menu":53,"keywords":6,"list_template":54,"model_code":55,"model_id":56,"model_name":57,"name":72,"parent_id":73,"seo_description":6,"seo_keywords":6,"seo_title":6,"show_template":58,"sort":74,"subtitle":6,"update_time":6,"url":75},[],{"children":111,"create_time":6,"description":6,"id":41,"image_url":6,"index_template":52,"is_cover":53,"is_menu":53,"keywords":6,"list_template":54,"model_code":55,"model_id":56,"model_name":57,"name":77,"parent_id":73,"seo_description":6,"seo_keywords":6,"seo_title":6,"show_template":58,"sort":78,"subtitle":6,"update_time":6,"url":79},[],{"children":113,"create_time":6,"description":6,"id":42,"image_url":6,"index_template":52,"is_cover":53,"is_menu":53,"keywords":6,"list_template":54,"model_code":84,"model_id":65,"model_name":85,"name":86,"parent_id":73,"seo_description":6,"seo_keywords":6,"seo_title":6,"show_template":58,"sort":87,"subtitle":6,"update_time":6,"url":88},[114,116],{"children":115,"create_time":6,"description":6,"id":49,"image_url":6,"index_template":52,"is_cover":53,"is_menu":73,"keywords":6,"list_template":54,"model_code":90,"model_id":53,"model_name":91,"name":92,"parent_id":42,"seo_description":6,"seo_keywords":6,"seo_title":6,"show_template":58,"sort":47,"subtitle":6,"update_time":6,"url":93},[],{"children":117,"create_time":6,"description":6,"id":50,"image_url":6,"index_template":52,"is_cover":73,"is_menu":73,"keywords":6,"list_template":54,"model_id":73,"name":95,"parent_id":42,"seo_description":6,"seo_keywords":6,"seo_title":6,"show_template":58,"sort":47,"subtitle":6,"update_time":6,"url":96},[],{"1":119,"2":120,"3":121,"4":122,"5":125},{"id":53,"index_template":52,"list_template":54,"name":91,"show_template":58,"status":73,"tablename":90},{"id":56,"index_template":52,"list_template":54,"name":57,"show_template":58,"status":73,"tablename":55},{"id":65,"index_template":52,"list_template":54,"name":85,"show_template":58,"status":73,"tablename":84},{"id":69,"index_template":52,"list_template":54,"name":123,"show_template":58,"status":73,"tablename":124},"链接模型","link",{"id":74,"index_template":52,"list_template":54,"name":126,"show_template":58,"status":73,"tablename":127},"下载模型","download",[129],{"id":56,"name":57,"tablename":55},[131,137,139,141],{"children":132,"create_time":6,"description":6,"id":39,"image_url":6,"index_template":52,"is_cover":53,"is_menu":53,"keywords":6,"list_template":54,"model_code":55,"model_id":56,"model_name":57,"name":81,"parent_id":73,"seo_description":6,"seo_keywords":6,"seo_title":6,"show_template":58,"sort":73,"subtitle":6,"update_time":6,"url":82},[133,134,135,136],{"create_time":6,"description":6,"id":44,"image_url":6,"index_template":52,"is_cover":53,"is_menu":53,"keywords":6,"list_template":54,"model_code":55,"model_id":56,"model_name":57,"name":23,"parent_id":39,"seo_description":6,"seo_keywords":6,"seo_title":6,"show_template":58,"sort":53,"subtitle":6,"update_time":6,"url":59},{"create_time":6,"description":6,"id":45,"image_url":6,"index_template":52,"is_cover":53,"is_menu":53,"keywords":6,"list_template":54,"model_code":55,"model_id":56,"model_name":57,"name":61,"parent_id":39,"seo_description":6,"seo_keywords":6,"seo_title":6,"show_template":58,"sort":56,"subtitle":6,"update_time":6,"url":62},{"create_time":6,"description":6,"id":46,"image_url":6,"index_template":52,"is_cover":53,"is_menu":53,"keywords":6,"list_template":54,"model_code":55,"model_id":56,"model_name":57,"name":64,"parent_id":39,"seo_description":6,"seo_keywords":6,"seo_title":6,"show_template":58,"sort":65,"subtitle":6,"update_time":6,"url":66},{"create_time":6,"description":6,"id":47,"image_url":6,"index_template":52,"is_cover":53,"is_menu":53,"keywords":6,"list_template":54,"model_code":55,"model_id":56,"model_name":57,"name":68,"parent_id":39,"seo_description":6,"seo_keywords":6,"seo_title":6,"show_template":58,"sort":69,"subtitle":6,"update_time":6,"url":70},{"children":138,"create_time":6,"description":6,"id":40,"image_url":6,"index_template":52,"is_cover":53,"is_menu":53,"keywords":6,"list_template":54,"model_code":55,"model_id":56,"model_name":57,"name":72,"parent_id":73,"seo_description":6,"seo_keywords":6,"seo_title":6,"show_template":58,"sort":74,"subtitle":6,"update_time":6,"url":75},[],{"children":140,"create_time":6,"description":6,"id":41,"image_url":6,"index_template":52,"is_cover":53,"is_menu":53,"keywords":6,"list_template":54,"model_code":55,"model_id":56,"model_name":57,"name":77,"parent_id":73,"seo_description":6,"seo_keywords":6,"seo_title":6,"show_template":58,"sort":78,"subtitle":6,"update_time":6,"url":79},[],{"children":142,"create_time":6,"description":6,"id":42,"image_url":6,"index_template":52,"is_cover":53,"is_menu":53,"keywords":6,"list_template":54,"model_code":84,"model_id":65,"model_name":85,"name":86,"parent_id":73,"seo_description":6,"seo_keywords":6,"seo_title":6,"show_template":58,"sort":87,"subtitle":6,"update_time":6,"url":88},[],{"article":144,"breadcrumb":155,"category":159,"next":160,"prev":163,"second_categorys":166,"seo":171},{"id":145,"category_id":44,"title":146,"keywords":147,"description":148,"image_url":6,"content":149,"content_md":150,"url":151,"hits":152,"is_recommend":73,"is_top":73,"create_time":153,"update_time":154},46,"15 个有用的 MySQL/MariaDB 性能调整和优化技巧 ","性能,调整,优化,技巧","MySQL 是一个强大的开源关系数据库管理系统（简称 RDBMS）。它发布于 1995 年（20年前）。它采用结构化查询语言（SQL），这可能是数据库内容管理中最流行的选择。最新的 MySQL 版本是 5.6.25，于 2015 年 5 月 29 日发布。&nbsp;关于 MySQL 一个有趣的事实是它的名字来自于 Michael Widenius（MySQL 的创始人）的女儿“ My”。尽管有许多关于 MySQL 有趣的传闻，不过本文主要是向你展示一些有用的实践，以帮助你管理你的 MySQL ","\u003Cp>\u003Cspan>MySQL 是一个强大的开源关系数据库管理系统（简称 RDBMS）。它发布于 1995 年（20年前）。它采用结构化查询语言（SQL），这可能是数据库内容管理中最流行的选择。最新的 MySQL 版本是 5.6.25，于 2015 年 5 月 29 日发布。\u003C/span>\u003Cspan>&nbsp;\u003C/span>\u003Cbr>\u003Cspan>关于 MySQL 一个有趣的事实是它的名字来自于 Michael Widenius（MySQL 的创始人）的女儿“ My”。尽管有许多关于 MySQL 有趣的传闻，不过本文主要是向你展示一些有用的实践，以帮助你管理你的 MySQL 服务器。\u003C/span>\u003Cspan>&nbsp;\u003C/span>\u003Cbr>\u003Cspan>2009 年 4 月，MySQL 被 Oracle 收购。其结果是MySQL 社区分裂，创建了一个叫 MariaDB 的分支 。创建该分支的主要原因是为了保持这个项目可以在 GPL 下的自由。\u003C/span>\u003Cspan>&nbsp;\u003C/span>\u003Cbr>\u003Cspan>今天，MySQL 和 MariaDB 是用于类似 WordPress、Joomla、Magento 和其他 web 应用程序的最流行的 RDMS 之一（如果不是最多的）。\u003C/span>\u003Cspan>&nbsp;\u003C/span>\u003Cbr>\u003Cspan>这篇文章将告诉你一些基本的，但非常有用的关于如何优化 MySQL/MariaDB 性能的技巧。注意，本文假定您已经安装了 MySQL 或 MariaDB。如果你仍然不知道如何在系统上安装它们，你可以按照以下说明去安装：\u003C/span>\u003Cspan>&nbsp;\u003C/span>\u003Cbr>\u003C/p>\u003Cdiv align=\"center\">\u003Cul>\u003Cli>\u003Cdiv align=\"left\">在 RHEL/CentOS 7 上安装 LAMP\u003C/div>\u003C/li>\u003Cli>\u003Cdiv align=\"left\">在 Fedora 22 上安装 LAMP\u003C/div>\u003C/li>\u003Cli>\u003Cdiv align=\"left\">在 Ubuntu 15.04 安装 LAMP\u003C/div>\u003C/li>\u003Cli>\u003Cdiv align=\"left\">在 Debian 8 上安装 MariaDB\u003C/div>\u003C/li>\u003Cli>\u003Cdiv align=\"left\">在 Gentoo Linux 上安装 MariaDB\u003C/div>\u003C/li>\u003Cli>\u003Cdiv align=\"left\">在 Arch Linux 上安装 MariaDB\u003C/div>\u003C/li>\u003C/ul>\u003C/div>\u003Cp>\u003Cspan>\u003Cb>重要提示\u003C/b>： 在开始之前，不要盲目的接受这些建议。每个 MySQL 设置都是不同的，在进行任何更改之前需要慎重考虑。\u003C/span>\u003Cspan>&nbsp;\u003C/span>\u003Cbr>\u003Cspan>你需要明白这些：\u003C/span>\u003Cspan>&nbsp;\u003C/span>\u003Cbr>\u003C/p>\u003Cdiv align=\"center\">\u003Cul>\u003Cli>\u003Cdiv align=\"left\">MySQL/MariaDB 配置文件位于 /etc/my.cnf。 每次更改此文件后你需要重启 MySQL 服务，以使更改生效。\u003C/div>\u003C/li>\u003Cli>\u003Cdiv align=\"left\">这篇文章使用 MySQL 5.6 版本。\u003C/div>\u003C/li>\u003C/ul>\u003C/div>\u003Cdiv align=\"center\">\u003Cbr>\u003C/div>\u003Cp>\u003Cbr>\u003Cbr>\u003Cfont size=\"4\">\u003Cb>1. 启用 InnoDB 的每张表一个数据文件设置\u003C/b>\u003C/font>\u003Cspan>&nbsp;\u003C/span>\u003Cbr>\u003Cbr>\u003Cspan>首先，有一个重要的解释， InnoDB 是一个存储引擎。MySQL 和 MariaDB 使用 InnoDB 作为默认存储引擎。以前，MySQL 使用系统表空间来保存数据库中的表和索引。这意味着服务器唯一的目的就是数据库处理，它们的存储盘不用于其它目的。\u003C/span>\u003Cspan>&nbsp;\u003C/span>\u003Cbr>\u003Cspan>InnoDB 提供了更灵活的方式，它把每个数据库的信息保存在一个 .ibd 数据文件中。每个 .idb 文件代表它自己的表空间。通过这样的方式可以更快地完成类似 “TRUNCATE” 的数据库操作，当删除或截断一个数据库表时，你也可以回收未使用的空间。\u003C/span>\u003Cspan>&nbsp;\u003C/span>\u003Cbr>\u003Cspan>这样配置的另一个好处是你可以将某些数据库表放在一个单独的存储设备。这可以大大提升你磁盘的 I/O 负载。\u003C/span>\u003Cspan>&nbsp;\u003C/span>\u003Cbr>\u003Cspan>MySQL 5.6及以上的版本默认启用 innodb_file_per_table。你可以在 /etc/my.cnf 文件中看到。该指令看起来是这样的：\u003C/span>\u003Cspan>&nbsp;\u003C/span>\u003Cbr>\u003Cbr>\u003Cspan>innodb_file_per_table=1&nbsp;\u003C/span>\u003Cbr>\u003C/p>\u003Cdiv align=\"center\">\u003Cbr>\u003C/div>\u003Cp>\u003Cbr>\u003Cbr>\u003Cfont size=\"4\">\u003Cb>2. 将 MySQL 数据库数据存储到独立分区上\u003C/b>\u003C/font>\u003Cspan>&nbsp;\u003C/span>\u003Cbr>\u003Cbr>\u003Cspan>\u003Cb>注意\u003C/b>：此设置只在 MySQL 上有效, 在 MariaDB 上无效。\u003C/span>\u003Cspan>&nbsp;\u003C/span>\u003Cbr>\u003Cspan>有时候操作系统的读/写会降低你 MySQL 服务器的性能，尤其是如果操作系统和数据库的数据位于同一块磁盘上。因此，我建议你使用单独的磁盘（最好是 SSD）用于 MySQL 服务。\u003C/span>\u003Cspan>&nbsp;\u003C/span>\u003Cbr>\u003Cspan>要完成这步，你需要将新的磁盘连接到你的计算机/服务器上。对于这篇文章，我假定磁盘挂在到 /dev/sdb。\u003C/span>\u003Cspan>&nbsp;\u003C/span>\u003Cbr>\u003C/p>\u003Cdiv align=\"center\">\u003Cbr>\u003C/div>\u003Cp>\u003Cbr>\u003Cbr>\u003Cfont size=\"3\">\u003Cb>下一步是准备新的分区：\u003C/b>\u003C/font>\u003Cspan>&nbsp;\u003C/span>\u003Cbr>\u003Cbr>\u003Cbr>\u003Cspan># fdisk /dev/sdb&nbsp;\u003C/span>\u003Cbr>\u003Cspan>现在按 “N” 来创建新的分区。接着按 “P”，使其创建为主分区。在此之后，从 1-4 设置分区号。之后，你可以选择分区大小。这里按 enter。在下一步，你需要配置分区的大小。\u003C/span>\u003Cspan>&nbsp;\u003C/span>\u003Cbr>\u003Cspan>如果你希望使用全部的磁盘，再按一次 enter。否则，你可以手动设置新分区的大小。准备就绪后按 “w” 保存更改。现在，我们需要为我们的新分区创建一个文件系统。这可以用下面命令轻松地完成：\u003C/span>\u003Cspan>&nbsp;\u003C/span>\u003Cbr>\u003Cbr>\u003Cspan># mkfs.ext4 /dev/sdb1&nbsp;\u003C/span>\u003Cbr>\u003Cspan>现在我们会挂载新分区到一个目录。我在根目录下创建了一个名为 “ssd” 的目录：\u003C/span>\u003Cspan>&nbsp;\u003C/span>\u003Cbr>\u003Cbr>\u003Cspan># mkdir /ssd/&nbsp;\u003C/span>\u003Cbr>\u003Cspan>挂载新分区到刚才创建的目录下：\u003C/span>\u003Cspan>&nbsp;\u003C/span>\u003Cbr>\u003Cbr>\u003Cspan># mount /dev/sdb1 &nbsp;/ssd/&nbsp;\u003C/span>\u003Cbr>\u003Cspan>你可以在 /etc/fstab 文件中添加如下行设置为开机自动挂载：\u003C/span>\u003Cspan>&nbsp;\u003C/span>\u003Cbr>\u003Cbr>\u003Cspan>/dev/sdb1 /ssd ext3 defaults 0 0&nbsp;\u003C/span>\u003Cbr>\u003C/p>\u003Cdiv align=\"center\">\u003Cbr>\u003C/div>\u003Cp>\u003Cbr>\u003Cbr>\u003Cfont size=\"3\">\u003Cb>现在我们将 MySQL 移动到新磁盘中\u003C/b>\u003C/font>\u003Cspan>&nbsp;\u003C/span>\u003Cbr>\u003Cbr>\u003Cspan>首先停止 MySQL 服务：\u003C/span>\u003Cspan>&nbsp;\u003C/span>\u003Cbr>\u003Cbr>\u003Cspan># service mysqld stop&nbsp;\u003C/span>\u003Cbr>\u003Cspan>我建议你同时停止 Apache/nginx，以防止任何试图写入数据库的操作：\u003C/span>\u003Cspan>&nbsp;\u003C/span>\u003Cbr>\u003Cbr>\u003Cspan># service httpd stop# service nginx stop&nbsp;\u003C/span>\u003Cbr>\u003Cspan>现在复制整个 MySQL 目录到新分区中:\u003C/span>\u003Cspan>&nbsp;\u003C/span>\u003Cbr>\u003Cbr>\u003Cspan># cp /var/lib/mysql /ssd/ -Rp&nbsp;\u003C/span>\u003Cbr>\u003Cspan>这可能需要一段时间，具体取决于你的 MySQL 数据库的大小。一旦这个过程完成后重命名 MySQL 目录：\u003C/span>\u003Cspan>&nbsp;\u003C/span>\u003Cbr>\u003Cbr>\u003Cspan># mv /var/lib/mysql /var/lib/mysql-backup&nbsp;\u003C/span>\u003Cbr>\u003Cspan>然后创建一个符号链接：\u003C/span>\u003Cspan>&nbsp;\u003C/span>\u003Cbr>\u003Cbr>\u003Cspan># ln -s /ssd/mysql /var/lib/mysql&nbsp;\u003C/span>\u003Cbr>\u003Cspan>现在启动你的 MySQL 和 web 服务：\u003C/span>\u003Cspan>&nbsp;\u003C/span>\u003Cbr>\u003Cbr>\u003Cspan># service mysqld start# service httpd start# service nginx start&nbsp;\u003C/span>\u003Cbr>\u003Cspan>以后你的数据库将使用新的磁盘访问。\u003C/span>\u003Cspan>&nbsp;\u003C/span>\u003Cbr>\u003C/p>\u003Cdiv align=\"center\">\u003Cbr>\u003C/div>\u003Cp>\u003Cbr>\u003Cbr>\u003Cfont size=\"4\">\u003Cb>3. 优化使用 InnoDB 的缓冲池\u003C/b>\u003C/font>\u003Cspan>&nbsp;\u003C/span>\u003Cbr>\u003Cbr>\u003Cspan>InnoDB 引擎在内存中有一个缓冲池用于缓存数据和索引。这当然有助于你更快地执行 MySQL/MariaDB 查询语句。选择合适的内存大小需要一些重要的决策并对系统的内存消耗有较多的认识。\u003C/span>\u003Cspan>&nbsp;\u003C/span>\u003Cbr>\u003Cspan>下面是你需要考虑的:\u003C/span>\u003Cspan>&nbsp;\u003C/span>\u003Cbr>\u003C/p>\u003Cdiv align=\"center\">\u003Cul>\u003Cli>\u003Cdiv align=\"left\">其它的进程需要消耗多少内存。这包括你的系统进程，页表，套接字缓冲。\u003C/div>\u003C/li>\u003Cli>\u003Cdiv align=\"left\">你的服务器是否专门用于 MySQL 还是你运行着其它非常消耗内存的服务。\u003C/div>\u003C/li>\u003C/ul>\u003C/div>\u003Cp>\u003Cspan>在一个专用的机器上，你可能会把 60-70％ 的内存分配给 innodb_buffer_pool_size。如果你打算在一个机器上运行更多的服务，你应该重新考虑专门用于 innodb_buffer_pool_size 的内存大小。\u003C/span>\u003Cspan>&nbsp;\u003C/span>\u003Cbr>\u003Cspan>你需要设置 my.cnf 中的此项:\u003C/span>\u003Cspan>&nbsp;\u003C/span>\u003Cbr>\u003Cbr>\u003Cspan>innodb_buffer_pool_size&nbsp;\u003C/span>\u003Cbr>\u003C/p>\u003Cdiv align=\"center\">\u003Cbr>\u003C/div>\u003Cp>\u003Cbr>\u003Cbr>\u003Cfont size=\"4\">\u003Cb>4. 在 MySQL 中避免使用 Swappiness\u003C/b>\u003C/font>\u003Cspan>&nbsp;\u003C/span>\u003Cbr>\u003Cbr>\u003Cspan>“交换”是一个当系统移动部分内存到一个称为 “交换空间” 的特殊磁盘空间时的过程。通常当你的系统用完物理内存后就会出现这种情况，系统将信息写入磁盘而不是释放一些内存。正如你猜测的磁盘比你的内存要慢得多。\u003C/span>\u003Cspan>&nbsp;\u003C/span>\u003Cbr>\u003Cspan>该选项默认情况下是启用的：\u003C/span>\u003Cspan>&nbsp;\u003C/span>\u003Cbr>\u003Cbr>\u003Cspan># sysctl vm.swappiness vm.swappiness = 60&nbsp;\u003C/span>\u003Cbr>\u003Cspan>运行以下命令关闭 swappiness：\u003C/span>\u003Cspan>&nbsp;\u003C/span>\u003Cbr>\u003Cbr>\u003Cspan># sysctl -w vm.swappiness=0&nbsp;\u003C/span>\u003Cbr>\u003C/p>\u003Cdiv align=\"center\">\u003Cbr>\u003C/div>\u003Cp>\u003Cbr>\u003Cbr>\u003Cfont size=\"4\">\u003Cb>5. 设置 MySQL 的最大连接数\u003C/b>\u003C/font>\u003Cspan>&nbsp;\u003C/span>\u003Cbr>\u003Cbr>\u003Cspan>max_connections 指令告诉你当前你的服务器允许多少并发连接。MySQL/MariaDB 服务器允许有 SUPER 权限的用户在最大连接之外再建立一个连接。只有当执行 MySQL 请求的时候才会建立连接，执行完成后会关闭连接并被新的连接取代。\u003C/span>\u003Cspan>&nbsp;\u003C/span>\u003Cbr>\u003Cspan>请记住，太多的连接会导致内存的使用量过高并且会锁住你的 MySQL 服务器。一般小网站需要 100-200 的连接数，而较大可能需要 500-800 甚至更多。这里的值很大程度上取决于你 MySQL/MariaDB 的使用情况。\u003C/span>\u003Cspan>&nbsp;\u003C/span>\u003Cbr>\u003Cspan>你可以动态地改变 max_connections 的值而无需重启MySQL服务器：\u003C/span>\u003Cspan>&nbsp;\u003C/span>\u003Cbr>\u003Cbr>\u003Cspan># mysql -u root -pmysql&gt; set global max_connections = 300;&nbsp;\u003C/span>\u003Cbr>\u003C/p>\u003Cdiv align=\"center\">\u003Cbr>\u003C/div>\u003Cp>\u003Cbr>\u003Cbr>\u003Cfont size=\"4\">\u003Cb>6. 配置 MySQL 的线程缓存数量\u003C/b>\u003C/font>\u003Cspan>&nbsp;\u003C/span>\u003Cbr>\u003Cbr>\u003Cspan>thread_cache_size 指令用来设置你服务器缓存的线程数量。当客户端断开连接时，如果当前线程数小于thread_cache_size，它的线程将被放入缓存中。下一个请求通过使用缓存池中的线程来完成。\u003C/span>\u003Cspan>&nbsp;\u003C/span>\u003Cbr>\u003Cspan>要提高服务器的性能，你可以设置 thread_cache_size 的值相对高一些。你可以通过以下方法来查看线程缓存命中率：\u003C/span>\u003Cspan>&nbsp;\u003C/span>\u003Cbr>\u003Cbr>\u003Cspan>mysql&gt; show status like 'Threads_created';mysql&gt; show status like 'Connections';&nbsp;\u003C/span>\u003Cbr>\u003Cspan>你可以用以下公式来计算线程池的命中率：\u003C/span>\u003Cspan>&nbsp;\u003C/span>\u003Cbr>\u003Cbr>\u003Cspan>100 - ((Threads_created / Connections) * 100)&nbsp;\u003C/span>\u003Cbr>\u003Cspan>如果你得到一个较低的数字，这意味着大多数 mysql 连接使用新的线程，而不是从缓存加载。在这种情况下，你需要增加thread_cache_size。\u003C/span>\u003Cspan>&nbsp;\u003C/span>\u003Cbr>\u003Cspan>这里有一个好处是可以动态地改变 thread_cache_size 而无需重启 MySQL 服务。你可以通过以下方式来实现：\u003C/span>\u003Cspan>&nbsp;\u003C/span>\u003Cbr>\u003Cbr>\u003Cspan>mysql&gt; set global thread_cache_size = 16;&nbsp;\u003C/span>\u003Cbr>\u003C/p>\u003Cdiv align=\"center\">\u003Cbr>\u003C/div>\u003Cp>\u003Cbr>\u003Cbr>\u003Cfont size=\"4\">\u003Cb>7. 禁用 MySQL 的 DNS 反向查询\u003C/b>\u003C/font>\u003Cspan>&nbsp;\u003C/span>\u003Cbr>\u003Cbr>\u003Cspan>默认情况下当新的连接出现时，MySQL/MariaDB 会进行 DNS 查询解析用户的 IP 地址/主机名。对于每个客户端连接，它的 IP 都会被解析为主机名。然后，主机名又被反解析为 IP 来验证两者是否一致。\u003C/span>\u003Cspan>&nbsp;\u003C/span>\u003Cbr>\u003Cspan>当 DNS 配置错误或服务器出现问题时，这很可能会导致延迟。这就是为什么要关闭 DNS 的反向查询的原因，你可以在你的配置文件中添加以下选项去设定：\u003C/span>\u003Cspan>&nbsp;\u003C/span>\u003Cbr>\u003Cbr>\u003Cspan>[mysqld]# Skip reverse DNS lookup of clientsskip-name-resolve&nbsp;\u003C/span>\u003Cbr>\u003Cspan>更改后你需要重启 MySQL 服务。\u003C/span>\u003Cspan>&nbsp;\u003C/span>\u003Cbr>\u003C/p>\u003Cdiv align=\"center\">\u003Cbr>\u003C/div>\u003Cp>\u003Cbr>\u003Cbr>\u003Cfont size=\"4\">\u003Cb>8. 配置 MySQL 的查询缓存容量\u003C/b>\u003C/font>\u003Cspan>&nbsp;\u003C/span>\u003Cbr>\u003Cbr>\u003Cspan>如果你有很多重复的查询并且数据不经常改变 – 请使用缓存查询。 人们常常不理解 query_cache_size的实际含义而将此值设置为 GB 级，这实际上会降低服务器的性能。\u003C/span>\u003Cspan>&nbsp;\u003C/span>\u003Cbr>\u003Cspan>背后的原因是，在更新过程中线程需要锁定缓存。通常设置为 200-300 MB应该足够了。如果你的网站比较小的，你可以尝试给 64M 并在以后及时去增加。\u003C/span>\u003Cspan>&nbsp;\u003C/span>\u003Cbr>\u003Cspan>在你的 MySQL 配置文件中添加以下设置：\u003C/span>\u003Cspan>&nbsp;\u003C/span>\u003Cbr>\u003Cbr>\u003Cspan>query_cache_type = 1query_cache_limit = 256Kquery_cache_min_res_unit = 2kquery_cache_size = 80M&nbsp;\u003C/span>\u003Cbr>\u003C/p>\u003Cdiv align=\"center\">\u003Cbr>\u003C/div>\u003Cp>\u003Cbr>\u003Cbr>\u003Cfont size=\"4\">\u003Cb>9. 配置临时表容量和内存表最大容量\u003C/b>\u003C/font>\u003Cspan>&nbsp;\u003C/span>\u003Cbr>\u003Cbr>\u003Cspan>tmp_table_size 和 max_heap_table_size 这两个变量的大小应该相同，它们可以让你避免磁盘写入。tmp_table_size 是内置内存表的最大空间。如果表的大小超出限值将会被转换为磁盘上的 MyISAM 表。\u003C/span>\u003Cspan>&nbsp;\u003C/span>\u003Cbr>\u003Cspan>这会影响数据库的性能。管理员通常建议在服务器上设置这两个值为每 GB 内存给 64M。\u003C/span>\u003Cspan>&nbsp;\u003C/span>\u003Cbr>\u003Cbr>\u003Cspan>[mysqld]tmp_table_size= 64Mmax_heap_table_size= 64M&nbsp;\u003C/span>\u003Cbr>\u003C/p>\u003Cdiv align=\"center\">\u003Cbr>\u003C/div>\u003Cp>\u003Cbr>\u003Cbr>\u003Cfont size=\"4\">\u003Cb>10. 启用 MySQL 慢查询日志\u003C/b>\u003C/font>\u003Cspan>&nbsp;\u003C/span>\u003Cbr>\u003Cbr>\u003Cspan>记录慢查询可以帮助你定位数据库中的问题并帮助你调试。这可以通过在你的 MySQL 配置文件中添加以下值来启用：\u003C/span>\u003Cspan>&nbsp;\u003C/span>\u003Cbr>\u003Cbr>\u003Cspan>slow-query-log = 1slow-query-log-file = /var/lib/mysql/mysql-slow.loglong_query_time = 1&nbsp;\u003C/span>\u003Cbr>\u003Cspan>第一个变量启用慢查询日志，第二个告诉 MySQL 实际的日志文件存储位置。使用 long_query_time 来定义完成 MySQL 查询多少用时算长。\u003C/span>\u003Cspan>&nbsp;\u003C/span>\u003Cbr>\u003C/p>\u003Cdiv align=\"center\">\u003Cbr>\u003C/div>\u003Cp>\u003Cbr>\u003Cbr>\u003Cfont size=\"4\">\u003Cb>11. 检查 MySQL 的空闲连接\u003C/b>\u003C/font>\u003Cspan>&nbsp;\u003C/span>\u003Cbr>\u003Cbr>\u003Cspan>空闲连接会消耗资源，可以的话应该被终止或者刷新。空闲连接是指处于 “sleep” 状态并且保持了很长一段时间的连接。你可以通过运行以下命令查看空闲连接：\u003C/span>\u003Cspan>&nbsp;\u003C/span>\u003Cbr>\u003Cbr>\u003Cspan># mysqladmin processlist -u root -p | grep “Sleep”&nbsp;\u003C/span>\u003Cbr>\u003Cspan>这会显示处于睡眠状态的进程列表。当代码使用持久连接到数据库时会出现这种情况。使用 PHP 调用 mysql_pconnect 可以打开这个连接，执行完查询之后，删除认证信息并保持连接为打开状态。这会导致每个线程的缓冲都被保存在内存中，直到该线程结束。\u003C/span>\u003Cspan>&nbsp;\u003C/span>\u003Cbr>\u003Cspan>首先你要做的就是检查代码问题并修复它。如果你不能访问正在运行的代码，你可以修改 wait_timeout变量。默认值是 28800 秒，而你可以安全地将其降低到 60 ：\u003C/span>\u003Cspan>&nbsp;\u003C/span>\u003Cbr>\u003Cbr>\u003Cspan>wait_timeout=60&nbsp;\u003C/span>\u003Cbr>\u003C/p>\u003Cdiv align=\"center\">\u003Cbr>\u003C/div>\u003Cp>\u003Cbr>\u003Cbr>\u003Cfont size=\"4\">\u003Cb>12. 为 MySQL 选择正确的文件系统\u003C/b>\u003C/font>\u003Cspan>&nbsp;\u003C/span>\u003Cbr>\u003Cbr>\u003Cspan>选择正确的文件系统对数据库至关重要。在这里你需要考虑的最重要的事情是 - 数据的完整性，性能和易管理性。\u003C/span>\u003Cspan>&nbsp;\u003C/span>\u003Cbr>\u003Cspan>按照 MariaDB 的建议，最好的文件系统是XFS、ext4 和 Btrfs。它们都是可以使用超大文件和大容量存储卷的企业级日志型文件系统。\u003C/span>\u003Cspan>&nbsp;\u003C/span>\u003Cbr>\u003Cspan>下面你可以找到一些关于这三个文件系统的有用信息：\u003C/span>\u003Cspan>&nbsp;\u003C/span>\u003Cbr>\u003C/p>\u003Ctable class=\"read_form layui-table\" cellspacing=\"0\" cellpadding=\"4\" align=\"center\">\u003Ctbody>\u003Ctr>\u003Ctd colspan=\"1\" rowspan=\"1\" width=\"2\">文件系统\u003C/td>\u003Ctd colspan=\"1\" rowspan=\"1\" width=\"2\">XFS\u003C/td>\u003Ctd colspan=\"1\" rowspan=\"1\" width=\"2\">Ext4\u003C/td>\u003Ctd colspan=\"1\" rowspan=\"1\" width=\"2\">Btrfs\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd colspan=\"1\" rowspan=\"1\" width=\"100%\">文件系统最大容量\u003C/td>\u003Ctd colspan=\"1\" rowspan=\"1\" width=\"100%\">8EB\u003C/td>\u003Ctd colspan=\"1\" rowspan=\"1\" width=\"100%\">1EB\u003C/td>\u003Ctd colspan=\"1\" rowspan=\"1\" width=\"100%\">16EB\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd colspan=\"1\" rowspan=\"1\" width=\"100%\">最大文件大小\u003C/td>\u003Ctd colspan=\"1\" rowspan=\"1\" width=\"100%\">8EB\u003C/td>\u003Ctd colspan=\"1\" rowspan=\"1\" width=\"100%\">16TB\u003C/td>\u003Ctd colspan=\"1\" rowspan=\"1\" width=\"100%\">16EB\u003C/td>\u003C/tr>\u003C/tbody>\u003C/table>\u003Cp>\u003Cspan>我们的这篇文章详细介绍了 Linux 文件系统的利与弊: Linux 文件系统解析。\u003C/span>\u003Cspan>&nbsp;\u003C/span>\u003Cbr>\u003C/p>\u003Cdiv align=\"center\">\u003Cbr>\u003C/div>\u003Cp>\u003Cbr>\u003Cbr>\u003Cfont size=\"4\">\u003Cb>13. 设置 MySQL 允许的最大数据包\u003C/b>\u003C/font>\u003Cspan>&nbsp;\u003C/span>\u003Cbr>\u003Cbr>\u003Cspan>MySQL 把数据拆分成包。通常一个包就是发送到客户端的一行数据。max_allowed_packet 变量定义了可以被发送的最大的包。\u003C/span>\u003Cspan>&nbsp;\u003C/span>\u003Cbr>\u003Cspan>此值设置得过低可能会导致查询速度变得非常慢，然后你会在 MySQL 的错误日志看到一个错误。建议将该值设置为最大包的大小。\u003C/span>\u003Cspan>&nbsp;\u003C/span>\u003Cbr>\u003C/p>\u003Cdiv align=\"center\">\u003Cbr>\u003C/div>\u003Cp>\u003Cbr>\u003Cbr>\u003Cfont size=\"4\">\u003Cb>14. 测试 MySQL 的性能优化\u003C/b>\u003C/font>\u003Cspan>&nbsp;\u003C/span>\u003Cbr>\u003Cbr>\u003Cspan>你应该定期检查 MySQL/MariaDB 的性能。这将帮助你了解资源的使用情况是否发生了改变或需要进行改进。\u003C/span>\u003Cspan>&nbsp;\u003C/span>\u003Cbr>\u003Cspan>有大量的测试工具可用，但我推荐你一个简单易用的。该工具被称为 mysqltuner。\u003C/span>\u003Cspan>&nbsp;\u003C/span>\u003Cbr>\u003Cspan>使用下面的命令下载并运行它：\u003C/span>\u003Cspan>&nbsp;\u003C/span>\u003Cbr>\u003Cbr>\u003Cspan># wget&nbsp;\u003C/span>\u003Ca href=\"https://github.com/major/MySQLTuner-perl/tarball/master#\" target=\"_blank\">https://github.com/major/MySQLTuner-perl/tarball/master#\u003C/a>\u003Cspan>&nbsp;tar xf master# cd major-MySQLTuner-perl-993bc18/# ./mysqltuner.pl&nbsp;\u003C/span>\u003Cbr>\u003Cspan>你将收到有关 MySQL 使用的详细报告和推荐提示。下面是默认 MariaDB 安装的输出样例：\u003C/span>\u003Cspan>&nbsp;\u003C/span>\u003Cbr>\u003Cspan>\u003C/span>\u003Cspan>\u003C/span>\u003Cbr>\u003Cspan>\u003Cspan>MySQL 性能优化\u003C/span>\u003C/span>\u003Cspan>&nbsp;\u003C/span>\u003Cbr>\u003C/p>\u003Cdiv align=\"center\">\u003Cbr>\u003C/div>\u003Cp>\u003Cbr>\u003Cbr>\u003Cfont size=\"4\">\u003Cb>15. 优化和修复 MySQL 数据库\u003C/b>\u003C/font>\u003Cspan>&nbsp;\u003C/span>\u003Cbr>\u003Cbr>\u003Cspan>有时候 MySQL/MariaDB 数据库中的表很容易崩溃，尤其是服务器意外关机、文件系统突然崩溃或复制过程中仍然访问数据库。幸运的是，有一个称为 'mysqlcheck' 的免费开源工具，它会自动检查、修复和优化 Linux 中数据库的所有表。\u003C/span>\u003Cspan>&nbsp;\u003C/span>\u003Cbr>\u003Cbr>\u003Cspan># mysqlcheck -u root -p --auto-repair --check --optimize --all-databases# mysqlcheck -u root -p --auto-repair --check --optimize databasename&nbsp;\u003C/span>\u003Cbr>\u003Cbr>\u003C/p>","MySQL 是一个强大的开源关系数据库管理系统（简称 RDBMS）。它发布于 1995 年（20年前）。它采用结构化查询语言（SQL），这可能是数据库内容管理中最流行的选择。最新的 MySQL 版本是 5.6.25，于 2015 年 5 月 29 日发布。\n\n \n\n关于 MySQL 一个有趣的事实是它的名字来自于 Michael Widenius（MySQL 的创始人）的女儿“ My”。尽管有许多关于 MySQL 有趣的传闻，不过本文主要是向你展示一些有用的实践，以帮助你管理你的 MySQL 服务器。\n\n \n\n2009 年 4 月，MySQL 被 Oracle 收购。其结果是MySQL 社区分裂，创建了一个叫 MariaDB 的分支 。创建该分支的主要原因是为了保持这个项目可以在 GPL 下的自由。\n\n \n\n今天，MySQL 和 MariaDB 是用于类似 WordPress、Joomla、Magento 和其他 web 应用程序的最流行的 RDMS 之一（如果不是最多的）。\n\n \n\n这篇文章将告诉你一些基本的，但非常有用的关于如何优化 MySQL/MariaDB 性能的技巧。注意，本文假定您已经安装了 MySQL 或 MariaDB。如果你仍然不知道如何在系统上安装它们，你可以按照以下说明去安装：\n\n \n\n- 在 RHEL/CentOS 7 上安装 LAMP\n- 在 Fedora 22 上安装 LAMP\n- 在 Ubuntu 15.04 安装 LAMP\n- 在 Debian 8 上安装 MariaDB\n- 在 Gentoo Linux 上安装 MariaDB\n- 在 Arch Linux 上安装 MariaDB\n\n**重要提示**： 在开始之前，不要盲目的接受这些建议。每个 MySQL 设置都是不同的，在进行任何更改之前需要慎重考虑。\n\n \n\n你需要明白这些：\n\n \n\n- MySQL/MariaDB 配置文件位于 /etc/my.cnf。 每次更改此文件后你需要重启 MySQL 服务，以使更改生效。\n- 这篇文章使用 MySQL 5.6 版本。\n\n**1. 启用 InnoDB 的每张表一个数据文件设置**\n\n \n\n首先，有一个重要的解释， InnoDB 是一个存储引擎。MySQL 和 MariaDB 使用 InnoDB 作为默认存储引擎。以前，MySQL 使用系统表空间来保存数据库中的表和索引。这意味着服务器唯一的目的就是数据库处理，它们的存储盘不用于其它目的。\n\n \n\nInnoDB 提供了更灵活的方式，它把每个数据库的信息保存在一个 .ibd 数据文件中。每个 .idb 文件代表它自己的表空间。通过这样的方式可以更快地完成类似 “TRUNCATE” 的数据库操作，当删除或截断一个数据库表时，你也可以回收未使用的空间。\n\n \n\n这样配置的另一个好处是你可以将某些数据库表放在一个单独的存储设备。这可以大大提升你磁盘的 I/O 负载。\n\n \n\nMySQL 5.6及以上的版本默认启用 innodb_file_per_table。你可以在 /etc/my.cnf 文件中看到。该指令看起来是这样的：\n\n \n\ninnodb_file_per_table=1 \n\n**2. 将 MySQL 数据库数据存储到独立分区上**\n\n \n\n**注意**：此设置只在 MySQL 上有效, 在 MariaDB 上无效。\n\n \n\n有时候操作系统的读/写会降低你 MySQL 服务器的性能，尤其是如果操作系统和数据库的数据位于同一块磁盘上。因此，我建议你使用单独的磁盘（最好是 SSD）用于 MySQL 服务。\n\n \n\n要完成这步，你需要将新的磁盘连接到你的计算机/服务器上。对于这篇文章，我假定磁盘挂在到 /dev/sdb。\n\n \n\n**下一步是准备新的分区：**\n\n \n\n# fdisk /dev/sdb \n\n现在按 “N” 来创建新的分区。接着按 “P”，使其创建为主分区。在此之后，从 1-4 设置分区号。之后，你可以选择分区大小。这里按 enter。在下一步，你需要配置分区的大小。\n\n \n\n如果你希望使用全部的磁盘，再按一次 enter。否则，你可以手动设置新分区的大小。准备就绪后按 “w” 保存更改。现在，我们需要为我们的新分区创建一个文件系统。这可以用下面命令轻松地完成：\n\n \n\n# mkfs.ext4 /dev/sdb1 \n\n现在我们会挂载新分区到一个目录。我在根目录下创建了一个名为 “ssd” 的目录：\n\n \n\n# mkdir /ssd/ \n\n挂载新分区到刚才创建的目录下：\n\n \n\n# mount /dev/sdb1  /ssd/ \n\n你可以在 /etc/fstab 文件中添加如下行设置为开机自动挂载：\n\n \n\n/dev/sdb1 /ssd ext3 defaults 0 0 \n\n**现在我们将 MySQL 移动到新磁盘中**\n\n \n\n首先停止 MySQL 服务：\n\n \n\n# service mysqld stop \n\n我建议你同时停止 Apache/nginx，以防止任何试图写入数据库的操作：\n\n \n\n# service httpd stop# service nginx stop \n\n现在复制整个 MySQL 目录到新分区中:\n\n \n\n# cp /var/lib/mysql /ssd/ -Rp \n\n这可能需要一段时间，具体取决于你的 MySQL 数据库的大小。一旦这个过程完成后重命名 MySQL 目录：\n\n \n\n# mv /var/lib/mysql /var/lib/mysql-backup \n\n然后创建一个符号链接：\n\n \n\n# ln -s /ssd/mysql /var/lib/mysql \n\n现在启动你的 MySQL 和 web 服务：\n\n \n\n# service mysqld start# service httpd start# service nginx start \n\n以后你的数据库将使用新的磁盘访问。\n\n \n\n**3. 优化使用 InnoDB 的缓冲池**\n\n \n\nInnoDB 引擎在内存中有一个缓冲池用于缓存数据和索引。这当然有助于你更快地执行 MySQL/MariaDB 查询语句。选择合适的内存大小需要一些重要的决策并对系统的内存消耗有较多的认识。\n\n \n\n下面是你需要考虑的:\n\n \n\n- 其它的进程需要消耗多少内存。这包括你的系统进程，页表，套接字缓冲。\n- 你的服务器是否专门用于 MySQL 还是你运行着其它非常消耗内存的服务。\n\n在一个专用的机器上，你可能会把 60-70％ 的内存分配给 innodb_buffer_pool_size。如果你打算在一个机器上运行更多的服务，你应该重新考虑专门用于 innodb_buffer_pool_size 的内存大小。\n\n \n\n你需要设置 my.cnf 中的此项:\n\n \n\ninnodb_buffer_pool_size \n\n**4. 在 MySQL 中避免使用 Swappiness**\n\n \n\n“交换”是一个当系统移动部分内存到一个称为 “交换空间” 的特殊磁盘空间时的过程。通常当你的系统用完物理内存后就会出现这种情况，系统将信息写入磁盘而不是释放一些内存。正如你猜测的磁盘比你的内存要慢得多。\n\n \n\n该选项默认情况下是启用的：\n\n \n\n# sysctl vm.swappiness vm.swappiness = 60 \n\n运行以下命令关闭 swappiness：\n\n \n\n# sysctl -w vm.swappiness=0 \n\n**5. 设置 MySQL 的最大连接数**\n\n \n\nmax_connections 指令告诉你当前你的服务器允许多少并发连接。MySQL/MariaDB 服务器允许有 SUPER 权限的用户在最大连接之外再建立一个连接。只有当执行 MySQL 请求的时候才会建立连接，执行完成后会关闭连接并被新的连接取代。\n\n \n\n请记住，太多的连接会导致内存的使用量过高并且会锁住你的 MySQL 服务器。一般小网站需要 100-200 的连接数，而较大可能需要 500-800 甚至更多。这里的值很大程度上取决于你 MySQL/MariaDB 的使用情况。\n\n \n\n你可以动态地改变 max_connections 的值而无需重启MySQL服务器：\n\n \n\n# mysql -u root -pmysql> set global max_connections = 300; \n\n**6. 配置 MySQL 的线程缓存数量**\n\n \n\nthread_cache_size 指令用来设置你服务器缓存的线程数量。当客户端断开连接时，如果当前线程数小于thread_cache_size，它的线程将被放入缓存中。下一个请求通过使用缓存池中的线程来完成。\n\n \n\n要提高服务器的性能，你可以设置 thread_cache_size 的值相对高一些。你可以通过以下方法来查看线程缓存命中率：\n\n \n\nmysql> show status like 'Threads_created';mysql> show status like 'Connections'; \n\n你可以用以下公式来计算线程池的命中率：\n\n \n\n100 - ((Threads_created / Connections) * 100) \n\n如果你得到一个较低的数字，这意味着大多数 mysql 连接使用新的线程，而不是从缓存加载。在这种情况下，你需要增加thread_cache_size。\n\n \n\n这里有一个好处是可以动态地改变 thread_cache_size 而无需重启 MySQL 服务。你可以通过以下方式来实现：\n\n \n\nmysql> set global thread_cache_size = 16; \n\n**7. 禁用 MySQL 的 DNS 反向查询**\n\n \n\n默认情况下当新的连接出现时，MySQL/MariaDB 会进行 DNS 查询解析用户的 IP 地址/主机名。对于每个客户端连接，它的 IP 都会被解析为主机名。然后，主机名又被反解析为 IP 来验证两者是否一致。\n\n \n\n当 DNS 配置错误或服务器出现问题时，这很可能会导致延迟。这就是为什么要关闭 DNS 的反向查询的原因，你可以在你的配置文件中添加以下选项去设定：\n\n \n\n[mysqld]# Skip reverse DNS lookup of clientsskip-name-resolve \n\n更改后你需要重启 MySQL 服务。\n\n \n\n**8. 配置 MySQL 的查询缓存容量**\n\n \n\n如果你有很多重复的查询并且数据不经常改变 – 请使用缓存查询。 人们常常不理解 query_cache_size的实际含义而将此值设置为 GB 级，这实际上会降低服务器的性能。\n\n \n\n背后的原因是，在更新过程中线程需要锁定缓存。通常设置为 200-300 MB应该足够了。如果你的网站比较小的，你可以尝试给 64M 并在以后及时去增加。\n\n \n\n在你的 MySQL 配置文件中添加以下设置：\n\n \n\nquery_cache_type = 1query_cache_limit = 256Kquery_cache_min_res_unit = 2kquery_cache_size = 80M \n\n**9. 配置临时表容量和内存表最大容量**\n\n \n\ntmp_table_size 和 max_heap_table_size 这两个变量的大小应该相同，它们可以让你避免磁盘写入。tmp_table_size 是内置内存表的最大空间。如果表的大小超出限值将会被转换为磁盘上的 MyISAM 表。\n\n \n\n这会影响数据库的性能。管理员通常建议在服务器上设置这两个值为每 GB 内存给 64M。\n\n \n\n[mysqld]tmp_table_size= 64Mmax_heap_table_size= 64M \n\n**10. 启用 MySQL 慢查询日志**\n\n \n\n记录慢查询可以帮助你定位数据库中的问题并帮助你调试。这可以通过在你的 MySQL 配置文件中添加以下值来启用：\n\n \n\nslow-query-log = 1slow-query-log-file = /var/lib/mysql/mysql-slow.loglong_query_time = 1 \n\n第一个变量启用慢查询日志，第二个告诉 MySQL 实际的日志文件存储位置。使用 long_query_time 来定义完成 MySQL 查询多少用时算长。\n\n \n\n**11. 检查 MySQL 的空闲连接**\n\n \n\n空闲连接会消耗资源，可以的话应该被终止或者刷新。空闲连接是指处于 “sleep” 状态并且保持了很长一段时间的连接。你可以通过运行以下命令查看空闲连接：\n\n \n\n# mysqladmin processlist -u root -p | grep “Sleep” \n\n这会显示处于睡眠状态的进程列表。当代码使用持久连接到数据库时会出现这种情况。使用 PHP 调用 mysql_pconnect 可以打开这个连接，执行完查询之后，删除认证信息并保持连接为打开状态。这会导致每个线程的缓冲都被保存在内存中，直到该线程结束。\n\n \n\n首先你要做的就是检查代码问题并修复它。如果你不能访问正在运行的代码，你可以修改 wait_timeout变量。默认值是 28800 秒，而你可以安全地将其降低到 60 ：\n\n \n\nwait_timeout=60 \n\n**12. 为 MySQL 选择正确的文件系统**\n\n \n\n选择正确的文件系统对数据库至关重要。在这里你需要考虑的最重要的事情是 - 数据的完整性，性能和易管理性。\n\n \n\n按照 MariaDB 的建议，最好的文件系统是XFS、ext4 和 Btrfs。它们都是可以使用超大文件和大容量存储卷的企业级日志型文件系统。\n\n \n\n下面你可以找到一些关于这三个文件系统的有用信息：\n\n \n\n文件系统XFSExt4Btrfs文件系统最大容量8EB1EB16EB最大文件大小8EB16TB16EB\n\n我们的这篇文章详细介绍了 Linux 文件系统的利与弊: Linux 文件系统解析。\n\n \n\n**13. 设置 MySQL 允许的最大数据包**\n\n \n\nMySQL 把数据拆分成包。通常一个包就是发送到客户端的一行数据。max_allowed_packet 变量定义了可以被发送的最大的包。\n\n \n\n此值设置得过低可能会导致查询速度变得非常慢，然后你会在 MySQL 的错误日志看到一个错误。建议将该值设置为最大包的大小。\n\n \n\n**14. 测试 MySQL 的性能优化**\n\n \n\n你应该定期检查 MySQL/MariaDB 的性能。这将帮助你了解资源的使用情况是否发生了改变或需要进行改进。\n\n \n\n有大量的测试工具可用，但我推荐你一个简单易用的。该工具被称为 mysqltuner。\n\n \n\n使用下面的命令下载并运行它：\n\n \n\n# wget \n[https://github.com/major/MySQLTuner-perl/tarball/master#](https://github.com/major/MySQLTuner-perl/tarball/master#)\n tar xf master# cd major-MySQLTuner-perl-993bc18/# ./mysqltuner.pl \n\n你将收到有关 MySQL 使用的详细报告和推荐提示。下面是默认 MariaDB 安装的输出样例：\n\n \n\nMySQL 性能优化\n\n \n\n**15. 优化和修复 MySQL 数据库**\n\n \n\n有时候 MySQL/MariaDB 数据库中的表很容易崩溃，尤其是服务器意外关机、文件系统突然崩溃或复制过程中仍然访问数据库。幸运的是，有一个称为 'mysqlcheck' 的免费开源工具，它会自动检查、修复和优化 Linux 中数据库的所有表。\n\n \n\n# mysqlcheck -u root -p --auto-repair --check --optimize --all-databases# mysqlcheck -u root -p --auto-repair --check --optimize databasename ","/article/46",5118,"2016-06-27 17:13:51","2018-10-18 17:15:02",[156,157,158],{"id":39,"name":81,"url":82},{"id":44,"name":23,"url":59},{"id":145,"name":146,"url":151},{"create_time":6,"description":6,"id":44,"image_url":6,"index_template":52,"is_cover":53,"is_menu":53,"keywords":6,"list_template":54,"model_code":55,"model_id":56,"model_name":57,"name":23,"parent_id":39,"seo_description":6,"seo_keywords":6,"seo_title":6,"show_template":58,"sort":53,"subtitle":6,"update_time":6,"url":59},{"title":161,"url":162},"http+svn 配置安装部署","/article/47",{"title":164,"url":165},"MySQL高可用，数据之船不再翻 ","/article/45",[167,168,169,170],{"create_time":6,"description":6,"id":44,"image_url":6,"index_template":52,"is_cover":53,"is_menu":53,"keywords":6,"list_template":54,"model_code":55,"model_id":56,"model_name":57,"name":23,"parent_id":39,"seo_description":6,"seo_keywords":6,"seo_title":6,"show_template":58,"sort":53,"subtitle":6,"update_time":6,"url":59},{"create_time":6,"description":6,"id":45,"image_url":6,"index_template":52,"is_cover":53,"is_menu":53,"keywords":6,"list_template":54,"model_code":55,"model_id":56,"model_name":57,"name":61,"parent_id":39,"seo_description":6,"seo_keywords":6,"seo_title":6,"show_template":58,"sort":56,"subtitle":6,"update_time":6,"url":62},{"create_time":6,"description":6,"id":46,"image_url":6,"index_template":52,"is_cover":53,"is_menu":53,"keywords":6,"list_template":54,"model_code":55,"model_id":56,"model_name":57,"name":64,"parent_id":39,"seo_description":6,"seo_keywords":6,"seo_title":6,"show_template":58,"sort":65,"subtitle":6,"update_time":6,"url":66},{"create_time":6,"description":6,"id":47,"image_url":6,"index_template":52,"is_cover":53,"is_menu":53,"keywords":6,"list_template":54,"model_code":55,"model_id":56,"model_name":57,"name":68,"parent_id":39,"seo_description":6,"seo_keywords":6,"seo_title":6,"show_template":58,"sort":69,"subtitle":6,"update_time":6,"url":70},{"description":148,"keywords":147,"title":146},[173,182,191,200,209,218,227,236,245,253],{"id":174,"category_id":44,"title":175,"keywords":176,"description":177,"image_url":6,"url":178,"hits":179,"is_recommend":73,"is_top":73,"create_time":180,"update_time":181},101,"开启 HTTPS 并获得 ssllabs 满分的过程","开启,获得,满分,过程","准备工作确保你要申请证书的域名都解析到了这台服务器上，且能直接通过域名访问。使用官网推荐的CertBot获取证书。在CertBot官网选择一下环境(比如我选Nginx on Ubuntu 17.04)就可以看到入门教程了。安装CertBot12345apt-get updateapt-get install software-properties-commonadd-apt-repository ppa:certbot/certbotapt-get updateapt-get","/article/101",18546,"2019-11-26 16:12:11","2019-11-26 16:23:16",{"id":183,"category_id":44,"title":184,"keywords":185,"description":186,"image_url":6,"url":187,"hits":188,"is_recommend":73,"is_top":73,"create_time":189,"update_time":190},113,"在CentOS 7中添加命令自动补全功能","命令自动补全,centos","在CentOS 7中，默认情况下并不会安装命令补全包，需要手动安装才能使用命令补全功能。以下是在CentOS 7中安装命令补全包的方法：1. bash-completion：这是一个针对Bash shell的命令补全软件包，可以提供对系统命令、用户自定义命令和文件路径的自动补全功能。可以通过以下命令安装：```sudo yum install bash-completion```安装完成后，需要在/etc/profile配置文件中添加以下内容：```if [ -f /etc/bash_compl","/article/113",14948,"2023-05-16 10:54:01","2023-05-16 10:57:28",{"id":192,"category_id":44,"title":193,"keywords":194,"description":195,"image_url":6,"url":196,"hits":197,"is_recommend":53,"is_top":73,"create_time":198,"update_time":199},94,"Centos7 安装 openvas ","openvas,开放式漏洞评估系统，installing openvas centos-7","一、描述OpenVAS，即开放式漏洞评估系统，是一个用于评估目标漏洞的杰出框架。功能十分强大，最重要的是，它是“开源”的——就是免费的意思啦～它与著名的Nessus“本是同根生”，在Nessus商业化之后仍然坚持开源，号称“当前最好用的开源漏洞扫描工具”。最新版的Kali Linux(kali 3.0)不再自带OpenVAS了，所以我们要自己部署OpenVAS漏洞检测系统。其核心部件是一个服务器，包括一套网络漏洞测试程序，可以检测远程系统和应用程序中的安全问题。但是它的最常用用途是检测目标网络或","/article/94",14690,"2019-01-14 17:43:42","2019-01-14 18:16:36",{"id":201,"category_id":44,"title":202,"keywords":203,"description":204,"image_url":6,"url":205,"hits":206,"is_recommend":73,"is_top":73,"create_time":207,"update_time":208},99,"Centos7 利用iptables防止nmap工具防端口扫描","iptables","一、Nmap介绍       Nmap（NetworkMapper）是一款开放源代码的网络探测和安全审核工具。它用于快速扫描一个网络和一台主机开放的端口，还能使用TCP/IP协议栈特征探测远程主机的操作系统类型。nmap支持很多扫描技术，例如：UDP、TCPconnect()、TCPSYN(半开扫描)、ftp代理(bounce攻击)、反向标志、ICMP、FIN、ACK扫描、圣诞树(XmasTree)、SYN扫描和null扫描。Nmap最初是用于Unix系统","/article/99",14415,"2019-07-09 21:27:00","2019-07-09 21:57:53",{"id":210,"category_id":46,"title":211,"keywords":212,"description":213,"image_url":6,"url":214,"hits":215,"is_recommend":73,"is_top":73,"create_time":216,"update_time":217},61,"Docker 推荐的启动方式","推荐,启动,方式","# cat DockerfileFROM openjdk:8-alpineWORKDIR /ADD ./target/*.jar app.jarEXPOSE 9999COPY docker-entrypoint.sh /RUN chmod +x /docker-entrypoint.shENTRYPOINT [“/docker-entrypoint.sh”]CMD [“java”,”-server”,”-Duser.timezone=GMT+08″,”-jar”,”/app.jar”]# cat","/article/61",14347,"2018-10-22 13:55:47","2018-10-22 13:56:10",{"id":219,"category_id":44,"title":220,"keywords":221,"description":222,"image_url":6,"url":223,"hits":224,"is_recommend":73,"is_top":73,"create_time":225,"update_time":226},107,"Acme.sh 给 SSL 证书自动续期失败的解决方法","HTTP/1.1 200 OK,Server: Bayou Tech Web Srv 1.0,Content-Encoding: none,Content-Length: 5,Content-Type","一、Acme.sh 自动续期失败的症状问题描述如下，续期的时候，提示如下错误：root@dc:~# \"/data/acme.sh\"/acme.sh --cron --home \"/data/acme.sh\" &gt; /dev/null[Sun Nov 10 23:52:17 CST 2020] Error, can not get domain token entry example.com[Sun Nov 10 23:52:17 CST 2020] Please check log file","/article/107",12618,"2021-09-03 10:44:18","2021-09-03 10:46:23",{"id":228,"category_id":44,"title":229,"keywords":230,"description":231,"image_url":6,"url":232,"hits":233,"is_recommend":53,"is_top":73,"create_time":234,"update_time":235},93,"ELK+Filebeat+Kafka+ZooKeeper 构建海量日志分析平台","Filebeat,Kafka","一、说明1.Filebeat是一个日志文件托运工具，在你的服务器上安装客户端后，filebeat会监控日志目录或者指定的日志文件，追踪读取这些文件（追踪文件的变化，不停的读）2.Kafka是一种高吞吐量的分布式发布订阅消息系统，它可以处理消费者规模的网站中的所有动作流数据3.Logstash是一根具备实时数据传输能力的管道，负责将数据信息从管道的输入端传输到管道的输出端；与此同时这根管道还可以让你根据自己的需求在中间加上滤网，Logstash提供里很多功能强大的滤网以满足你的各种应用场景4.El","/article/93",12190,"2018-12-24 16:40:08","2018-12-26 11:53:38",{"id":237,"category_id":46,"title":238,"keywords":239,"description":240,"image_url":6,"url":241,"hits":242,"is_recommend":53,"is_top":73,"create_time":243,"update_time":244},81,"kubernetes 1.12.1 高可用安装之部署Dashboard","安装Dashboard","创建Dashboard需要CoreDNS部署成功之后再安装Dashboard。[root@master01 ~]# wget https://zhl123.com/download/k8s/Dashboard.tgz[root@master01 ~]# tar xf Dashboard.tgz[root@master01 ~]# kubectl create -f Dashboard/[root@master01 Dashboard]# kubectl get svc -n kube-syste","/article/81",12037,"2018-10-26 09:54:41","2018-10-26 16:59:19",{"id":246,"category_id":44,"title":247,"keywords":6,"description":248,"image_url":6,"url":249,"hits":250,"is_recommend":73,"is_top":73,"create_time":251,"update_time":252},100,"用 Nginx 给 Cookie 增加 Secure 和 HttpOnly","在 nginx 的 location 中配置12# 只支持 proxy 模式下设置，SameSite 不需要可删除，如果想更安全可以把 SameSite 设置为 Strictproxy_cookie_path / \"/; httponly; secure; SameSite=Lax\";示例1234567891011121314151617181920212223242526server {    listen 443 ssl http2;    server_name www.zhl123.cn","/article/100",11848,"2019-11-26 16:10:57","2019-11-26 16:23:45",{"id":254,"category_id":44,"title":255,"keywords":256,"description":257,"image_url":6,"url":258,"hits":259,"is_recommend":73,"is_top":73,"create_time":260,"update_time":261},41,"Tomcat 安全配置与性能优化","tomcat，性能优化","1. JVM&nbsp;1.1. 使用 Server JRE 替代JDK。&nbsp;服务器上不要安装JDK，请使用 Server JRE. 服务器上根本不需要编译器，代码应该在Release服务器上完成编译打包工作。&nbsp;理由：一旦服务器被控制，可以防止在其服务器上编译其他恶意代码并植入到你的程序中。&nbsp;1.2. JAVA_OPTS&nbsp;export JAVA_OPTS=\"-server -Xms512m -Xmx4096m &nbsp;-XX:PermSize=64M -","/article/41",11623,"2016-09-01 17:06:36","2018-10-18 17:06:58",[263,271,279,287,295,303,311,319,328,337],{"id":264,"category_id":40,"title":265,"keywords":6,"description":266,"image_url":6,"url":267,"hits":268,"is_recommend":73,"is_top":73,"create_time":269,"update_time":270},123,"Agent Skill 精选集：最值得收藏的 Agent Skills Top 10","如果你正在用 Claude Code 或 Codex，一定对&nbsp;Agent Skills&nbsp;不陌生。通过安装&nbsp;Agent Skills，你可以让这些 AI 助手变得更强——不用每次都解释你的需求，它们直接就知道该怎么做。最近有人在 GitHub 上做了一个采样调查，统计了哪些 Skills 的质量最佳和最受欢迎。我整理了这份&nbsp;Top 10 榜单，加上使用场景和适合人群，帮你快速找到最有用的那几个。Top 10 最受欢迎的 Agent Skills1. Skil","/article/123",270,"2026-01-19 18:49:12","2026-01-19 18:52:01",{"id":272,"category_id":44,"title":273,"keywords":6,"description":274,"image_url":6,"url":275,"hits":276,"is_recommend":73,"is_top":73,"create_time":277,"update_time":278},122,"Nginx性能调优18条黄金法则：支撑10万并发的配置模板","一、概述1.1 背景介绍说实话，Nginx调优这事儿我踩过无数坑。记得2019年双11，我们电商平台流量暴涨，Nginx直接扛不住了，QPS从平时的2万飙升到8万，响应时间从50ms飙到了2秒，最后还是靠临时加机器扛过去的。那次事故之后，我花了大半年时间专门研究Nginx的性能极限，总结出了这20条黄金法则。Nginx作为目前最流行的Web服务器和反向代理，官方数据显示单机可以轻松处理10万+的并发连接。但实际生产环境中，很多同学拿到默认配置就直接上了，结果发现连1万并发都扛不住。问题不在Ngi","/article/122",337,"2026-01-12 11:11:50","2026-01-12 11:12:28",{"id":280,"category_id":46,"title":281,"keywords":6,"description":282,"image_url":6,"url":283,"hits":284,"is_recommend":73,"is_top":73,"create_time":285,"update_time":286},121,"Docker 镜像优化与安全扫描：将镜像体积压缩 70%","1. 适用场景 & 前置条件项目要求适用场景容器化应用镜像体积过大（> 500MB），构建时间长（> 10分钟），存在安全漏洞（CVE高危）OSRHEL/CentOS 7.9+ 或 Ubuntu 20.04+内核Linux Kernel 3.10+软件版本Docker 20.10+ 或 Podman 3.0+，Trivy 0.40+（安全扫描工具）资源规格2C4G（最小）/ 4C8G（推荐），磁盘 50GB+（存储镜像与缓存）网络可访问 Docker Hub/阿里云镜像仓库（","/article/121",309,"2026-01-06 11:54:35","2026-01-06 12:01:59",{"id":288,"category_id":44,"title":289,"keywords":6,"description":290,"image_url":6,"url":291,"hits":292,"is_recommend":73,"is_top":73,"create_time":293,"update_time":294},120,"用 Prometheus Recording Rules 把告警噪声砍掉 70%(二)","五、故障排查和监控5.1 故障排查◆ 5.1.1 日志查看# 查看 Prometheus 日志中的规则评估错误journalctl -u prometheus | grep -i&nbsp;\"rule\"&nbsp;|&nbsp;tail&nbsp;-50# 查看规则评估耗时curl -s http://localhost:9090/api/v1/rules | jq&nbsp;'.data.groups[].rules[] | select(.health != \"ok\")'# Kubernet","/article/120",282,"2026-01-06 11:53:50","2026-01-06 11:54:33",{"id":296,"category_id":44,"title":297,"keywords":6,"description":298,"image_url":6,"url":299,"hits":300,"is_recommend":73,"is_top":73,"create_time":301,"update_time":302},119,"用 Prometheus Recording Rules 把告警噪声砍掉 70%(一)","一、概述1.1 背景介绍在大规模微服务架构下，Prometheus 告警系统往往会陷入一个尴尬的境地：告警太多，运维团队开始选择性忽略；告警太少，真正的故障又可能漏掉。我在某电商平台负责监控体系建设时，团队每天要处理超过 2000 条告警，其中 70% 以上是重复的、关联的或者短暂抖动产生的噪声。Recording Rules 是 Prometheus 提供的预计算机制，可以将复杂的查询表达式预先计算并存储为新的时间序列。通过合理设计 Recording Rules，我们不仅能显著降低 Prom","/article/119",301,"2026-01-06 11:51:58","2026-01-06 11:53:45",{"id":304,"category_id":44,"title":305,"keywords":6,"description":306,"image_url":6,"url":307,"hits":308,"is_recommend":73,"is_top":73,"create_time":309,"update_time":310},118,"GitOps 落地实践：ArgoCD + Kustomize 实现声明式基础设施管理(二)","四、最佳实践和注意事项4.1 最佳实践4.1.1 性能优化优化点一：减少 Git 轮询频率# argocd-cm ConfigMapapiVersion:&nbsp;v1kind:&nbsp;ConfigMapmetadata:&nbsp;&nbsp;name:&nbsp;argocd-cm&nbsp;&nbsp;namespace:&nbsp;argocddata:&nbsp;&nbsp;timeout.reconciliation:&nbsp;300s&nbsp;&nbsp;# 默认 180","/article/118",305,"2026-01-06 11:49:00","2026-01-06 11:49:34",{"id":312,"category_id":44,"title":313,"keywords":6,"description":314,"image_url":6,"url":315,"hits":316,"is_recommend":73,"is_top":73,"create_time":317,"update_time":318},117,"GitOps 落地实践：ArgoCD + Kustomize 实现声明式基础设施管理(一)","一、概述1.1 背景介绍GitOps 作为云原生时代的运维范式，将 Git 作为基础设施和应用配置的单一事实来源，通过声明式配置和自动化同步机制，实现了配置管理的版本控制、审计追溯和快速回滚。ArgoCD 作为 CNCF 毕业项目，提供了完整的 GitOps 工作流，支持多集群管理、RBAC 权限控制、SSO 集成等企业级特性。结合 Kustomize 的配置管理能力，能够优雅地解决多环境配置差异、敏感信息管理、配置复用等问题。在传统的 CI/CD 流程中，往往由 CI 工具直接执行 kubec","/article/117",310,"2026-01-06 11:45:03","2026-01-06 11:48:56",{"id":320,"category_id":40,"title":321,"keywords":322,"description":323,"image_url":6,"url":324,"hits":325,"is_recommend":73,"is_top":73,"create_time":326,"update_time":327},116,"运维部门年度2025工作总结与2026工作规划应该如何写？","运维部门年度2025工作总结,2026工作规划","2025年，运维部在公司“数字化转型深化”战略引领下，以“稳定为基、效率为纲、安全为盾、创新为翼”为核心导向，全面支撑核心业务系统运行、推动技术架构迭代、强化团队能力建设。 全年实现核心业务系统可用性99.985%，较2024年提升0.02个百分点；故障平均恢复时间（MTTR）从42分钟压缩至29分钟，下降31%；云资源成本同比降低16.8%，自动化运维覆盖率从65%提升至83%，未发生重大生产安全事故，圆满完成年度目标。现将全年工作及2026年规划汇报如下：2025年核心工作成果（数","/article/116",297,"2026-01-06 11:20:58","2026-01-06 11:44:04",{"id":329,"category_id":40,"title":330,"keywords":331,"description":332,"image_url":6,"url":333,"hits":334,"is_recommend":73,"is_top":73,"create_time":335,"update_time":336},115,"Kubernetes 100个常用命令","100 个 Kubectl 命令","这篇文章是关于使用 Kubectl 进行 Kubernetes 诊断的指南。列出了 100 个 Kubectl 命令，这些命令对于诊断 Kubernetes 集群中的问题非常有用。这些问题包括但不限于：•&nbsp;集群信息•&nbsp;Pod 诊断•&nbsp;服务诊断•&nbsp;部署诊断•&nbsp;网络诊断•&nbsp;持久卷和持久卷声明诊断•&nbsp;资源使用情况•&nbsp;安全和授权•&nbsp;节点故障排除•&nbsp;其他诊断命令：文章还提到了许多其他命令，如资源扩展和自动扩","/article/115",3642,"2023-11-02 14:09:30","2023-11-02 14:10:05",{"id":183,"category_id":44,"title":184,"keywords":185,"description":186,"image_url":6,"url":187,"hits":188,"is_recommend":73,"is_top":73,"create_time":189,"update_time":190},1784716029134]