網站免費優(yōu)化工具怎樣宣傳網站
目錄
1、PT工具原理
2、在線修改表結構
3、使用pt-query-diges分析慢查詢
4、使用pt-kill來kill掉一些垃圾SQL
5、pt-table-checksum進行主從一致性排查和修復
6、pt-archiver進行數據歸檔
7、其他一些pt工具
1、PT工具原理
創(chuàng)建一張與原始表結構相同的臨時表 然后對臨時表進行表結構變更 通過觸發(fā)器實現(xiàn)增量數據處理 將原始表中的數據復制到新表中 把原始表重命名為 _x_old,將臨時表重命名為x 刪除 _xxx_old表,刪除3個觸發(fā)器 表結構變更完成。
使用注意事項:表必須有主鍵或唯一索引、保證足夠空間、原表上不能有觸發(fā)器。
2、在線修改表結構
示例:
pt工具安裝 wget https://downloads.percona.com/downloads/percona-toolkit/3.5.4/binary/redhat/7/x86_64/percona-toolkit-3.5.4-2.el7.x86_64.rpm yum install percona-toolkit-3.5.4-2.el7.x86_64.rpm ? 創(chuàng)建測試用戶測試表 CREATE USER 'pt_osc'@'localhost' IDENTIFIED WITH MYSQL_NATIVE_PASSWORD BY 'iUdy87G_caq'; GRANT create,drop,alter,insert,delete,select,update,process,replication slave,trigger ON *.* TO 'pt_osc'@'localhost'; ? use martin CREATE TABLE users_info ( id INT PRIMARY KEY, name VARCHAR(50), email VARCHAR(50) ); INSERT INTO users_info (id, name, email) VALUES (1, 'John', 'john@example.com'); INSERT INTO users_info (id, name, email) VALUES (2, 'Jane', 'jane@example.com'); ? 可以打開generallog方便觀察分析 set global general_log=on tail -f /data/mysql/log/mysql-general.log
用pt-osc增加字段
增加字段 pt-online-schema-change -u pt_osc -p 'iUdy87G_caq' -S /tmp/mysql.sock --alter "ADD COLUMN age INT" -- D=martin,t=users_info ? 刪除列 pt-online-schema-change -u pt_osc -p 'iUdy87G_caq' -S /tmp/mysql.sock --alter "DROP COLUMN age" --execute D=martin,t=users_info ? 修改列類型 pt-online-schema-change -u pt_osc -p 'iUdy87G_caq' -S /tmp/mysql.sock --alter "MODIFY COLUMN email varchar(100)" --execute D=martin,t=users_info ? 修改列名 pt-online-schema-change -u pt_osc -p 'iUdy87G_caq' -S /tmp/mysql.sock --alter "CHANGE COLUMN name user_name varchar(50)" --execute --no-check-alter D=martin,t=users_info ? 添加索引 pt-online-schema-change -u pt_osc -p 'iUdy87G_caq' -S /tmp/mysql.sock --alter "ADD INDEX index_user_name (user_name)" --execute D=martin,t=users_info ? 刪除索引 pt-online-schema-change -u pt_osc -p 'iUdy87G_caq' -S /tmp/mysql.sock --alter "DROP INDEX index_user_name" --execute D=martin,t=users_info ? 構造重復數據 INSERT INTO users_info (id, user_name, email) VALUES (3, 'John', 'john1@example.com'); ? 使用pt-osc添加唯一索引 pt-online-schema-change -u pt_osc -p 'iUdy87G_caq' -S /tmp/mysql.sock --alter "ADD unique key uniq_user_name (user_name)" --execute D=martin,t=users_info可以通過這個語句查看添加唯一索引的字段是否有重復值SELECT IF(COUNT(DISTINCT user_name) = COUNT(*), 'Yes, the desired unique index currently contains only unique