设为首页 收藏本站
查看: 659|回复: 0

[经验分享] MySQL之常用工具及基本操作(二)

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2014-12-5 08:59:35 | 显示全部楼层 |阅读模式
四、客户端管理工具mysqlcheck的使用。mysqlcheck是客户端表维护工具,可以检查、修复、优化或分析表。
如 shell> mysqlcheck databasename tablename [options]
databasename为数据库名
tablename为表名
如果你只指定databasename,通常会检查databasename下所有的表。如果你既不指定databasename,也不指定tablename,那么一定要添加参数--all-databases,否则系统会不知道检查哪个数据库。参数的作用已经写在表格内,请大家参看。
--all-databases
检查所有数据库中的所有表是否正常
--analyze
分析表是否正常
--auto-repair
如果表损坏,自动修复
--bind-address=ip_address
同mysql命令
--character-sets-dir=path
同mysql命令
--check
检查表的错误
--check-only-changed
只检查自上次检查后改变的地方
--compress
同mysql命令
--databases
处理所有在命令行上指定的数据库
--debug[=debug_options]
写debug日志
--debug-check
同mysql命令
--debug-info
同mysql命令
--default-character-set=charset_name
同mysql命令
--defaults-extra-file=file_name
同mysql命令
--defaults-file=file_name
同mysql命令
--defaults-group-suffix=str
同mysql命令
--extended
检查并且修复表
--fast
检查没有被正常关闭的表
--force
同mysql命令
--help
同mysql命令
--host=host_name
同mysql命令
--medium-check
比--extended更快的操作
--no-defaults
Read no option files
--optimize
优化表
--password[=password]
同mysql命令
--port=port_num
同mysql命令
--print-defaults
同mysql命令
--protocol=type
同mysql命令
--quick
最快速检查表
--repair
修复表错误,但不能修复唯一约束内有不唯一的值的情况
--silent
同mysql命令
--socket=path
同mysql命令
--ssl
同mysql命令
--ssl-ca=file_name
同mysql命令
--ssl-capath=dir_name
同mysql命令
--ssl-cert=file_name
同mysql命令
--ssl-cipher=cipher_list
同mysql命令
--ssl-crl=file_name
同mysql命令
--ssl-crlpath=dir_name
同mysql命令
--ssl-key=file_name
同mysql命令
--ssl-verify-server-cert
同mysql命令
--tables
覆盖--databases选项
--use-frm
修复MyISAM引擎表
--user=user_name,
同mysql命令
--verbose
同mysql命令
--version
同mysql命令
--write-binlog
记录ANALYZE, OPTIMIZE, REPAIR到binlog
它有以下参数可供选择:
mysqlcheck的例子:/usr/local/mysql/bin/mysqlcheck --databases test  --auto-repair  --user=root --host=127.0.0.1 自动修复test库内的表。


五、数据库备份工具mysqldump的使用。mysqldump需要select权限以备份表,需要show view权限以备份视图,需要trigger权限以备份触发器。mysqldump能生成csv、文本、XML等格式。
    mysqldump的优点是方便和灵活,并且在恢复前可以做一定的自定义修改。但它在速度方面和可扩展性方面不是很强。如果需要备份大数据,mysqldummp不是一个好的解决方案,恢复数据会非常慢。对于高扩展的备份与恢复,物理备份是更好的选择。
    mysqldump语法如下
    shell> mysqldump [options] db_name [tbl_name ...]或
     shell> mysqldump [options] --databases db_name ...或
     shell> mysqldump [options] --all-databases

    参数如下表所示:
参数描述适用弃用
--add-drop-database在每个 CREATE DATABASE 声明前加上DROP DATABASE 声明


--add-drop-table在每个 CREATE TABLE  声明前加上DROP TABLE 声明


--add-drop-trigger在每个 CREATE TRIGGER  声明前加上DROP TRIGGER 声明


--add-locks在备份时所表


--all-databases备份所有数据库里的所有表


--allow-keywords将表名作为列名的前缀


--apply-slave-statements将STOP SLAVE放在CHANGE MASTER声明前,并将START SLAVE放在结尾


--bind-address=ip_address同mysql命令


--comments增加注释到备份文件


--compact生成更加紧凑的输出


--compatible=name[,name,...]生成更加兼容的格式


--complete-insert使用完整的 INSERT 声明


--create-options在CREATE TABLE声明里包含所有的MySQL指定选项


--databases备份指定的数据库


--debug[=debug_options]写debug日志


--debug-check同mysql命令


--debug-info同mysql命令


--default-auth=plugin同mysql命令


--default-character-set=charset_name同mysql命令


--defaults-extra-file=file_name同mysql命令


--defaults-file=file_name同mysql命令


--defaults-group-suffix=str同mysql命令


--delete-master-logs在执行dump操作后删除master节点的binlog


