mysql数据库

MySQL 参数设置

与世无争的帅哥 提交于 2020-03-18 14:32:29
innodb_buffer_pool_size 如果用Innodb,那么这是一个重要变量。相对于MyISAM来说,Innodb对于buffer size更敏感。MySIAM可能对于大数据量使用默认的key_buffer_size也还好,但Innodb在大数据量时用默认值就感觉在爬了。 Innodb的缓冲池会缓存数据和索引,所以不需要给系统的缓存留空间,如果只用Innodb,可以把这个值设为内存的70%-80%。和 key_buffer相同,如果数据量比较小也不怎么增加,那么不要把这个值设太高也可以提高内存的使用率。 innodb_additional_pool_size 这个的效果不是很明显,至少是当操作系统能合理分配内存时。但你可能仍需要设成20M或更多一点以看Innodb会分配多少内存做其他用途。 innodb_log_file_size 对于写很多尤其是大数据量时非常重要。要注意,大的文件提供更高的性能,但数据库恢复时会用更多的时间。我一般用64M-512M,具体取决于服务器的空间。 innodb_log_buffer_size 默认值对于多数中等写操作和事务短的运用都是可以的。如 果经常做更新或者使用了很多blob数据,应该增大这个值。但太大了也是浪费内存,因为1秒钟总会 flush(这个词的中文怎么说呢?)一次,所以不需要设到超过1秒的需求。8M-16M一般应该够了

mysql的innodb_flush_log_at_trx_commit

喜夏-厌秋 提交于 2020-03-18 14:32:03
innodb_buffer_pool_size 如果用Innodb,那么这是一个重要变量。相对于MyISAM来说,Innodb对于buffer size更敏感。MySIAM可能对于大数据量使用默认的key_buffer_size也还好,但Innodb在大数据量时用默认值就感觉在爬了。 Innodb的缓冲池会缓存数据和索引,所以不需要给系统的缓存留空间,如果只用Innodb,可以把这个值设为内存的70%-80%。和 key_buffer相同,如果数据量比较小也不怎么增加,那么不要把这个值设太高也可以提高内存的使用率。 innodb_additional_pool_size 这个的效果不是很明显,至少是当操作系统能合理分配内存时。但你可能仍需要设成20M或更多一点以看Innodb会分配多少内存做其他用途。 innodb_log_file_size 对于写很多尤其是大数据量时非常重要。要注意,大的文件提供更高的性能,但数据库恢复时会用更多的时间。我一般用64M-512M,具体取决于服务器的空间。 innodb_log_buffer_size 默认值对于多数中等写操作和事务短的运用都是可以的。如果经常做更新或者使用了很多blob数据,应该增大这个值。但太大了也是浪费内存,因为1秒钟总会 flush(这个词的中文怎么说呢?)一次,所以不需要设到超过1秒的需求。8M-16M一般应该够了

Mysql主从复制

有些话、适合烂在心里 提交于 2020-03-18 14:26:37
一:主从复制 一:介绍 主从复制就是从库不断向主库要数据,来更新自身的数据库以便自身的数据库数据和主库相同。基于二进制日志完成的. 作用: 1、做数据的热备,作为后备数据库,主数据库服务器故障后,可切换到从数据库继续工作,避免数据丢失。 2、架构的扩展。业务量越来越大,I/O访问频率过高,单机无法满足,此时做多库的存储,降低磁盘I/O访问的频率,提高单个机器的I/O性能。 3、读写分离,使数据库能支撑更大的并发。在报表中尤其重要。由于部分报表sql语句非常的慢,导致锁表,影响前台服务。如果前台使用master,报表使用slave,那么报表sql将不会造成前台锁,保证了前台速度。 简单流程介绍:从库读取master.info 中最后一个二进制日志(例mysql-bin.000012)序号和主库连接信息去连接主库(构建的是长链接,会一直问主库要数据),主库通过show master status查看当前最新的二进制日志,假设是mysql-bin.000020,那么主库就会将12-20之间的二进制日志都通过dump线程发送给从库,然后从库进行一系列的更新。 简单搭建一个主从: 构建如下一个主从 Master slave 3307---->3308 1. 3307中创建复制用户 主库开启二进制日志 vim /data/3307/my.cnf log_bin=/data/3307/mysql

mysql的innodb如何定位锁问题,mysql如何减少主从复制延迟?

