现在业内常用的MySQL高可用方案有哪些?

现在业内常用的MySQL高可用方案有哪些?目录 如何将excel数据导入MySQL表中? 用xtrabackup跑mysql物理备份,建议授予哪些权限? select里用rand(),怎么优化效率? 现在业内常用的MySQL高可用方案有哪些…

目录

  • 如何将excel数据导入MySQL表中?
  • 用xtrabackup跑mysql物理备份,建议授予哪些权限?
  • select里用rand(),怎么优化效率?
  • 现在业内常用的MySQL高可用方案有哪些?
  • 什么时候MySQL的索引”失效”不可用?
  • MySQL从库show processlist出现system lock的原因以及解决方法有哪些?

一、如何将excel数据导入MySQL表中?
将excel导入MySQL表的方式有很多,这里列举几种平时常用的方法:

1、将excel另存为csv文件,再使用LOAD DATA导入表,命令参考如下:
LOAD DATA INFILE “c:/tmp/discounts.csv”

INTO TABLE discounts

FIELDS TERMINATED BY “,”

ENCLOSED BY “””

LINES TERMINATED BY “n”

IGNORE 1 ROWS;

2、利用Navicat、MySQL Workbench等第三方工具进行导入

3、excel利用函数拼接成insert SQL进行数据插入(数据量大时不推荐,效率极低)

4、例行批量导入,安利python的xlwt模块

注意:进行数据导入时注意先执行set names设置字符集,以免造成乱码

 

二、用xtrabackup跑mysql物理备份,建议授予哪些权限?

可能需要用到以下权限:

1、RELOAD and LOCK TABLES (用于FLUSH TABLES WITH READ LOCK 和 FLUSH ENGINE LOGS)

2、BACKUP_ADMIN (用于查询表performance_schema.log_status, 执行LOCK INSTANCE FOR BACKUP, LOCK BINLOG FOR BACKUP, 或 LOCK TABLES FOR BACKUP)

3、REPLICATION CLIENT(获取一致性位点)

4、PROCESS(用于执行SHOW ENGINE INNODB STATUS或者查看线程状态等)

5、SUPER(复制环境下用于start/stop the slave threads)

6、SELECT(使用选项–incremental-history-name or –incremental-history-uuid时获取innodb_to_lsn插入到PERCONA_SCHEMA.xtrabackup_history表)

 

三、select里用rand(),怎么优化效率?

案例:

select id from t1 where id = round(rand()*13241324);

其中id列是IINT类型的主键

(一)问题点

该SQL的问题点主要在于当使用rand()匹配时,实际上是逐行提取数据,rand()每次生成一个随机数进行单行匹配,即如果t1表有100万数据就会匹配100万次,即便有索引也没用,也要全表扫描

(二)优化方式

优化方式主要有2种思路,第一种是通过子查询关联,第二种是通过范围查询加limit 1,如下所示:

1、select id from t1 join (select round(rand()*13241324) as id2) as t2 where t1.id = t2.id2

2、select id from t1 where id > (select round(rand()*(select max(id) from t1)) as nid) limit 1

再次提醒,不要用rand()直接进行匹配或者排序,会引发性能灾难

参考:

http://imysql.com/2014/07/04/…

 

四、现在业内常用的MySQL高可用方案有哪些?

目前来说,比较多的开源方案分内置高可用与外部实现,内置高可用有如下:
1、官方版本分支:MGR(首推)

2、percona分支:PXC

3、MariaDB:Galera Cluster

外部实现方案:

1、orchestrator(GTID)

2、replication-manager(GTID)

3、MHA(传统复制)

4、MOHA(支持多AZ部署)

5、其他…

 

五、什么时候MySQL的索引”失效”不可用?

1、通过索引扫描的记录超过20%~30%,可能会变成全表扫描

2、联合索引中,查询条件不符合左侧前导要求

3、查询条件列最左以通配符%开始

4、查询条件发生数据类型隐式转换,或者字符集不匹配

5、HEAP表使用HASH索引时,使用范围检索或者ORDER BY

6、多表关联时,排序字段不属于驱动表,无法利用索引完成排序

7、JOIN查询时,关联列数据类型(字符集)不一致也会导致索引不可用

8、不可见索引,即便force index也不可用

9、违反索引排序规则

详情请戳:「周四见」第108期—《MySQL索引为何“失效”》

 

六、MySQL从库show processlist出现system lock的原因以及解决方法有哪些?

由于大量的小事物如UPDATE/DELETE table where一行数据,这种只包含一行DML event的语句,table是一张大表。

