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表的修复操作