北慕城南 提交于 2020-03-18 14:26:26
mysql的innodb如何定位锁问题: 在使用 show engine innodb status检查引擎状态时,发现了死锁问题 在5.5中,information_schema 库中增加了三个关于锁的表(MEMORY引擎) innodb_trx ## 当前运行的所有事务 innodb_locks ## 当前出现的锁 innodb_lock_waits ## 锁等待的对应关系 mysql如何减少主从复制延迟: 如果延迟比较大,就先确认以下几个因素: 1. 从库硬件比主库差,导致复制延迟 2. 主从复制单线程,如果主库写并发太大,来不及传送到从库 就会导致延迟。更高版本的mysql可以支持多线程复制 3. 慢SQL语句过多 4. 网络延迟 5. master负载 主库读写压力大,导致复制延迟,架构的前端要加buffer及缓存层 6. slave负载 一般的做法是,使用多台slave来分摊读请求,再从这些slave中取一台专用的服务器 只作为备份用,不进行其他任何操作.另外, 2个可以减少延迟的参数: –slave-net-timeout=seconds 单位为秒 默认设置为 3600秒 #参数含义:当slave从主数据库读取log数据失败后,等待多久重新建立连接并获取数据 –master-connect-retry=seconds 单位为秒 默认设置为 60秒 #参数含义

MySQL学习——mysql登录命令

可紊 提交于 2020-03-18 14:01:25
1、以Windows系统为例,通过cmd命令行登录mysql数据库的命令为:    mysql -p(password) -u(username)  -h(service IP) 登录提示:     [Warning] Using a password on the command line interface can be insecure. [警告]直接在命令行使用明码密码是不安全的   推荐使用命令 mysql -p -u(username) -h(service IP) ;先不直接输入密码,提示 Enter password ,再输入密码,可以借居然以上问题。 成功登录mysql之后,提示如下: Welcome to the MySQL monitor. Commands end with ; or \g. [提示:mysql命令以;或者\g为结束符] Your MySQL connection id is 22 Server version: 5.7.11-log MySQL Community Server (GPL) Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle

MySQL高可用(Galera Cluster)

寵の児 提交于 2020-03-18 13:46:16
Galera Cluster简介 Galera Cluster是集成了Galera插件的MySQL集群,是一种新型的,数据不共享的,高度冗余的高可用方案,目前Galera Cluster有两个版本,分别是Percona Xtradb Cluster和MariaDB Cluster,Galera本时是具有多主特性,即采用Multi-master的集群架构,是一个即稳健,又在数据一致性、完整性及高性能方面有出色表现的高可用解决方案 Galera Cluster内部机制 Galera Cluster种每个MySQLServer之间相互为主主的关系,当客户端发送指令到一个数据库时,数据库将数据修改后返回一个OK,表示用户的请求已经被收到,但是事务并没有结束依旧可以撤销。当事务结束时用户发送一个commit(提交),服务器收到后会将数据的更新发送给其他的MySQLServer,此时会开启一个全局性的事务ID给组内的其他服务器,其他服务器会查看是否有事务冲突,如果没有冲突就确认更改成功。 Galera Cluster特点 多主架构:真正的多点读写的集群,在任何时候读写数据都是最新的 同步复制:集群不同节点之间数据同步,没有延迟,在数据库挂掉之后,数据不会丢失 并发复制:从节点APPLY数据时,支持并行执行有更好的性能。 故障切换:数据库故障时,因为支持多点写入,切换容易 热插拔:在服务期间

深入理解MySQL索引

做~自己de王妃 提交于 2020-03-18 13:26:59
前言 当提到MySQL数据库的时候,我们的脑海里会想起几个关键字:索引、事务、数据库锁等等,索引是MySQL的灵魂,是平时进行查询时的利器,也是面试中的重中之重。 可能你了解索引的底层是b+树,会加快查询,也会在表中建立索引,但这是远远不够的,这里列举几个索引常见的面试题: 1、索引为什么要用b+树这种数据结构? 2、聚集索引和非聚集索引的区别? 3、索引什么时候会失效,最左匹配原则是什么? 当遇到这些问题的时候,可能会发现自己对索引还是一知半解,今天我们一起学习MySQL的索引。 一、一条查询语句是如何执行的 首先来看在MySQL数据库中,一条查询语句是如何执行的,索引出现在哪个环节,起到了什么作用。 1.1 应用程序发现SQL到服务端 当执行SQL语句时,应用程序会连接到相应的数据库服务器,然后服务器对SQL进行处理。 1.2 查询缓存 接着数据库服务器会先去查询是否有该SQL语句的缓存,key是查询的语句,value是查询的结果。如果你的查询能够直接命中,就会直接从缓存中拿出value来返回客户端。 注:查询不会被解析、不会生成执行计划、不会被执行。 1.3 查询优化处理,生成执行计划 如果没有命中缓存,则开始第三步。 解析SQL:生成解析树,验证关键字如select,where,left join 等)是否正确。 预处理:进一步检查解析树是否合法,如检查数据表和列是否存在

