[{"data":1,"prerenderedAt":337},["ShallowReactive",2],{"article-103":3,"site-data":57,"article-show-hot-103":171,"article-show-new-103":261},{"article":4,"breadcrumb":17,"category":26,"next":34,"prev":37,"second_categorys":40,"seo":56},{"id":5,"category_id":6,"title":7,"keywords":8,"description":9,"image_url":8,"content":10,"content_md":11,"url":12,"hits":13,"is_recommend":14,"is_top":14,"create_time":15,"update_time":16},103,17,"在线修改大表结构pt-online-schema-change","","使用场景在线数据库的维护中，总会涉及到研发修改表结构的情况，修改一些小表影响很小，而修改大表时，往往影响业务的正常运转，如表数据量超过500W，1000W，甚至过亿时在线修改大表的可能影响在线修改大表的表结构执行时间往往不可预估，一般时间较长由于修改表结构是表级锁，因此在修改表结构时，影响表写入操作如果长时间的修改表结构，中途修改失败，由于修改表结构是一个事务，因此失败后会还原表结构，在这个过程中表都是锁着不可写入修改大表结构容易导致数据库CPU、IO等性能消耗，使MySQL服务器性能降低在线修","\u003Cp>\u003Cb>使用场景\u003C/b>\u003C/p>\u003Cp>\u003Cbr>\u003C/p>\u003Cp>在线数据库的维护中，总会涉及到研发修改表结构的情况，修改一些小表影响很小，而修改大表时，往往影响业务的正常运转，如表数据量超过500W，1000W，甚至过亿时\u003C/p>\u003Cp>在线修改大表的可能影响\u003C/p>\u003Cp>在线修改大表的表结构执行时间往往不可预估，一般时间较长\u003C/p>\u003Cp>由于修改表结构是表级锁，因此在修改表结构时，影响表写入操作\u003C/p>\u003Cp>如果长时间的修改表结构，中途修改失败，由于修改表结构是一个事务，因此失败后会还原表结构，在这个过程中表都是锁着不可写入\u003C/p>\u003Cp>修改大表结构容易导致数据库CPU、IO等性能消耗，使MySQL服务器性能降低\u003C/p>\u003Cp>在线修改大表结构容易导致主从延时，从而影响业务读取\u003C/p>\u003Cp>pt-online-schema-change介绍\u003C/p>\u003Cp>pt-online-schema-change是percona公司开发的一个工具，在percona-toolkit包里面可以找到这个功能，它可以在线修改表结构\u003C/p>\u003Cp>\u003Cbr>\u003C/p>\u003Cp>\u003Cb>原理:\u003C/b>\u003C/p>\u003Cp>\u003Cbr>\u003C/p>\u003Cp>首先它会新建一张一模一样的表，表名一般是_new后缀\u003C/p>\u003Cp>然后在这个新表执行更改字段操作\u003C/p>\u003Cp>然后在原表上加三个触发器，DELETE/UPDATE/INSERT，将原表中要执行的语句也在新表中执行\u003C/p>\u003Cp>最后将原表的数据拷贝到新表中，然后替换掉原表\u003C/p>\u003Cp>使用pt-online-schema-change执行SQL的日志\u003C/p>\u003Cp>SQL语句:\u003C/p>\u003Cp>ALTER TABLE tmp_task_user ADD support tinyint(1) unsigned NOT NULL DEFAULT '1';\u003C/p>\u003Cp>\u003Cbr>\u003C/p>\u003Cp>sh pt.sh tmp_task_user \"ADD COLUMN support tinyint(1) unsigned NOT NULL DEFAULT '1'\"\u003C/p>\u003Cp>\u003Cbr>\u003C/p>\u003Cp>tmp_task_user\u003C/p>\u003Cp>ADD COLUMN support tinyint(1) unsigned NOT NULL DEFAULT '1'\u003C/p>\u003Cp>No slaves found.&nbsp; See --recursion-method if host h=127.0.0.1,P=3306 has slaves.\u003C/p>\u003Cp>Not checking slave lag because no slaves were found and --check-slave-lag was not specified.\u003C/p>\u003Cp>Operation, tries, wait:\u003C/p>\u003Cp>&nbsp; analyze_table, 10, 1\u003C/p>\u003Cp>&nbsp; copy_rows, 10, 0.25\u003C/p>\u003Cp>&nbsp; create_triggers, 10, 1\u003C/p>\u003Cp>&nbsp; drop_triggers, 10, 1\u003C/p>\u003Cp>&nbsp; swap_tables, 10, 1\u003C/p>\u003Cp>&nbsp; update_foreign_keys, 10, 1\u003C/p>\u003Cp>Altering `test_db`.`tmp_task_user`...\u003C/p>\u003Cp>Creating new table...\u003C/p>\u003Cp>Created new table test_db._tmp_task_user_new OK.\u003C/p>\u003Cp>Altering new table...\u003C/p>\u003Cp>Altered `test_db`.`_tmp_task_user_new` OK.\u003C/p>\u003Cp>2018-05-14T18:14:21 Creating triggers...\u003C/p>\u003Cp>2018-05-14T18:14:21 Created triggers OK.\u003C/p>\u003Cp>2018-05-14T18:14:21 Copying approximately 6 rows...\u003C/p>\u003Cp>2018-05-14T18:14:21 Copied rows OK.\u003C/p>\u003Cp>2018-05-14T18:14:21 Analyzing new table...\u003C/p>\u003Cp>2018-05-14T18:14:21 Swapping tables...\u003C/p>\u003Cp>2018-05-14T18:14:21 Swapped original and new tables OK.\u003C/p>\u003Cp>2018-05-14T18:14:21 Dropping old table...\u003C/p>\u003Cp>2018-05-14T18:14:21 Dropped old table `test_db`.`_tmp_task_user_old` OK.\u003C/p>\u003Cp>2018-05-14T18:14:21 Dropping triggers...\u003C/p>\u003Cp>2018-05-14T18:14:21 Dropped triggers OK.\u003C/p>\u003Cp>Successfully altered `test_db`.`tmp_task_user`.\u003C/p>\u003Cp>好处:\u003C/p>\u003Cp>\u003Cbr>\u003C/p>\u003Cp>降低主从延时的风险\u003C/p>\u003Cp>可以限速、限资源，避免操作时MySQL负载过高\u003C/p>\u003Cp>建议:\u003C/p>\u003Cp>\u003Cbr>\u003C/p>\u003Cp>在业务低峰期做，将影响降到最低\u003C/p>\u003Cp>pt-online-schema-change安装\u003C/p>\u003Cp>1.去官网下载对应的版本，官网下载地址:https://www.percona.com/downl...\u003C/p>\u003Cp>\u003Cbr>\u003C/p>\u003Cp>\u003Cb>2.下载解压之后就可以看到pt-online-schema-change\u003C/b>\u003C/p>\u003Cp>\u003Cimg src=\"/uploads/layedit/20200512/c04eb46289014d981e00d47e7c1c7892.png\" alt=\"2.png\">\u003Cbr>\u003C/p>\u003Cp>\u003Cb>3.该工具需要一些依赖包，直接执行不成功时一般会有提示，这里可以提前yum安装\u003C/b>\u003C/p>\u003Cp>\u003Cbr>\u003C/p>\u003Cp>yum&nbsp;install -y perl-DBI&nbsp;perl-DBD-MySQL&nbsp;perl-Time-HiRes&nbsp;perl-IO-Socket-SSL&nbsp;\u003Cspan>perl-Digest-MD5\u003C/span>\u003C/p>\u003Cp>\u003Cbr>\u003C/p>\u003Cp>pt-online-schema-change使用\u003C/p>\u003Cp>1.参数\u003C/p>\u003Cp>./bin/pt-online-schema-change --help 可以查看参数的使用，我们只是要修改个表结构，只需要知道几个简单的参数就可以了\u003C/p>\u003Cp>\u003Cbr>\u003C/p>\u003Cp>--user=&nbsp; &nbsp; &nbsp; &nbsp; 连接mysql的用户名\u003C/p>\u003Cp>--password=&nbsp; &nbsp; 连接mysql的密码\u003C/p>\u003Cp>--host=&nbsp; &nbsp; &nbsp; &nbsp; 连接mysql的地址\u003C/p>\u003Cp>P=3306&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;连接mysql的端口号\u003C/p>\u003Cp>D=&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;连接mysql的库名\u003C/p>\u003Cp>t=&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;连接mysql的表名\u003C/p>\u003Cp>--alter&nbsp; &nbsp; &nbsp; &nbsp; 修改表结构的语句\u003C/p>\u003Cp>--execute&nbsp; &nbsp; &nbsp; 执行修改表结构\u003C/p>\u003Cp>--charset=utf8 使用utf8编码，避免中文乱码\u003C/p>\u003Cp>--no-version-check&nbsp; 不检查版本，在阿里云服务器中一般加入此参数，否则会报错\u003C/p>\u003Cp>2.为避免每次都要输入一堆参数，写个脚本复用一下，pt.sh\u003C/p>\u003Cp>\u003Cbr>\u003C/p>\u003Cp>#!/bin/bash\u003C/p>\u003Cp>table=$1\u003C/p>\u003Cp>alter_conment=$2\u003C/p>\u003Cp>\u003Cbr>\u003C/p>\u003Cp>cnn_host='127.0.0.1'\u003C/p>\u003Cp>cnn_user='user'\u003C/p>\u003Cp>cnn_pwd='password'\u003C/p>\u003Cp>cnn_db='database_name'\u003C/p>\u003Cp>\u003Cbr>\u003C/p>\u003Cp>echo \"$table\"\u003C/p>\u003Cp>echo \"$alter_conment\"\u003C/p>\u003Cp>/root/percona-toolkit-3.2.0/bin/pt-online-schema-change --charset=utf8 --no-version-check --user=${cnn_user} --password=${cnn_pwd} --host=${cnn_host}&nbsp; P=3306,D=${cnn_db},t=$table --alter&nbsp;\u003C/p>\u003Cp>\"${alter_conment}\" --execute\u003C/p>\u003Cp>\u003Cb>3.添加表字段\u003C/b>\u003C/p>\u003Cp>如添加表字段SQL语句为:\u003C/p>\u003Cp>ALTER TABLE tb_test ADD COLUMN column1 tinyint(4) DEFAULT NULL;\u003C/p>\u003Cp>那么使用pt-online-schema-change则可以这样写\u003C/p>\u003Cp>sh pt.sh tb_test \"ADD COLUMN column1 tinyint(4) DEFAULT NULL\"\u003C/p>\u003Cp>\u003Cbr>\u003C/p>\u003Cp>\u003Cb>4.修改表字段\u003C/b>\u003C/p>\u003Cp>SQL语句：\u003C/p>\u003Cp>ALTER TABLE tb_test MODIFY COLUMN num int(11) unsigned NOT NULL DEFAULT '0';\u003C/p>\u003Cp>\u003Cbr>\u003C/p>\u003Cp>pt-online-schema-change工具:\u003C/p>\u003Cp>sh pt.sh tb_test \"MODIFY COLUMN num int(11) unsigned NOT NULL DEFAULT '0'\"\u003C/p>\u003Cp>\u003Cbr>\u003C/p>\u003Cp>\u003Cb>5.修改表字段名\u003C/b>\u003C/p>\u003Cp>SQL语句:\u003C/p>\u003Cp>ALTER TABLE tb_test CHANGE COLUMN age adress varchar(30);\u003C/p>\u003Cp>\u003Cbr>\u003C/p>\u003Cp>pt-online-schema-change工具:\u003C/p>\u003Cp>sh pt.sh tb_test \"CHANGE COLUMN age address varchar(30)\"\u003C/p>\u003Cp>\u003Cb>\u003Cbr>\u003C/b>\u003C/p>\u003Cp>\u003Cb>6.添加索引\u003C/b>\u003C/p>\u003Cp>SQL语句:\u003C/p>\u003Cp>ALTER TABLE tb_test ADD INDEX idx_address(address);\u003C/p>\u003Cp>pt-online-schema-change工具:\u003C/p>\u003Cp>sh pt.sh tb_test \"ADD INDEX idx_address(address)\"\u003C/p>\u003Cp>\u003Cb>7.多字段添加\u003C/b>\u003C/p>\u003Cp>\u003Cb>\u003Cbr>\u003C/b>\u003C/p>\u003Cp>#! /bin/bash\u003C/p>\u003Cp>&nbsp;\u003C/p>\u003Cp>stime=`date +%s`\u003C/p>\u003Cp>echo \"增加字段开始测试时间为：`date +%H:%M:%S`\"\u003C/p>\u003Cp>&nbsp;\u003C/p>\u003Cp>pt-online-schema-change --alter 'ADD COLUMN col11 BIGINT(20) NULL DEFAULT -1 COMMENT \"字段注释1\" ,ADD COLUMN col2 INT(11) NULL DEFAULT -1 \\\u003C/p>\u003Cp>COMMENT \"字段注释2\" ,ADD COLUMN col3 INT(11) NULL DEFAULT -1 COMMENT \"字段注释3\";' \\\u003C/p>\u003Cp>--host=127.0.0.1 --user=root --password=mysqlpass --port=3306 D=db_order,t=tb_tablename \\\u003C/p>\u003Cp>--charset=utf8mb4 --no-check-replication-filters --max-lag 3 --check-interval 3 \\\u003C/p>\u003Cp>--chunk-size 1M --set-vars innodb_lock_wait_timeout=10,lock_wait_timeout=60 \\\u003C/p>\u003Cp>--tries create_triggers:10:1,drop_triggers:10:1,copy_rows:10:1,swap_tables:10:1 \\\u003C/p>\u003Cp>--recursion-method \"dsn=D=test,t=dsns\" --max-load Threads_running=25 --execute --statistics\u003C/p>\u003Cp>&nbsp;\u003C/p>\u003Cp>etime=`date +%s`\u003C/p>\u003Cp>&nbsp;\u003C/p>\u003Cp>aa=`expr $etime - $stime`\u003C/p>\u003Cp>echo \"结束时间为：`date +%H:%M:%S`\"\u003C/p>\u003Cp>echo \"增加字段测试所需要的时间为：$aa\"\u003C/p>\u003Cp>\u003Ccode class=\"python string\">\u003Cbr>\u003C/code>\u003C/p>\u003Cp>\u003Cb>其他\u003C/b>\u003C/p>\u003Cp>pt-online-schema-change工具还有很多其他的参数，可以有很多限制，比如限制CPU、线程数量、从库状态等等，不过我做过一个超过6000W表的结构修改，发现几乎不影响性能，很稳定很流畅的就修改了表结构，所以，对以上常规参数的使用基本能满足业务\u003C/p>\u003Cp>一定要在业务低峰期做，这样才能确保万无一失\u003C/p>","**使用场景**\n\n在线数据库的维护中，总会涉及到研发修改表结构的情况，修改一些小表影响很小，而修改大表时，往往影响业务的正常运转，如表数据量超过500W，1000W，甚至过亿时\n\n在线修改大表的可能影响\n\n在线修改大表的表结构执行时间往往不可预估，一般时间较长\n\n由于修改表结构是表级锁，因此在修改表结构时，影响表写入操作\n\n如果长时间的修改表结构，中途修改失败，由于修改表结构是一个事务，因此失败后会还原表结构，在这个过程中表都是锁着不可写入\n\n修改大表结构容易导致数据库CPU、IO等性能消耗，使MySQL服务器性能降低\n\n在线修改大表结构容易导致主从延时，从而影响业务读取\n\npt-online-schema-change介绍\n\npt-online-schema-change是percona公司开发的一个工具，在percona-toolkit包里面可以找到这个功能，它可以在线修改表结构\n\n**原理:**\n\n首先它会新建一张一模一样的表，表名一般是_new后缀\n\n然后在这个新表执行更改字段操作\n\n然后在原表上加三个触发器，DELETE/UPDATE/INSERT，将原表中要执行的语句也在新表中执行\n\n最后将原表的数据拷贝到新表中，然后替换掉原表\n\n使用pt-online-schema-change执行SQL的日志\n\nSQL语句:\n\nALTER TABLE tmp_task_user ADD support tinyint(1) unsigned NOT NULL DEFAULT '1';\n\nsh pt.sh tmp_task_user \"ADD COLUMN support tinyint(1) unsigned NOT NULL DEFAULT '1'\"\n\ntmp_task_user\n\nADD COLUMN support tinyint(1) unsigned NOT NULL DEFAULT '1'\n\nNo slaves found.  See --recursion-method if host h=127.0.0.1,P=3306 has slaves.\n\nNot checking slave lag because no slaves were found and --check-slave-lag was not specified.\n\nOperation, tries, wait:\n\n  analyze_table, 10, 1\n\n  copy_rows, 10, 0.25\n\n  create_triggers, 10, 1\n\n  drop_triggers, 10, 1\n\n  swap_tables, 10, 1\n\n  update_foreign_keys, 10, 1\n\nAltering `test_db`.`tmp_task_user`...\n\nCreating new table...\n\nCreated new table test_db._tmp_task_user_new OK.\n\nAltering new table...\n\nAltered `test_db`.`_tmp_task_user_new` OK.\n\n2018-05-14T18:14:21 Creating triggers...\n\n2018-05-14T18:14:21 Created triggers OK.\n\n2018-05-14T18:14:21 Copying approximately 6 rows...\n\n2018-05-14T18:14:21 Copied rows OK.\n\n2018-05-14T18:14:21 Analyzing new table...\n\n2018-05-14T18:14:21 Swapping tables...\n\n2018-05-14T18:14:21 Swapped original and new tables OK.\n\n2018-05-14T18:14:21 Dropping old table...\n\n2018-05-14T18:14:21 Dropped old table `test_db`.`_tmp_task_user_old` OK.\n\n2018-05-14T18:14:21 Dropping triggers...\n\n2018-05-14T18:14:21 Dropped triggers OK.\n\nSuccessfully altered `test_db`.`tmp_task_user`.\n\n好处:\n\n降低主从延时的风险\n\n可以限速、限资源，避免操作时MySQL负载过高\n\n建议:\n\n在业务低峰期做，将影响降到最低\n\npt-online-schema-change安装\n\n1.去官网下载对应的版本，官网下载地址:https://www.percona.com/downl...\n\n**2.下载解压之后就可以看到pt-online-schema-change**\n\n![2.png](/uploads/layedit/20200512/c04eb46289014d981e00d47e7c1c7892.png)\n\n**3.该工具需要一些依赖包，直接执行不成功时一般会有提示，这里可以提前yum安装**\n\nyum install -y perl-DBI perl-DBD-MySQL perl-Time-HiRes perl-IO-Socket-SSL \nperl-Digest-MD5\n\npt-online-schema-change使用\n\n1.参数\n\n./bin/pt-online-schema-change --help 可以查看参数的使用，我们只是要修改个表结构，只需要知道几个简单的参数就可以了\n\n--user=        连接mysql的用户名\n\n--password=    连接mysql的密码\n\n--host=        连接mysql的地址\n\nP=3306         连接mysql的端口号\n\nD=             连接mysql的库名\n\nt=             连接mysql的表名\n\n--alter        修改表结构的语句\n\n--execute      执行修改表结构\n\n--charset=utf8 使用utf8编码，避免中文乱码\n\n--no-version-check  不检查版本，在阿里云服务器中一般加入此参数，否则会报错\n\n2.为避免每次都要输入一堆参数，写个脚本复用一下，pt.sh\n\n#!/bin/bash\n\ntable=$1\n\nalter_conment=$2\n\ncnn_host='127.0.0.1'\n\ncnn_user='user'\n\ncnn_pwd='password'\n\ncnn_db='database_name'\n\necho \"$table\"\n\necho \"$alter_conment\"\n\n/root/percona-toolkit-3.2.0/bin/pt-online-schema-change --charset=utf8 --no-version-check --user=${cnn_user} --password=${cnn_pwd} --host=${cnn_host}  P=3306,D=${cnn_db},t=$table --alter \n\n\"${alter_conment}\" --execute\n\n**3.添加表字段**\n\n如添加表字段SQL语句为:\n\nALTER TABLE tb_test ADD COLUMN column1 tinyint(4) DEFAULT NULL;\n\n那么使用pt-online-schema-change则可以这样写\n\nsh pt.sh tb_test \"ADD COLUMN column1 tinyint(4) DEFAULT NULL\"\n\n**4.修改表字段**\n\nSQL语句：\n\nALTER TABLE tb_test MODIFY COLUMN num int(11) unsigned NOT NULL DEFAULT '0';\n\npt-online-schema-change工具:\n\nsh pt.sh tb_test \"MODIFY COLUMN num int(11) unsigned NOT NULL DEFAULT '0'\"\n\n**5.修改表字段名**\n\nSQL语句:\n\nALTER TABLE tb_test CHANGE COLUMN age adress varchar(30);\n\npt-online-schema-change工具:\n\nsh pt.sh tb_test \"CHANGE COLUMN age address varchar(30)\"\n\n**\n**\n\n**6.添加索引**\n\nSQL语句:\n\nALTER TABLE tb_test ADD INDEX idx_address(address);\n\npt-online-schema-change工具:\n\nsh pt.sh tb_test \"ADD INDEX idx_address(address)\"\n\n**7.多字段添加**\n\n**\n**\n\n#! /bin/bash\n\n \n\nstime=`date +%s`\n\necho \"增加字段开始测试时间为：`date +%H:%M:%S`\"\n\n \n\npt-online-schema-change --alter 'ADD COLUMN col11 BIGINT(20) NULL DEFAULT -1 COMMENT \"字段注释1\" ,ADD COLUMN col2 INT(11) NULL DEFAULT -1 \\\n\nCOMMENT \"字段注释2\" ,ADD COLUMN col3 INT(11) NULL DEFAULT -1 COMMENT \"字段注释3\";' \\\n\n--host=127.0.0.1 --user=root --password=mysqlpass --port=3306 D=db_order,t=tb_tablename \\\n\n--charset=utf8mb4 --no-check-replication-filters --max-lag 3 --check-interval 3 \\\n\n--chunk-size 1M --set-vars innodb_lock_wait_timeout=10,lock_wait_timeout=60 \\\n\n--tries create_triggers:10:1,drop_triggers:10:1,copy_rows:10:1,swap_tables:10:1 \\\n\n--recursion-method \"dsn=D=test,t=dsns\" --max-load Threads_running=25 --execute --statistics\n\n \n\netime=`date +%s`\n\n \n\naa=`expr $etime - $stime`\n\necho \"结束时间为：`date +%H:%M:%S`\"\n\necho \"增加字段测试所需要的时间为：$aa\"\n\n`\n`\n\n**其他**\n\npt-online-schema-change工具还有很多其他的参数，可以有很多限制，比如限制CPU、线程数量、从库状态等等，不过我做过一个超过6000W表的结构修改，发现几乎不影响性能，很稳定很流畅的就修改了表结构，所以，对以上常规参数的使用基本能满足业务\n\n一定要在业务低峰期做，这样才能确保万无一失","/article/103",7631,0,"2020-05-12 14:34:07","2020-05-22 00:51:26",[18,22,25],{"id":19,"name":20,"url":21},25,"学无止境","/article/lists?category_id=25",{"id":6,"name":23,"url":24},"linux","/article/lists?category_id=17",{"id":5,"name":7,"url":12},{"create_time":8,"description":8,"id":6,"image_url":8,"index_template":27,"is_cover":28,"is_menu":28,"keywords":8,"list_template":29,"model_code":30,"model_id":31,"model_name":32,"name":23,"parent_id":19,"seo_description":8,"seo_keywords":8,"seo_title":8,"show_template":33,"sort":28,"subtitle":8,"update_time":8,"url":24},"index",1,"list","article",2,"文章模型","show",{"title":35,"url":36},"mysql亿级大表 rename卡表 解决方法","/article/104",{"title":38,"url":39},"如何在MySQL中筛选全表扫描的SQL查询","/article/102",[41,42,46,51],{"create_time":8,"description":8,"id":6,"image_url":8,"index_template":27,"is_cover":28,"is_menu":28,"keywords":8,"list_template":29,"model_code":30,"model_id":31,"model_name":32,"name":23,"parent_id":19,"seo_description":8,"seo_keywords":8,"seo_title":8,"show_template":33,"sort":28,"subtitle":8,"update_time":8,"url":24},{"create_time":8,"description":8,"id":43,"image_url":8,"index_template":27,"is_cover":28,"is_menu":28,"keywords":8,"list_template":29,"model_code":30,"model_id":31,"model_name":32,"name":44,"parent_id":19,"seo_description":8,"seo_keywords":8,"seo_title":8,"show_template":33,"sort":31,"subtitle":8,"update_time":8,"url":45},18,"python","/article/lists?category_id=18",{"create_time":8,"description":8,"id":47,"image_url":8,"index_template":27,"is_cover":28,"is_menu":28,"keywords":8,"list_template":29,"model_code":30,"model_id":31,"model_name":32,"name":48,"parent_id":19,"seo_description":8,"seo_keywords":8,"seo_title":8,"show_template":33,"sort":49,"subtitle":8,"update_time":8,"url":50},19,"容器技术",3,"/article/lists?category_id=19",{"create_time":8,"description":8,"id":52,"image_url":8,"index_template":27,"is_cover":28,"is_menu":28,"keywords":8,"list_template":29,"model_code":30,"model_id":31,"model_name":32,"name":53,"parent_id":19,"seo_description":8,"seo_keywords":8,"seo_title":8,"show_template":33,"sort":54,"subtitle":8,"update_time":8,"url":55},20,"负载均衡",4,"/article/lists?category_id=20",{"description":9,"keywords":8,"title":7},{"settings":58,"categorys":87,"tree":125,"models":146,"search_model_select":156,"nav_list":158},{"changefreq":59,"changyan_app_id":8,"changyan_app_key":8,"copy":60,"description":61,"editor":62,"file":8,"guest_feedback":63,"head_html":8,"icp":64,"index_banner":65,"index_banner_bg":66,"is_excel":67,"is_watermark":63,"keywords":68,"links":69,"logo":70,"lzcms_banner":8,"lzcms_banner_link":71,"member_register_enabled":67,"qq_app_id":8,"qq_app_key":8,"qr_code":8,"search_model":72,"site_closedreason":8,"site_idea":8,"site_idea1":73,"site_idea2":74,"site_idea3":75,"site_name":23,"site_statistice":8,"site_status":67,"site_url":71,"sitemap_model":72,"stationmaster_motto":76,"stationmaster_name":77,"stationmaster_occupation":78,"stationmaster_qq":79,"stationmaster_qqnet":80,"stationmaster_qqnet_code":81,"threshold":67,"title_add":82,"watermark":8,"watermark_alpha":83,"watermark_height":84,"watermark_locate":85,"watermark_width":86},"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运维工程师","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":88,"17":98,"18":99,"19":100,"20":101,"21":102,"22":106,"25":110,"26":111,"27":117,"29":122},{"children":89},{"0":90,"25":94,"26":95},[19,91,92,93],21,22,26,[6,43,47,52],[96,97],27,29,{"create_time":8,"description":8,"id":6,"image_url":8,"index_template":27,"is_cover":28,"is_menu":28,"keywords":8,"list_template":29,"model_code":30,"model_id":31,"model_name":32,"name":23,"parent_id":19,"seo_description":8,"seo_keywords":8,"seo_title":8,"show_template":33,"sort":28,"subtitle":8,"update_time":8,"url":24},{"create_time":8,"description":8,"id":43,"image_url":8,"index_template":27,"is_cover":28,"is_menu":28,"keywords":8,"list_template":29,"model_code":30,"model_id":31,"model_name":32,"name":44,"parent_id":19,"seo_description":8,"seo_keywords":8,"seo_title":8,"show_template":33,"sort":31,"subtitle":8,"update_time":8,"url":45},{"create_time":8,"description":8,"id":47,"image_url":8,"index_template":27,"is_cover":28,"is_menu":28,"keywords":8,"list_template":29,"model_code":30,"model_id":31,"model_name":32,"name":48,"parent_id":19,"seo_description":8,"seo_keywords":8,"seo_title":8,"show_template":33,"sort":49,"subtitle":8,"update_time":8,"url":50},{"create_time":8,"description":8,"id":52,"image_url":8,"index_template":27,"is_cover":28,"is_menu":28,"keywords":8,"list_template":29,"model_code":30,"model_id":31,"model_name":32,"name":53,"parent_id":19,"seo_description":8,"seo_keywords":8,"seo_title":8,"show_template":33,"sort":54,"subtitle":8,"update_time":8,"url":55},{"create_time":8,"description":8,"id":91,"image_url":8,"index_template":27,"is_cover":28,"is_menu":28,"keywords":8,"list_template":29,"model_code":30,"model_id":31,"model_name":32,"name":103,"parent_id":14,"seo_description":8,"seo_keywords":8,"seo_title":8,"show_template":33,"sort":104,"subtitle":8,"update_time":8,"url":105},"分享无价",5,"/article/lists?category_id=21",{"create_time":8,"description":8,"id":92,"image_url":8,"index_template":27,"is_cover":28,"is_menu":28,"keywords":8,"list_template":29,"model_code":30,"model_id":31,"model_name":32,"name":107,"parent_id":14,"seo_description":8,"seo_keywords":8,"seo_title":8,"show_template":33,"sort":108,"subtitle":8,"update_time":8,"url":109},"随笔",6,"/article/lists?category_id=22",{"create_time":8,"description":8,"id":19,"image_url":8,"index_template":27,"is_cover":28,"is_menu":28,"keywords":8,"list_template":29,"model_code":30,"model_id":31,"model_name":32,"name":20,"parent_id":14,"seo_description":8,"seo_keywords":8,"seo_title":8,"show_template":33,"sort":14,"subtitle":8,"update_time":8,"url":21},{"create_time":8,"description":8,"id":93,"image_url":8,"index_template":27,"is_cover":28,"is_menu":28,"keywords":8,"list_template":29,"model_code":112,"model_id":49,"model_name":113,"name":114,"parent_id":14,"seo_description":8,"seo_keywords":8,"seo_title":8,"show_template":33,"sort":115,"subtitle":8,"update_time":8,"url":116},"picture","图集模型","关于",8,"/picture/lists?category_id=26",{"create_time":8,"description":8,"id":96,"image_url":8,"index_template":27,"is_cover":28,"is_menu":14,"keywords":8,"list_template":29,"model_code":118,"model_id":28,"model_name":119,"name":120,"parent_id":93,"seo_description":8,"seo_keywords":8,"seo_title":8,"show_template":33,"sort":52,"subtitle":8,"update_time":8,"url":121},"page","单页模型","关于博主","/page/27",{"create_time":8,"description":8,"id":97,"image_url":8,"index_template":27,"is_cover":14,"is_menu":14,"keywords":8,"list_template":29,"model_id":14,"name":123,"parent_id":93,"seo_description":8,"seo_keywords":8,"seo_title":8,"show_template":33,"sort":52,"subtitle":8,"update_time":8,"url":124},"留言","/feedback",[126,136,138,140],{"children":127,"create_time":8,"description":8,"id":19,"image_url":8,"index_template":27,"is_cover":28,"is_menu":28,"keywords":8,"list_template":29,"model_code":30,"model_id":31,"model_name":32,"name":20,"parent_id":14,"seo_description":8,"seo_keywords":8,"seo_title":8,"show_template":33,"sort":14,"subtitle":8,"update_time":8,"url":21},[128,130,132,134],{"children":129,"create_time":8,"description":8,"id":6,"image_url":8,"index_template":27,"is_cover":28,"is_menu":28,"keywords":8,"list_template":29,"model_code":30,"model_id":31,"model_name":32,"name":23,"parent_id":19,"seo_description":8,"seo_keywords":8,"seo_title":8,"show_template":33,"sort":28,"subtitle":8,"update_time":8,"url":24},[],{"children":131,"create_time":8,"description":8,"id":43,"image_url":8,"index_template":27,"is_cover":28,"is_menu":28,"keywords":8,"list_template":29,"model_code":30,"model_id":31,"model_name":32,"name":44,"parent_id":19,"seo_description":8,"seo_keywords":8,"seo_title":8,"show_template":33,"sort":31,"subtitle":8,"update_time":8,"url":45},[],{"children":133,"create_time":8,"description":8,"id":47,"image_url":8,"index_template":27,"is_cover":28,"is_menu":28,"keywords":8,"list_template":29,"model_code":30,"model_id":31,"model_name":32,"name":48,"parent_id":19,"seo_description":8,"seo_keywords":8,"seo_title":8,"show_template":33,"sort":49,"subtitle":8,"update_time":8,"url":50},[],{"children":135,"create_time":8,"description":8,"id":52,"image_url":8,"index_template":27,"is_cover":28,"is_menu":28,"keywords":8,"list_template":29,"model_code":30,"model_id":31,"model_name":32,"name":53,"parent_id":19,"seo_description":8,"seo_keywords":8,"seo_title":8,"show_template":33,"sort":54,"subtitle":8,"update_time":8,"url":55},[],{"children":137,"create_time":8,"description":8,"id":91,"image_url":8,"index_template":27,"is_cover":28,"is_menu":28,"keywords":8,"list_template":29,"model_code":30,"model_id":31,"model_name":32,"name":103,"parent_id":14,"seo_description":8,"seo_keywords":8,"seo_title":8,"show_template":33,"sort":104,"subtitle":8,"update_time":8,"url":105},[],{"children":139,"create_time":8,"description":8,"id":92,"image_url":8,"index_template":27,"is_cover":28,"is_menu":28,"keywords":8,"list_template":29,"model_code":30,"model_id":31,"model_name":32,"name":107,"parent_id":14,"seo_description":8,"seo_keywords":8,"seo_title":8,"show_template":33,"sort":108,"subtitle":8,"update_time":8,"url":109},[],{"children":141,"create_time":8,"description":8,"id":93,"image_url":8,"index_template":27,"is_cover":28,"is_menu":28,"keywords":8,"list_template":29,"model_code":112,"model_id":49,"model_name":113,"name":114,"parent_id":14,"seo_description":8,"seo_keywords":8,"seo_title":8,"show_template":33,"sort":115,"subtitle":8,"update_time":8,"url":116},[142,144],{"children":143,"create_time":8,"description":8,"id":96,"image_url":8,"index_template":27,"is_cover":28,"is_menu":14,"keywords":8,"list_template":29,"model_code":118,"model_id":28,"model_name":119,"name":120,"parent_id":93,"seo_description":8,"seo_keywords":8,"seo_title":8,"show_template":33,"sort":52,"subtitle":8,"update_time":8,"url":121},[],{"children":145,"create_time":8,"description":8,"id":97,"image_url":8,"index_template":27,"is_cover":14,"is_menu":14,"keywords":8,"list_template":29,"model_id":14,"name":123,"parent_id":93,"seo_description":8,"seo_keywords":8,"seo_title":8,"show_template":33,"sort":52,"subtitle":8,"update_time":8,"url":124},[],{"1":147,"2":148,"3":149,"4":150,"5":153},{"id":28,"index_template":27,"list_template":29,"name":119,"show_template":33,"status":14,"tablename":118},{"id":31,"index_template":27,"list_template":29,"name":32,"show_template":33,"status":14,"tablename":30},{"id":49,"index_template":27,"list_template":29,"name":113,"show_template":33,"status":14,"tablename":112},{"id":54,"index_template":27,"list_template":29,"name":151,"show_template":33,"status":14,"tablename":152},"链接模型","link",{"id":104,"index_template":27,"list_template":29,"name":154,"show_template":33,"status":14,"tablename":155},"下载模型","download",[157],{"id":31,"name":32,"tablename":30},[159,165,167,169],{"children":160,"create_time":8,"description":8,"id":19,"image_url":8,"index_template":27,"is_cover":28,"is_menu":28,"keywords":8,"list_template":29,"model_code":30,"model_id":31,"model_name":32,"name":20,"parent_id":14,"seo_description":8,"seo_keywords":8,"seo_title":8,"show_template":33,"sort":14,"subtitle":8,"update_time":8,"url":21},[161,162,163,164],{"create_time":8,"description":8,"id":6,"image_url":8,"index_template":27,"is_cover":28,"is_menu":28,"keywords":8,"list_template":29,"model_code":30,"model_id":31,"model_name":32,"name":23,"parent_id":19,"seo_description":8,"seo_keywords":8,"seo_title":8,"show_template":33,"sort":28,"subtitle":8,"update_time":8,"url":24},{"create_time":8,"description":8,"id":43,"image_url":8,"index_template":27,"is_cover":28,"is_menu":28,"keywords":8,"list_template":29,"model_code":30,"model_id":31,"model_name":32,"name":44,"parent_id":19,"seo_description":8,"seo_keywords":8,"seo_title":8,"show_template":33,"sort":31,"subtitle":8,"update_time":8,"url":45},{"create_time":8,"description":8,"id":47,"image_url":8,"index_template":27,"is_cover":28,"is_menu":28,"keywords":8,"list_template":29,"model_code":30,"model_id":31,"model_name":32,"name":48,"parent_id":19,"seo_description":8,"seo_keywords":8,"seo_title":8,"show_template":33,"sort":49,"subtitle":8,"update_time":8,"url":50},{"create_time":8,"description":8,"id":52,"image_url":8,"index_template":27,"is_cover":28,"is_menu":28,"keywords":8,"list_template":29,"model_code":30,"model_id":31,"model_name":32,"name":53,"parent_id":19,"seo_description":8,"seo_keywords":8,"seo_title":8,"show_template":33,"sort":54,"subtitle":8,"update_time":8,"url":55},{"children":166,"create_time":8,"description":8,"id":91,"image_url":8,"index_template":27,"is_cover":28,"is_menu":28,"keywords":8,"list_template":29,"model_code":30,"model_id":31,"model_name":32,"name":103,"parent_id":14,"seo_description":8,"seo_keywords":8,"seo_title":8,"show_template":33,"sort":104,"subtitle":8,"update_time":8,"url":105},[],{"children":168,"create_time":8,"description":8,"id":92,"image_url":8,"index_template":27,"is_cover":28,"is_menu":28,"keywords":8,"list_template":29,"model_code":30,"model_id":31,"model_name":32,"name":107,"parent_id":14,"seo_description":8,"seo_keywords":8,"seo_title":8,"show_template":33,"sort":108,"subtitle":8,"update_time":8,"url":109},[],{"children":170,"create_time":8,"description":8,"id":93,"image_url":8,"index_template":27,"is_cover":28,"is_menu":28,"keywords":8,"list_template":29,"model_code":112,"model_id":49,"model_name":113,"name":114,"parent_id":14,"seo_description":8,"seo_keywords":8,"seo_title":8,"show_template":33,"sort":115,"subtitle":8,"update_time":8,"url":116},[],[172,181,190,199,208,217,226,235,244,252],{"id":173,"category_id":6,"title":174,"keywords":175,"description":176,"image_url":8,"url":177,"hits":178,"is_recommend":14,"is_top":14,"create_time":179,"update_time":180},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":182,"category_id":6,"title":183,"keywords":184,"description":185,"image_url":8,"url":186,"hits":187,"is_recommend":14,"is_top":14,"create_time":188,"update_time":189},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":191,"category_id":6,"title":192,"keywords":193,"description":194,"image_url":8,"url":195,"hits":196,"is_recommend":28,"is_top":14,"create_time":197,"update_time":198},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":200,"category_id":6,"title":201,"keywords":202,"description":203,"image_url":8,"url":204,"hits":205,"is_recommend":14,"is_top":14,"create_time":206,"update_time":207},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":209,"category_id":47,"title":210,"keywords":211,"description":212,"image_url":8,"url":213,"hits":214,"is_recommend":14,"is_top":14,"create_time":215,"update_time":216},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":218,"category_id":6,"title":219,"keywords":220,"description":221,"image_url":8,"url":222,"hits":223,"is_recommend":14,"is_top":14,"create_time":224,"update_time":225},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":227,"category_id":6,"title":228,"keywords":229,"description":230,"image_url":8,"url":231,"hits":232,"is_recommend":28,"is_top":14,"create_time":233,"update_time":234},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":236,"category_id":47,"title":237,"keywords":238,"description":239,"image_url":8,"url":240,"hits":241,"is_recommend":28,"is_top":14,"create_time":242,"update_time":243},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":245,"category_id":6,"title":246,"keywords":8,"description":247,"image_url":8,"url":248,"hits":249,"is_recommend":14,"is_top":14,"create_time":250,"update_time":251},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":253,"category_id":6,"title":254,"keywords":255,"description":256,"image_url":8,"url":257,"hits":258,"is_recommend":14,"is_top":14,"create_time":259,"update_time":260},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",[262,270,278,286,294,302,310,318,327,336],{"id":263,"category_id":91,"title":264,"keywords":8,"description":265,"image_url":8,"url":266,"hits":267,"is_recommend":14,"is_top":14,"create_time":268,"update_time":269},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":271,"category_id":6,"title":272,"keywords":8,"description":273,"image_url":8,"url":274,"hits":275,"is_recommend":14,"is_top":14,"create_time":276,"update_time":277},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":279,"category_id":47,"title":280,"keywords":8,"description":281,"image_url":8,"url":282,"hits":283,"is_recommend":14,"is_top":14,"create_time":284,"update_time":285},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":287,"category_id":6,"title":288,"keywords":8,"description":289,"image_url":8,"url":290,"hits":291,"is_recommend":14,"is_top":14,"create_time":292,"update_time":293},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":295,"category_id":6,"title":296,"keywords":8,"description":297,"image_url":8,"url":298,"hits":299,"is_recommend":14,"is_top":14,"create_time":300,"update_time":301},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":303,"category_id":6,"title":304,"keywords":8,"description":305,"image_url":8,"url":306,"hits":307,"is_recommend":14,"is_top":14,"create_time":308,"update_time":309},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":311,"category_id":6,"title":312,"keywords":8,"description":313,"image_url":8,"url":314,"hits":315,"is_recommend":14,"is_top":14,"create_time":316,"update_time":317},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":319,"category_id":91,"title":320,"keywords":321,"description":322,"image_url":8,"url":323,"hits":324,"is_recommend":14,"is_top":14,"create_time":325,"update_time":326},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":328,"category_id":91,"title":329,"keywords":330,"description":331,"image_url":8,"url":332,"hits":333,"is_recommend":14,"is_top":14,"create_time":334,"update_time":335},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":182,"category_id":6,"title":183,"keywords":184,"description":185,"image_url":8,"url":186,"hits":187,"is_recommend":14,"is_top":14,"create_time":188,"update_time":189},1784716028654]