--disable-keys对于每一个表的INSERT声明前加上/*!40000 ALTER TABLE tbl_name DISABLE KEYS */; 和/*!40000 ALTER TABLE tbl_name ENABLE KEYS */,这样可以更快的载入dump文件,但仅仅对具有非唯一索引的MyISAM表有效。


--dump-date包含dump时间


--flush-logs在开始导出前刷新MYSQL server日志文件


--flush-privileges在导出后刷新权限


--help同mysql命令


--hex-blob使用16进制导出二进制列


--host同mysql命令


--ignore-error=error[,error]...跳过指定的错误5.7.1

--ignore-table=db_name.tbl_name不导出指定的表


--insert-ignore写INSERT IGNORE 声明,而不是 INSERT 声明


--lock-all-tables锁所有的数据库表


--lock-tables导出前锁数据库内的表


--log-error=file_name追加错误日志到指定文件


--login-path=name同mysql命令


--max_allowed_packet=value同mysql命令


--net_buffer_length=value同mysql命令


--no-autocommit添加 SET autocommit = 0 和COMMIT 声明在每个  INSERT 声明前


--no-create-db不创建 CREATE DATABASE 声明


--no-data不导出表的数据


--no-defaults同mysql命令


--no-set-names不设置字符集


--no-tablespaces不写任何 CREATE LOGFILE GROUP 或 CREATE TABLESPACE 声明


--opt--add-drop-table --add-locks --create-options --disable-keys --extended-insert --lock-tables --quick --set-charset的缩写


--order-by-primary按逐渐或唯一索引排序导出数据行


--password[=password]同mysql命令


--port=port_num同mysql命令


--print-defaults同mysql命令


--protocol=type同mysql命令


--quick一次检索一行,而不分析每行的内容


--quote-names添加引用标识


--replace用 REPLACE 声明代替 INSERT 声明


--result-file=file输出文件到指定位置


--secure-auth同mysql命令5.7.45.7.5
--set-charset设置字符集


--set-gtid-purged=value增加 SET @@GLOBAL.GTID_PURGED


--shared-memory-base-name=name同mysql命令


--single-transaction在导出前写 BEGIN SQL 声明


--skip-add-drop-tableadd-drop-table 反向操作


--skip-add-locksadd-locks 反向操作


--skip-commentscomments 反向操作


--skip-compactcompact 反向操作


--skip-disable-keysdisable-keys 反向操作


--skip-extended-insertextended-insert 反向操作


--skip-opt关闭 --opt 选项


--skip-quickquick 反向操作


--skip-quote-namesquote-names 反向操作


--skip-set-charset不设置字符集


--skip-triggers不导出触发器


--skip-tz-utc关闭 tz-utc 选项


--socket=path同mysql命令


--ssl同mysql命令


--ssl-ca=file_name同mysql命令


--ssl-capath=dir_name同mysql命令


--ssl-cert=file_name同mysql命令


--ssl-cipher=cipher_list同mysql命令


--ssl-crl=file_name同mysql命令


--ssl-crlpath=dir_name同mysql命令


--ssl-key=file_name同mysql命令


--ssl-verify-server-cert同mysql命令


--tab=path生成一个用tab隔开的数据文件。


--tables覆盖 --databases 选项


--triggers导出触发器


--tz-utc针对列中的TIMESTAMP字段,增加SET TIME_ZONE='+00:00'到导出文件中


--user=user_name同mysql命令


--verbose同mysql命令


--version同mysql命令


--where='where_condition'导出符合where条件的行


--xml生成XML输出

mysqldump的操作很简单,用的最多的就是/usr/local/mysql/bin/mysqldump test --skip-comments --opt > backup.sql --opt这个选项,使用--opt这个选项代表同时使用了

--add-drop-table 在create前先drop
--add-locks 导出前加lock table,完成后加unlock table

--create-options 包含所有create语句声明选项

--disable-keys 使键约束失效

--extended-insert 使用多行插入语句

--lock-tables 对表加读锁

--quick 一次检索一行

--set-charset 设置字符集
使用这个设置可以保证数据的完整性,在效率上也有一定保证。


六、mysqlimport工具的使用,mysqlimport为数据导入操作,能将文本数据导入到数据库内。
    语法如下:
    shell> mysqlimport [options] db_name textfile1 [textfile2 ...]

    注意:它并不是针对mysqldump的,而是针对文本数据文件的。
    下面举个例子:
    首先在test库里创建表:
    shell> mysql -e 'CREATE TABLE imptest(id INT, n VARCHAR(30))' test
    然后创建文本 data.txt,文本内容为

    100[tab]Max Sydow[回车]
    101[tab]Count Dracula
    然后调用mysqlimport
    shell> mysqlimport --user=root --host=127.0.0.1 test imptest.txt
    注意:数据文件名应与表名一致。
    操作完成后,imptest表里会有两行数据,数据内容为刚才data.txt内的内容。


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-36220-1-1.html 上篇帖子: MySQL之常用工具及基本操作(一) 下篇帖子: MySQL之常用工具及基本操作(三) 常用工具
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表