ubuntu16.04下安装mysql详细步骤

拟墨画扇 提交于 2020-03-18 13:25:44
1、如果要搭建服务器先去购买一个云主机,比如阿里云、京东云、新网等等都有卖。这里推荐使用京东云服务器,因为最近在搞活动。一元可体验两个月(可能现在活动已经过了,但在京东云里有免费领一个月的,学生机也有88元一年)。 具体如何购买和简单配置服务器(静态网页)请看郭神公众号,手机扫描或者点击进去 第二步:在服务器里安装mysql(先弄完郭神里的步骤再看这里) 通过郭神那里的简单介绍,你最少能成功搭建出一个静态页的显示。这里我只要接着记录一下如何在我们的云主机里安装mysql。因为一个服务器如果没有mysql,我感觉是没用的。不扯了,继续往看。。。 来、我们打开Xshell,通过如入命令安装mysql 依次输入这三条命令; sudo apt-get install mysql-server sudo apt install mysql-client sudo apt install libmysqlclient-dev 弄完一条再弄一条。如下所示:如入命令后再输入Y 然后回车就自动安装 第二条和第三条类似这样输入看提示进行安装。在安装过程需要设置数据库密码(在键盘输入数字时不要在右边的1234567890上按数字,那里的0代表ins,要在键盘上面按1234567890,这是我家小辉经历过的) 输入如下命令进行检验是否安装mysql成功。 sudo netstat -tap | grep

MySQL 1045登录失败

非 Y 不嫁゛ 提交于 2020-03-18 13:24:32
当你登录MySQL数据库出现:Error 1045错误时(如下图),就表明你输入的用户名或密码错误被拒绝访问了,最简单的解决方法就是将MySQL数据库卸载然后重装,但这样的缺点就是就以前的数据库中的信息将丢失,如果你不想重装,那么就需要找回密码或者重置密码。解决的方法应该有多种,这里我推荐大家使用一种原理通过,操作简单的方法,适用于windows以及linux平台。 MySQL 1045错误如图: [plain] view plain copy print ? ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES) 解决方案: 1、 停止服务:停止MySQL服务; 2、 跳过验证:修改MySQL安装目录下的my.ini配置文件,使登录时跳过权限检查; 3、 修改密码:启动MySQL服务,登录MySQL,此时提示输入密码,输入任意密码回车即可进入MySQL。然后通过SQL语句修改root用户的密码; 4、 重启服务:将my.ini文件中加入的跳过权限语句删除或加#号注释。重启服务,使用修改后的密码登录即可。 Windows系统具体操作: 1、 停止服务: 方法1:使用dos命令 net stop mysql 即可;使用这种方式MySQL服务必须为安装的服务,否则

MySQL 1045登录失败

爱⌒轻易说出口 提交于 2020-03-18 13:23:55
当你登录MySQL数据库出现:Error 1045错误时(如下图),就表明你输入的用户名或密码错误被拒绝访问了,最简单的解决方法就是将MySQL数据库卸载然后重装,但这样的缺点就是就以前的数据库中的信息将丢失,如果你不想重装,那么就需要找回密码或者重置密码。解决的方法应该有多种,这里我推荐大家使用一种原理通过,操作简单的方法,适用于windows以及linux平台。 MySQL 1045错误如图: [plain] view plain copy print ? ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES) 解决方案: 1、 停止服务:停止MySQL服务; 2、 跳过验证:修改MySQL安装目录下的my.ini配置文件,使登录时跳过权限检查; 3、 修改密码:启动MySQL服务,登录MySQL,此时提示输入密码,输入任意密码回车即可进入MySQL。然后通过SQL语句修改root用户的密码; 4、 重启服务:将my.ini文件中加入的跳过权限语句删除或加#号注释。重启服务,使用修改后的密码登录即可。 Windows系统具体操作: 1、 停止服务: 方法1:使用dos命令 net stop mysql 即可;使用这种方式MySQL服务必须为安装的服务,否则