首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有些表没有主键,我如何解决这个问题?

有些表没有主键,我如何解决这个问题?
EN

Database Administration用户
提问于 2016-06-25 13:12:28
回答 1查看 905关注 0票数 1

在过去运行myqsltunner.pl时,我有以下消息--这是不存在的。我怎样才能解决这些问题?

代码语言:javascript
复制
-------- Galera Metrics ------------------------------------------------------
    [--] Galera is enabled.
    [--] GCache is using 0B
    [!!] Following table(s) don't have primary key:
    [!!]    cphulkd.login_track
    [!!]    mailscanner.audit_log
    [!!]    mailscanner.geoip_country
    [!!]    mailscanner.inq
    [!!]    mailscanner.maillog
    [!!]    mailscanner.mtalog
    [!!]    mailscanner.outq
    [!!]    mailscanner.saved_filters
    [!!]    mailscanner.user_filters
    [!!]    roundcube.cache
    [!!]    roundcube.cache_shared
    [!!]    roundcube.dictionary
    [!!]    tabaklae_wp1.wp_social_users
    [!!]    tabaklae_wp1.wp_wangguardreportqueue
    [!!]    uhlhosti_whmc5.cloudflare_log
    [!!]    uhlhosti_whmc5.cloudflare_plans
    [!!]    uhlhosti_whmc5.cloudflare_ulog
    [!!]    uhlhosti_whmc5.mod_invoicedata
    [!!]    uhlhosti_whmc5.tbladdonmodules
    [!!]    uhlhosti_whmc5.tbladminperms
    [!!]    uhlhosti_whmc5.tblaffiliates
    [!!]    uhlhosti_whmc5.tblconfiguration
    [!!]    uhlhosti_whmc5.tblcustomfieldsvalues
    [!!]    uhlhosti_whmc5.tblknowledgebaselinks
    [!!]    uhlhosti_whmc5.tbloauthserver_access_token_scopes
    [!!]    uhlhosti_whmc5.tbloauthserver_authcode_scopes
    [!!]    uhlhosti_whmc5.tbloauthserver_client_scopes
    [!!]    uhlhosti_whmc5.tbloauthserver_user_authz_scopes
    [!!]    uhlhosti_whmc5.tblpaymentgateways
    [!!]    uhlhosti_whmc5.tblproductconfiglinks
    [!!]    uhlhosti_whmc5.tblservergroupsrel
    [!!]    uhl_vault.vault_uhlautomatic_del
    [!!]    uhl_vault.vault_uhlcache
    [!!]    uhl_vault.vault_uhlcategories_folders
    [!!]    uhl_vault.vault_uhlemails
    [!!]    uhl_vault.vault_uhlexport
    [!!]    uhl_vault.vault_uhlitems_edition
    [!!]    uhl_vault.vault_uhlkb_items
    [!!]    uhl_vault.vault_uhllog_items
    [!!]    uhl_vault.vault_uhlmisc
    [!!]    uhl_vault.vault_uhlrestriction_to_roles
    [!!]    uhl_vault.vault_uhlroles_values
    [!!]    wp_highpassion.wp_icl_locale_map
    [!!] Following table(s) are not InnoDB table:
    [!!]    atecbb_wp1.wp_usermeta
    [!!]    atecbb_wp1.wp_users
    [!!]    cphulkd.auths
    [!!]    cphulkd.ip_lists
    [!!]    cphulkd.known_netblocks
    [!!]    cphulkd.login_track
    [!!]    eximstats.defers
    [!!]    eximstats.failures
    [!!]    eximstats.sends
    [!!]    eximstats.smtp
    [!!]    mailscanner.audit_log
    [!!]    mailscanner.blacklist
    [!!]    mailscanner.geoip_country
    [!!]    mailscanner.inq
    [!!]    mailscanner.maillog
    [!!]    mailscanner.mcp_rules
    [!!]    mailscanner.mtalog
    [!!]    mailscanner.outq
    [!!]    mailscanner.sa_rules
    [!!]    mailscanner.saved_filters
    [!!]    mailscanner.user_filters
    [!!]    mailscanner.users
    [!!]    mailscanner.whitelist
    [!!]    tabaklae_wp1.wp_psp_link_builder
    [!!]    tabaklae_wp1.wp_psp_link_redirect
    [!!]    tabaklae_wp1.wp_psp_monitor_404
    [!!]    tabaklae_wp1.wp_psp_post_planner_cron
    [!!]    tabaklae_wp1.wp_psp_serp_reporter
    [!!]    tabaklae_wp1.wp_psp_serp_reporter2rank
    [!!]    tabaklae_wp1.wp_psp_web_directories
    [!!]    uhlhost_wp1.wp_commentmeta
    [!!]    uhlhost_wp1.wp_comments
    [!!]    uhlhost_wp1.wp_links
    [!!]    uhlhost_wp1.wp_options
    [!!]    uhlhost_wp1.wp_postmeta
    [!!]    uhlhost_wp1.wp_posts
    [!!]    uhlhost_wp1.wp_term_relationships
    [!!]    uhlhost_wp1.wp_term_taxonomy
    [!!]    uhlhost_wp1.wp_terms
    [!!]    uhlhost_wp1.wp_usermeta
    [!!]    uhlhost_wp1.wp_users
    [!!]    uhlhost_wp3.wp_commentmeta
    [!!]    uhlhost_wp3.wp_comments
    [!!]    uhlhost_wp3.wp_links
    [!!]    uhlhost_wp3.wp_newsletter_sent
    [!!]    uhlhost_wp3.wp_options
    [!!]    uhlhost_wp3.wp_postmeta
    [!!]    uhlhost_wp3.wp_posts
    [!!]    uhlhost_wp3.wp_term_relationships
    [!!]    uhlhost_wp3.wp_term_taxonomy
    [!!]    uhlhost_wp3.wp_terms
    [!!]    uhlhost_wp3.wp_usermeta
    [!!]    uhlhost_wp3.wp_users
    [!!]    whmxfer.sessions
    [!!]    wp_highpassion.wp_psp_link_builder
    [!!]    wp_highpassion.wp_psp_link_redirect
    [!!]    wp_highpassion.wp_psp_monitor_404
    [!!]    wp_highpassion.wp_psp_post_planner_cron
    [!!]    wp_highpassion.wp_psp_serp_reporter
    [!!]    wp_highpassion.wp_psp_serp_reporter2rank
    [!!]    wp_highpassion.wp_psp_web_directories
