mysqlcheck

mysql bin中的其他工具包 

对于mysql的其他工具, 有很多选项是公共的, 例如你在对数据库进行检查的时候, 需要指定host和user以及其password来连接上mysqlserver来进行相关操作, 这个时候其实用到的host等东西跟我们之前的mysql-client其实是类似的

也就是说他们是作为mysql众多工具的公共选项的, mysqlclient可以用, mysqlcheck也能用.. 

下面是一些公用的选项 .. 

公共选项
长选项简写说明
--host-h--host=127.0.0.1 或者 -h 127.0.0.1
--port-P (注意是大写)--port=port_num , -P port_num (TCP/IP 连接使⽤的端⼝号)
--user-u--user username , -uusername, -u username, 是用于连接到mysql服务器的用户名
--password-p (注意是小写)指定登录的mysql对应用户的密码
--defaults-file使⽤指定的选项⽂件。如果该⽂件不存在,则会发⽣错误
--compress-C如果可能,压缩客⼾端和服务器之间传输的所有信息
--protocol⽤于连接到服务器的传输协议, 默认为TCP
--version-V显⽰版本信息并退出
--help-?显⽰帮助信息并退出
C:\Users\23863>mysqlcheck -V
mysqlcheck  Ver 8.0.37 for Win64 on x86_64 (MySQL Community Server - GPL)

mysqlcheck 是一种表维护程序

mysqlcheck客户端用于执行表维护, 可以对表进行分析, 检查, 优化或者修复操作.

  • 分析 查看表的关键字的分布, 能够让sql生成正确的执行计划, 支持innodb, myisam
  • 检查, 检查表的完整性以及数据库表或者索引是否损坏, 支持innodb和myisam
  • 优化的作用是优化空间, 减少碎片, 提高io, 支持innodb, myisam
  • 修复是指的修复已经损坏的表, 支持innodb, myisam.

注意

  • mysqlcheck需要mysqlserver处于运行状态
  • 执行过程中, 相应的表将会被锁定, 其他所有的操作将会被阻塞
  • 并不是所有的存储引擎都支持mysqlcheck.
  • 执行表修复之前必须备份, 在某些情况下可能会造成数据丢失.

使用方法

你一般可以用下面这三种方法来使用mysqlcheck

mysqlcheck [options] db_name [tbl_name ...]
mysqlcheck [options] --databases db_name ...
mysqlcheck [options] --all-databases

mysqlcheck就是mysqlcheck.exe, 可以通过options来指定选项, 然后后面什么db_name之类的就是选择数据库和表的策略了

这里有几个你需要注意的: 

  • 如果你不指定db_name下的任何tbl_name, 或者是你使用--databases, 亦或是--all-databases选项, 整个数据库(所有的database)将会被检查, 如下: 
mysqlcheck [options] db_name
mysqlcheck [options] --databases
mysqlcheck [options] --all-databases

例如, 我有如下数据库:

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| phoebe             |
| sys                |
| tethys             |
| wangyiyun          |
+--------------------+
7 rows in set (0.01 sec)

首先如果我只是指定一个数据库名(phoebe): 

C:\Users\23863>mysqlcheck -a phoebe -uroot -p
Enter password: ****
phoebe.car                                         OK
phoebe.car_check                                   OK
phoebe.car_check_config                            OK
phoebe.car_check_record                            OK
phoebe.car_delivery_info                           OK
phoebe.car_driver                                  OK
phoebe.car_driver_record                           OK
phoebe.car_parts                                   OK
phoebe.car_price                                   OK
phoebe.car_price_weight                            OK
phoebe.car_report                                  OK
phoebe.car_specs                                   OK
phoebe.car_type                                    OK
phoebe.car_used_time_record                        OK
phoebe.department_quota_config                     OK
phoebe.driver_up_down_record                       OK
phoebe.flyway_schema_history                       OK
phoebe.item                                        OK
phoebe.item_cost_type                              OK
phoebe.item_department                             OK
phoebe.item_job_content                            OK
phoebe.item_machine                                OK
phoebe.item_part                                   OK
phoebe.item_process                                OK
phoebe.item_process_detail                         OK
phoebe.message                                     OK
phoebe.option_config                               OK
phoebe.order_adjust_record                         OK
phoebe.order_approval                              OK
phoebe.order_driver_record                         OK
phoebe.order_evaluate                              OK
phoebe.order_submit                                OK
phoebe.orders                                      OK
phoebe.region                                      OK
phoebe.user_role                                   OK