1、这个表上没有主键或者唯一键,可以考虑尝试修改参数slave_rows_search_algorithms。

2、由于类似innodb lock堵塞,也就是slave从库修改了数据同时和sql_thread也在修改同样的数据。

3、确实I/O扛不住了,修改sync_binlog/innodb_flush_log_at_trx_commit或者提高IO子系统的IO能力

友情提示:

MySQL数据库表建议都设置int/bigint的自增主键,”业务主键”设置为not null + 唯一索引


一个轻松的python算法题:有64瓶药,其中63瓶是无毒的,只有一瓶是有毒的。如果小白鼠喝了有毒的药,3天后会死掉,喝了无毒的药,喝了多少瓶都没事。现在只剩下3天时间,请问最少需要多少只小白鼠才能试出哪瓶药有毒?

总共需要六只小白鼠。

6只小白鼠当做二进制的位数,那么小白鼠可以表示从000000 – 111111,也就是十进制的0-63个数,药按照1-64排好号,比如第一瓶药编号1,对应小白鼠000001,最右边的小白鼠喝,以此类推,比如第8瓶药,001000,第三只小白鼠喝。从1-63号药都喝一遍。假如最后死的小白鼠对应二进制是001111,那么是15号药有毒。


对文章感兴趣的朋友们可以加我哦,这里有一个乐于交友的人鸭!

微信:lvqingshan_

现在业内常用的MySQL高可用方案有哪些?

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/10654.html

(0)
上一篇 2022-12-24
下一篇 2022-12-24

相关推荐

  • MySql–MVCC[通俗易懂]

    MySql–MVCC[通俗易懂]一、MVCC是什么? Multi-Vesrion Concurrency Control多版本并发控制,MVCC是一种并发控制的方法,一般在数据库管理系统中,实现对数据库的并发访问。 你可以把MVC…

    2023-04-01
    160
  • MySQL数据库安装_MySQL安装教程

    MySQL数据库安装_MySQL安装教程作者:余振兴 一、工具介绍 dbdeployer 是一款十分强大的数据库测试环境部署工具,可实现一键部署不同架构、不同版本的数据库环境。 如:MySQL 主从复制、GTID 模式复制、MySQL 组…

    2022-12-23
    136
  • 删除远程桌面连接记录 vps群控[通俗易懂]

    删除远程桌面连接记录 vps群控[通俗易懂]删除远程桌面连接记录 vps群控远程桌面是微软公司为了便于网络管理员管理维护服务器推出的一项服务。从windows 2000 server版本开始引入,网络管理员时候远程桌面连接器连接到网络任意一台…

    2023-02-25
    139
  • Python中类的实例在Java中的对应

    Python中类的实例在Java中的对应Java和Python的基本语法有所不同,但两者对于面向对象编程的思想是一致的。在Python中,类的实例是动态创建的,而在Java中则需要明确定义。在Java中,创建对象的方式与Python略有不同,Java中需要使用关键字“new”来实例化一个类。

    2024-01-08
    114
  • Python命令行参数解析工具

    Python命令行参数解析工具在Python中,我们通常需要对命令行输入的参数进行解析,以便程序可以根据用户提供的参数执行相应的操作。手动编写参数解析代码既困难又容易出错,因此使用命令行参数解析工具可以方便的处理这些任务。

    2023-12-05
    122
  • Postgresql 安装失败:Problem running post-install step. Installation may not complete correctly.[通俗易懂]

    Postgresql 安装失败:Problem running post-install step. Installation may not complete correctly.[通俗易懂]1 进入pgsql目录下。执行 .ininitdb -D .data -E UTF8 其中 .data是你定义的数据库的路径。这个可以和pgsql的安装路径不同。 这一步会在数据库路径中加入很多默…

    2022-12-16
    161
  • Python Strip函数的高效使用技巧

    Python Strip函数的高效使用技巧Python Strip函数是一种用于去除字符串首尾指定字符的函数,然而,Strip函数并不是窄门而又深入的工具,使用Strip函数需要正确的理解和掌握。本文从多个方面探讨如何高效使用Python Strip函数。

    2024-03-25
    78
  • MySQL日志简介「建议收藏」

    MySQL日志简介「建议收藏」一.MySQL日志简介 二.错误日志 作用: 记录mysql数据库的一般状态信息及报错信息,是我们对于数据库常规报错处理的常用日志。 默认位置: $MYSQL_HOME/data/ 开启方式: (My

    2022-12-18
    139

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注