EN

回答 1

Database Administration用户

回答已采纳

发布于 2016-06-25 15:03:43

这是一个新特性,是Galera集群支持的一部分。Galera复制用于InnoDB表(可以启用MyISAM复制,但它是经验复制),并且由于它使用基于行的复制,这些表应该具有正确和快速工作的主键。

但是,如果表和应用程序没有设计为拥有它们,则不能仅仅添加它们。您必须对这些表进行分析。

  • 如果存在一些不可空的唯一密钥,则可以直接将其更改为主键,因为它们实际上是相同的。
  • 如果有一些可空的唯一键,那么您需要评估是否需要该可空性。
  • 您可以尝试识别表的自然键(一组唯一标识每一行的列),并在它们上创建一个复合PK。
  • 如果没有(合理)组合的列,您可以添加一个代理键-一个自定义列。

除了第一个之外,所有这些都需要检查并可能修改应用程序,以使其与新的表结构兼容。

真正的问题是-这真的是个问题吗?你在使用Galera集群吗?这些表中有许多被认为甚至不是InnoDB --如果它们是MyISAM,那么Galera复制可能根本不起作用。

对于InnoDB键,即使您不使用Galera,也可以定义主键,因为InnoDB依赖于内部的主键,即使您不定义主键,它也会自动选择一个;如果没有合适的唯一键,它将在背后创建一个低效的inacessibe替代键。

顺便提一句,mysqltuner和类似的脚本会告诉你很多信息,但是即使是“建议”也不是盲目地遵循,也不是每件事都是问题。这些只是你应该检查和思考的事情。不要根据这样的建议更改配置,除非您了解更改的内容以及错误的原因。

票数 3
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/142239

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档