如果我使用--databases 然后指定phoebe

发现check了phoebe的所有table: 

C:\Users\23863>mysqlcheck -a --databases phoebe -uroot -p
Enter password: ****
phoebe.car                                         OK
phoebe.car_check                                   OK
phoebe.car_check_config                            OK
phoebe.car_check_record                            OK
phoebe.car_delivery_info                           OK
phoebe.car_driver                                  OK
phoebe.car_driver_record                           OK
phoebe.car_parts                                   OK
phoebe.car_price                                   OK
phoebe.car_price_weight                            OK
phoebe.car_report                                  OK
phoebe.car_specs                                   OK
phoebe.car_type                                    OK
phoebe.car_used_time_record                        OK
phoebe.department_quota_config                     OK
phoebe.driver_up_down_record                       OK
phoebe.flyway_schema_history                       OK
phoebe.item                                        OK
phoebe.item_cost_type                              OK
phoebe.item_department                             OK
phoebe.item_job_content                            OK
phoebe.item_machine                                OK
phoebe.item_part                                   OK
phoebe.item_process                                OK
phoebe.item_process_detail                         OK
phoebe.message                                     OK
phoebe.option_config                               OK
phoebe.order_adjust_record                         OK
phoebe.order_approval                              OK
phoebe.order_driver_record                         OK
phoebe.order_evaluate                              OK
phoebe.order_submit                                OK
phoebe.orders                                      OK
phoebe.region                                      OK
phoebe.user_role                                   OK

 -- 提示

你无法在使用--databases的时候不指定db_name :

C:\Users\23863>mysqlcheck -a --databases -uroot -p
You forgot to give the arguments! Please see mysqlcheck --help
for more information.

--all-databases : 

可以看到扫描了所有的数据库的所有表

C:\Users\23863>mysqlcheck -a --all-databases -uroot -p
Enter password: ****
mysql.columns_priv                                 OK
mysql.component                                    OK
mysql.db                                           OK
mysql.default_roles                                OK
mysql.engine_cost                                  OK
mysql.func                                         OK
mysql.general_log
note     : The storage engine for the table doesn't support analyze
mysql.global_grants                                OK
mysql.gtid_executed                                OK
mysql.help_category                                OK
mysql.help_keyword                                 OK
mysql.help_relation                                OK
mysql.help_topic                                   OK
mysql.innodb_index_stats                           OK
mysql.innodb_table_stats                           OK
mysql.ndb_binlog_index                             OK
mysql.password_history                             OK
mysql.plugin                                       OK
mysql.procs_priv                                   OK
mysql.proxies_priv                                 OK
mysql.replication_asynchronous_connection_failover OK
mysql.replication_asynchronous_connection_failover_managed OK
mysql.replication_group_configuration_version      OK
mysql.replication_group_member_actions             OK
mysql.role_edges                                   OK
mysql.server_cost                                  OK
mysql.servers                                      OK
mysql.slave_master_info                            OK
mysql.slave_relay_log_info                         OK
mysql.slave_worker_info                            OK
mysql.slow_log
note     : The storage engine for the table doesn't support analyze
mysql.tables_priv                                  OK
mysql.time_zone                                    OK
mysql.time_zone_leap_second                        OK
mysql.time_zone_name                               OK
mysql.time_zone_transition                         OK
mysql.time_zone_transition_type                    OK
mysql.user                                         OK
phoebe.car                                         OK
phoebe.car_check                                   OK
phoebe.car_check_config                            OK
phoebe.car_check_record                            OK
phoebe.car_delivery_info                           OK
phoebe.car_driver                                  OK
phoebe.car_driver_record                           OK
phoebe.car_parts                                   OK
phoebe.car_price                                   OK
phoebe.car_price_weight                            OK
phoebe.car_report                                  OK
phoebe.car_specs                                   OK
phoebe.car_type                                    OK
phoebe.car_used_time_record                        OK
phoebe.department_quota_config                     OK
phoebe.driver_up_down_record                       OK
phoebe.flyway_schema_history                       OK
phoebe.item                                        OK
phoebe.item_cost_type                              OK
phoebe.item_department                             OK
phoebe.item_job_content                            OK
phoebe.item_machine                                OK
phoebe.item_part                                   OK
phoebe.item_process                                OK
phoebe.item_process_detail                         OK
phoebe.message                                     OK
phoebe.option_config                               OK
phoebe.order_adjust_record                         OK
phoebe.order_approval                              OK
phoebe.order_driver_record                         OK
phoebe.order_evaluate                              OK
phoebe.order_submit                                OK
phoebe.orders                                      OK
phoebe.region                                      OK
phoebe.user_role                                   OK
sys.sys_config                                     OK
sys.user                                           OK
tethys.anno_aim                                    OK
tethys.announce_safe                               OK
tethys.announcement                                OK
tethys.approve_request                             OK
tethys.approve_step                                OK
tethys.carts                                       OK
tethys.check                                       OK
tethys.check_detail                                OK
tethys.course                                      OK
tethys.course_aim                                  OK
tethys.course_theme                                OK
tethys.customer_feedback                           OK
tethys.customer_record                             OK
tethys.delivery_quantity_chart                     OK
tethys.delivery_quantity_record                    OK
tethys.delivery_rate_chart                         OK
tethys.department                                  OK
tethys.device                                      OK
tethys.device_usage_detail                         OK
tethys.device_usage_record                         OK
tethys.distribution_list                           OK
tethys.drawing_head                                OK
tethys.flyway_schema_history                       OK
tethys.forklift                                    OK
tethys.inventory_check                             OK
tethys.inventory_check_remarks                     OK
tethys.leader_board                                OK
tethys.maintenance_record                          OK
tethys.material                                    OK
tethys.menu                                        OK
tethys.message                                     OK
tethys.order_completed                             OK
tethys.order_enterstore                            OK
tethys.order_enterstore_comments                   OK
tethys.order_enterstore_material                   OK
tethys.order_item                                  OK
tethys.order_sendgoods                             OK
tethys.orders                                      OK
tethys.organization                                OK
tethys.product                                     OK
tethys.project_schedule                            OK
tethys.remark                                      OK
tethys.repair_record                               OK
tethys.role                                        OK
tethys.role_menu                                   OK
tethys.score                                       OK
tethys.score_change                                OK
tethys.shift_records                               OK
tethys.shuttle_car_dist                            OK
tethys.site                                        OK
tethys.special_bill_package                        OK
tethys.special_car_dist                            OK
tethys.station_info                                OK
tethys.supplier                                    OK
tethys.transhipment_bill                           OK
tethys.transhipment_bill_detail                    OK
tethys.transhipment_time                           OK
tethys.tray                                        OK
tethys.tray_item                                   OK
tethys.user                                        OK
tethys.user_backup                                 OK
tethys.user_role                                   OK
tethys.violation                                   OK
tethys.warehouse                                   OK
tethys.work_log                                    OK
wangyiyun.singer_info                              OK
wangyiyun.song_comment                             OK
wangyiyun.song_info                                OK

mysqlcheck -- options

参考所有的选项: 

MySQL :: MySQL 8.0 Reference Manual :: 6.5.3 mysqlcheck — A Table Maintenance Program

 常用: 

  • --analyze  或者-a  : 分析指定的数据库和表
  • --auto-repair, 如果你的表已经损坏, 那么就自动修复它(所有的修复将会在所有的指定的表被检查完之后执行)
  • --check, -c , 检查你的表中的错误这是默认的操作, 如果你不指定任何options
C:\Users\23863>mysqlcheck --all-databases -uroot -p
Enter password: ****
mysql.columns_priv                                 OK
mysql.component                                    OK
mysql.db                                           OK
mysql.default_roles                                OK
mysql.engine_cost                                  OK

..... 
  • --check-only-changed,- C, 仅检查⾃上次检查以来更改过的表
  • --databases,-B, --databases db_name 多个数据库名⽤空格隔开 处理指定数据库中的所有表
  • --force, -f 即使发⽣SQL错误也要继续
  • --optimize,-o 优化表 (注意是否支持innodb)
  • --repair,-r 执⾏可能进⾏的任务修复操作,除了唯⼀键
  • --skip-database --skip-database=db_name 不需要执⾏检查的数据库名(区分⼤⼩写)
  • --tables --tables=table_name 多个表名⽤空格隔开 在选项之后的所有名称参数都被视为表名
  • --use-frm 对于MyISAM表的修复操作
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值