首页
统计
留言
友链
壁纸
Search
1
Notion网页端汉化、主题修改
699 阅读
2
SnapicPlus主题添加视频功能以及使用外链详解、图片加载缓慢问题解决
543 阅读
3
Gravatar镜像源地址大全
503 阅读
4
typecho主题中文搜索404问题解决
500 阅读
5
Notion客户端中文安装
435 阅读
Web前端
ES6
Vue.js
Node.js
JavaScript
其他前端扩展
后端探索
数据库
服务器
小程序
手机端
奇技淫巧
成功之母
时光随笔
登录
Search
标签搜索
SQL
typecho
SqlServer
MySql
jQuery
JavaScript
npm
Gravatar
镜像
google
Java
包管理工具
前端
JS
node
数据库
Notion
BEGIN...END
EXECUTE
404
天祈
累计撰写
66
篇文章
累计收到
14
条评论
首页
栏目
Web前端
ES6
Vue.js
Node.js
JavaScript
其他前端扩展
后端探索
数据库
服务器
小程序
手机端
奇技淫巧
成功之母
时光随笔
页面
统计
留言
友链
壁纸
搜索到
3
篇与
的结果
2022-09-23
MySQL配置文件my.ini说明
[client]、[mysql]、[mysqld]组说明{card-describe title="[clent]:客户端"}配置信息应用范围是所有的客户端,包括mysql、mysqladmin、mysqldump等{/card-describe}{card-describe title="[mysql]:mysql客户端"}配置信息只对mysql客户端生效。当客户端使用的配置在被重复配置时,下面的配置优先(下面的会覆盖上面的原则){/card-describe}{card-describe title="[mysqld]:服务端"}配置信息对服务端生效{/card-describe}配置信息{alert type="success"}[client] # 客户端连接服务器端时使用的端口号 port=3306 # 默认字符集 default-character-set=utf8 [mysqld] # 默认用户 user=root # 默认密码 password=123456 # MySQL 的安装路径 basedir=C:/Program Files/MySQL/MySQL Server 5.7/ # MySQL 数据文件的存储位置,也是数据表的存放位置 datadir=C:/ProgramData/MySQL/MySQL Server 5.7/Data # 服务端默认字符集 character-set-server=utf8 # 允许同时访问 MySQL 服务器的最大连接数 max_connections=100 # 查询时的缓存大小,缓存中可以存储以前通过 SELECT 语句查询过的信息,再次查询时就可以直接从缓存中拿出信息改善效率 query_cache_size=100 # 默认存储引擎 default-storage-engine=INNODB # 1开启,0关闭 将所有到达MySQL Server的SQL语句记录下来 general-log=0 # 设置日志文件保存位置 general_log_file="JOYWANG.log" # 慢查询日志是否开启1,0 slow-query-log=1 # 慢查询日志文件保存 slow_query_log_file="JOYWANG-slow.log" # 慢查询日志设置时间单位秒S long_query_time=10 # 是否启用错误日志的功能和错误日志的存储位置 log-error="JOYWANG.err" # 最大并发连接数,mysql会为每个连接提供缓冲区,会开销越多的内存,所以要适当的调整该值,不能盲目的提高设置值 max_connections=151 # 指定高速缓存的大小,每当MySQL访问一个表时,如果在表缓冲区中还有空间,该表就被打开并放入其中,这样可以更快地访问表内容单位M table_open_cache=2000 # 增加一张临时表大小,提高查询速度 tmp_table_size=16M #线程池缓存大小,当客户端断开连接后,将当前线程缓存起来,当在接到新的连接请求时快速响应,无需创建新的线程 thread_cache_size=10 #MySQL重建索引时允许使用的临时文件最大大小 myisam_max_sort_file_size=100G #设置在REPAIR TABLE,或者用 CREATE INDEX 创建索引或 ALTER TABLE 的过程中排序索引所分配的缓冲区大小。可设置范围4Bytes 至 4GB,默认为8MB。 myisam_sort_buffer_size=8M #指定索引缓冲区的大小,决定了索引处理的速度,尤其是索引读的速度,建议设置成物理内存的1/4,甚至物理内存的30%-40%,如果设置太大,系统就会频繁的换页,降低系统性能 key_buffer_size=8M #MySQL读入缓冲区大小,对表进行顺序扫描的请求将分配一个读入缓冲区,MySQL会为它分配一段内存缓冲区。read_buffer_size变量控制这一缓冲区的大小。如果对表的顺序扫描请求非常频繁,并且你认为频繁扫描进行得太慢,可以通过增加该变量值以及内存缓冲区大小提高其性能。 read_buffer_size=0 #参数用在sort查询之后 ,以保证获取以顺序的方式获取到查询的数据。如果你有很多order by 查询语句,增长这值能够提升性能 read_rnd_buffer_size=0 #0:log buffer将每秒一次地写入log file中,并且log file的flush(刷到磁盘)操作同时进行。该模式下在事务提交的时候,不会主动触发写入磁盘的操作。 #1:每次事务提交时MySQL都会把log buffer的数据写入log file,并且flush(刷到磁盘)中去,该模式为系统默认。 #2:每次事务提交时MySQL都会把log buffer的数据写入log file,但是flush(刷到磁盘)操作并不会同时进行。该模式下,MySQL会每秒执行一次 flush(刷到磁盘)操作。 innodb_flush_log_at_trx_commit=1 #确保有足够大的日志缓冲区来保存脏数据在被写入到日志文件之前 innodb_log_buffer_size=1M #指定表数据和索引存储的空间,可以是一个或者多个文件。最后一个数据文件必须是自动扩充的,也只有最后一个文件允许自动扩充。这样,当空间用完后,自动扩充数据文件就会自动增长(以8MB为单位)以容纳额外的数据。例如: innodb_data_file_path=/disk1/ibdata1:900M;/disk2/ibdata2:50M:autoextend两个数据文件放在不同的磁盘上。数据首先放在ibdata1中,当达到900M以后,数据就放在ibdata2中。一旦达到50MB,ibdata2将以 8MB为单位自动增长。如果磁盘满了,需要在另外的磁盘上面增加一个数据文件。 innodb_data_file_path=/disk1/ibdata1:900M;/disk2/ibdata2:50M:autoextend #这是InnoDB最重要的设置,对InnoDB性能有决定性的影响。默认的设置只有8M,所以默认的数据库设置下面InnoDB性能很差。在只有InnoDB存储引擎的数据库服务器上面,可以设置60-80%的内存。更精确一点,在内存容量允许的情况下面设置比InnoDB tablespaces大10%的内存大小。 innodb_buffer_pool_size=8M #放置表空间数据的目录,默认在mysql的数据目录,设置到和MySQL安装文件不同的分区可以提高性能。 innodb_data_home_dir= #该参数决定了recovery speed。太大的话recovery就会比较慢,太小了影响查询性能,一般取256M可以兼顾性能和recovery的速度 innodb_log_file_size=48M #该参数设定了事务提交时内存中log信息的处理。 1) =1时,在每个事务提交时,日志缓冲被写到日志文件,对日志文件做到磁盘操作的刷新。Truly ACID。速度慢。 2) =2时,在每个事务提交时,日志缓冲被写到文件, 但不对日志文件做到磁盘操作的刷新。只有操作系统崩溃或掉电才会删除最后一秒的事务,不然不会丢失事务。 3) =0时, 日志缓冲每秒一次地被写到日志文件,并且对日志文件做到磁盘操作的刷新。任何mysqld进程的崩溃会删除崩溃前最后一秒的事务 innodb_flush_logs_at_trx_commit=2 #设置InnoDB同步IO的方式: ) Default – 使用fsync()。 2) O_SYNC 以sync模式打开文件,通常比较慢。 3) O_DIRECT,在Linux上使用Direct IO。可以显著提高速度,特别是在RAID系统上。避免额外的数据复制和double buffering(mysql buffering 和OS buffering)。 innodb_flush_method=Default #InnoDB kernel最大的线程数。 1) 最少设置为(num_disks+num_cpus)*2。 2) 可以通过设置成1000来禁止这个限制 innodb_thread_concurrency=25 #此配置项作用主要是当tablespace 空间已经满了后,需要MySQL系统需要自动扩展多少空间,每次tablespace 扩展都会让各个SQL 处于等待状态。增加自动扩展Size可以减少tablespace自动扩展次数。 innodb_autoextend_increment=64 #可以开启多个内存缓冲池,把需要缓冲的数据hash到不同的缓冲池中,这样可以并行的内存读写。 innodb_buffer_pool_instances=8 #这个参数设置为一种tickets,默认是5000,我也不清楚到底它代表多久,从官方文档来看它和事物处理的行数有关,大事物需要处理的行数自然更多,小事物当然也就越少至少我们可以想成获得CPU的时间,干活期间他会不断减少,如果减少到0,这个线程将被提出innodb层次,进入前面说的等待队列,当然也就在队尾部了,这里假设有一个小的事物正在排队进入innodb层,又或者它已经进入了innodb层没有获得CPU时间轮片,突然一个大的事物tickets耗尽被提出了innodb层,那么这个小事物就自然而然能够获得CPU轮片干活,而小事物执行非常快,执行完成后,另外的事物又能尽快的获得CPU干活,不会由于OS线程调度不均匀的问题而造成的小事物饥饿问题,这很好理解。也就是前面我说的与其依赖OS的调度策略不如自己设置一种规则,让用到了一定时间轮片的线程先处于睡眠态放弃CPU的使用 innodb_concurrency_tickets=5000 innodb_old_blocks_time=1000 innodb_open_files=300 innodb_stats_on_metadata=0 #可以存储每个InnoDB表和它的索引在它自己的文件中。 innodb_file_per_table=1 #如果应用程序可以运行在READ-COMMITED隔离级别,做此设定会有一定的性能提升。 transaction-isolation=READ-COMITTED #这个参数用来表示 页读取到mid位置后,需要等待多久才会被加入到LRU列表的热端。使LRU列表中的热点数据不被刷出 innodb_checksum_algorithm=0 #MySQL暂时停止回答新请求之前的短时间内多少个请求可以被存在堆栈中 back_log=80 flush_time=0 #如果按照检索的性能方式来细分,那么无论是两表 INNER JOIN 还是多表 INNER JOIN,都大致可以分为以下几类:1.JOIN KEY 有索引,主键2.JOIN KEY 有索引, 二级索引3.JOIN KEY 无索引;JOIN BUFFER 是 MySQL 用来缓存以上第二、第三这两类 JOIN 检索的一个 BUFFER 内存区域块。 join_buffer_size=256K #可以增大此值以便于server端接收更大的SQL max_allowed_packet=4M #同一主机最大连续请求错误次数,如果还没成功建立连接,mysql服务器会组织这台主机后续的所有请求 max_connect_errors=100 #限制mysqld能打开文件的最大数 open_files_limit=4161 #一个connection级参数,在每个connection第一次需要使用这个buffer的时候,一次性分配设置的内存 sort_buffer_size=256K #就是控制总frm文件的数量,还是个hash表,内部维护。如果打开的表实例的数量超过了table_definition_cache设置,LRU机制将开始标记表实例以进行清除,并最终将它们从数据字典缓存中删除。简单通俗点frm文件有多少,就设置多少了 table_definition_cache=1400 #指定基于行的二进制日志事件的最大大小 binlog_row_event_max_size=8K #本参数用于主从库中配置从库大于0作用为每个命令之后刷盘,小与0作为为永不刷盘,默认均为1000 sync_master_info=10000 #这个参数和sync_binlog是一样的,当设置为1时,slave的I/O线程每次接收到master发送过来的binlog日志都要写入系统缓冲区,然后刷入relay log中继日志里,这样是最安全的,因为在崩溃的时候,你最多会丢失一个事务,但会造成磁盘的大量I/O。当设置为0时,并不是马上就刷入中继日志里,而是由操作系统决定何时来写入,虽然安全性降低了,但减少了大量的磁盘I/O操作。这个值默认是0,可动态修改,建议采用默认值。 sync_relay_log=10000 #这个参数和sync_relay_log参数一样,当设置为1时,slave的I/O线程每次接收到master发送过来的binlog日志都要写入系统缓冲区,然后刷入relay-log.info里,这样是最安全的,因为在崩溃的时候,你最多会丢失一个事务,但会造成磁盘的大量I/O。当设置为0时,并不是马上就刷入relay-log.info里,而是由操作系统决定何时来写入,虽然安全性降低了,但减少了大量的磁盘I/O操作。这个值默认是0,可动态修改,建议采用默认值 sync_relay_log_info=10000 {/alert}
2022年09月23日
187 阅读
0 评论
0 点赞
2022-09-12
MYSQL5.7安装步骤
卸载MYSQL以及残留{alert type="success"}{timeline}{timeline-item color="#19be6b"}删除MYSQL隐藏文件:C盘的 ProgramData 下会有一个 MySQL 文件夹,这个文件夹要删除{/timeline-item}{timeline-item color="#ed4014"}删除注册表:Windows运行框中输入 regedit , 打开注册表编辑窗口,逐级打开找到如下项 :HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\Eventlog\Application\MySQLHKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Services\Eventlog\Application\MySQLHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Application\MySQL{/timeline-item}{timeline-item color="#ed4014"}删除服务项:运行框中运行 CMD 打开 Windows 命令行窗口,执行如下命令 : sc delete MySQL服务名 (比如 mysql57, 可以在本机服务列表中查看具体名称){/timeline-item}{/timeline}{/alert}镜像站{alert type="info"}清华大学镜像站阿里云镜像站网易镜像{/alert}使用清华镜像包安装Mysql5.7安装包下载{alert type="success"}下载64位MSI安装文件之后,点击安装。安装时选择安装的位置。{/alert}环境变量配置{alert type="info"}在系统变量中Path中添加Mysql安装目录,一定要添加到bin目录级如果Path值过长无法保存,可修改原Path变量名为Path1,新建Path变量,添加%Path1%{/alert}MySQL服务的安装与初次登录{alert type="success"}1.以管理员启动命令窗2.进入到MYSQL安装目录(bin级)3.执行命令mysqld -install -- 输出 Service successfully installed mysqld --initialize -- 没有输出,重新回到光标4.两条命令执行完毕以后,在MySQL的安装目录下会出现一个data文件夹,在data文件夹中有一个以.err结尾的文件,文件中存储了数据库的临时密码。也可以使用记事本的查找功能查找关键词password。记住此密码!!!5.执行命令 net start mysql ,启动MySQL服务6.初次登录:mysql -u root -p7.修改密码alter user 'root'@'localhost' identified by '123456'8.使用quit命令退出MySQL9.在MYSQL安装目录下新建my.ini文件[client] default-character-set=utf8 [mysql] default-character-set=utf8 [mysqld] character-set-server=utf810.以管理员身份启动命令行,重启MySQL服务net stop mysql net start mysql11.登录MySQL,使用命令 status 查看字符集。由于配置了环境变量,直接使用普通命令行即可登录MySQL{/alert}
2022年09月12日
218 阅读
0 评论
0 点赞
2021-12-23
1. MySQL的binlog恢复(Windows下)
初识binlog MySQL的binlog就是大家经常所说的Binary Log,即bin-log,是MySQL存储对数据库改动的二进制文件,也就是记录了所有DDL与DML(select除外)语句. 首先查看 mysqlbinlog 是否已经打开:-- 查看MySQL的日志是否打开(log_bin项) mysql> SHOW VARIABLES LIKE 'log_bin%'; +---------------------------------+-------+ | Variable_name | Value | +---------------------------------+-------+ | log_bin | ON | | log_bin_trust_function_creators | OFF | +---------------------------------+-------+ 2 rows in set (0.01 sec) -- 查看日志过期时间(过期之后日志会自动删除) mysql> show variables like '%expire_logs_days%'; +------------------+-------+ | Variable_name | Value | +------------------+-------+ | expire_logs_days | 0 | +------------------+-------+ 1 row in set (0.00 sec) 如果 log_bin 是关闭状态的话,我们需要修改mysql配置文件.比如我的mysql安装位置是:D:\mysql\bin\mysql.exe. 所以修改D:\mysql\my.ini 文件,添加以下配置:# 如果 log_bin=mysql-bin 则日志文件会默认存放在 C:\ProgramData\MySQL\MySQL Server 5.5\data\ log-bin=D:/mysql/data/mysql-bin binlog_format=mixed # 设置日志永不过期(一般设置为10 即十天之后过期删除) expire_logs_days = 0 修改之后执行 services.msc 打开服务,重启mysql服务生效.数据恢复测试1.准备表person,插入基本数据:mysql> CREATE TABLE `person` ( -> `id` varchar(255) , -> `name` varchar(255) , -> `age` int(10) -> ); Query OK, 0 rows affected (0.02 sec) mysql> select * from person; Empty set (0.01 sec) mysql> INSERT INTO person VALUES (uuid(),'张三',18);INSERT INTO person VALUES (uuid(),'王五',30); Query OK, 1 row affected (0.00 sec) Query OK, 1 row affected (0.00 sec) mysql> select * from person; +--------------------------------------+------+------+ | id | name | age | +--------------------------------------+------+------+ | bcaa790d-6499-11ec-86bc-8c16453d981b | 张三 | 18 | | bcaae031-6499-11ec-86bc-8c16453d981b | 王五 | 30 | +--------------------------------------+------+------+ 2 rows in set (0.00 sec)2.模拟误删除person表:mysql> delete from person; Query OK, 2 rows affected (0.00 sec)3.尝试恢复表数据:{card-default label="3.1 查看binlog日志位置信息" width="100%"}查看当前日志名称:mysql> show master status; +------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+------------------+ | mysql-bin.000001 | 1856 | | | +------------------+----------+--------------+------------------+ 1 row in set (0.00 sec)查看当前日志节点:mysql> show binlog events in 'mysql-bin.000001'; +------------------+------+-------------+-----------+-------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Log_name | Pos | Event_type | Server_id | End_log_pos | Info | +------------------+------+-------------+-----------+-------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | mysql-bin.000001 | 4 | Format_desc | 1 | 107 | Server ver: 5.5.28-log, Binlog ver: 4 | | mysql-bin.000001 | 107 | Query | 1 | 263 | use `test`; CREATE TABLE `person` ( `id` varchar(255) , `name` varchar(255) , `age` int(10) ) | | mysql-bin.000001 | 263 | Query | 1 | 371 | use `test`; DROP TABLE `person` /* generated by server */ | | mysql-bin.000001 | 371 | Query | 1 | 522 | use `test`; CREATE TABLE `person` ( `id` varchar(255) , `name` varchar(255) , `age` int(10) ) | | mysql-bin.000001 | 522 | Query | 1 | 768 | use `test`; ALTER TABLE `person` MODIFY COLUMN `id` varchar(255) CHARACTER SET utf8 NULL DEFAULT NULL FIRST , MODIFY COLUMN `name` varchar(255) CHARACTER SET utf8 NULL DEFAULT NULL AFTER `id` | | mysql-bin.000001 | 768 | Query | 1 | 836 | BEGIN | | mysql-bin.000001 | 836 | Table_map | 1 | 887 | table_id: 36 (test.person) | | mysql-bin.000001 | 887 | Write_rows | 1 | 967 | table_id: 36 flags: STMT_END_F | | mysql-bin.000001 | 967 | Xid | 1 | 994 | COMMIT /* xid=112 */ | | mysql-bin.000001 | 994 | Query | 1 | 1062 | BEGIN | | mysql-bin.000001 | 1062 | Query | 1 | 1197 | use `test`; -- INSERT INTO person VALUES (uuid(),'张三',18); delete from person | | mysql-bin.000001 | 1197 | Xid | 1 | 1224 | COMMIT /* xid=119 */ | | mysql-bin.000001 | 1224 | Query | 1 | 1292 | BEGIN | | mysql-bin.000001 | 1292 | Table_map | 1 | 1343 | table_id: 36 (test.person) | | mysql-bin.000001 | 1343 | Write_rows | 1 | 1425 | table_id: 36 flags: STMT_END_F | | mysql-bin.000001 | 1425 | Xid | 1 | 1452 | COMMIT /* xid=123 */ | | mysql-bin.000001 | 1452 | Query | 1 | 1520 | BEGIN | | mysql-bin.000001 | 1520 | Table_map | 1 | 1571 | table_id: 36 (test.person) | | mysql-bin.000001 | 1571 | Write_rows | 1 | 1653 | table_id: 36 flags: STMT_END_F | | mysql-bin.000001 | 1653 | Xid | 1 | 1680 | COMMIT /* xid=124 */ | | mysql-bin.000001 | 1680 | Query | 1 | 1748 | BEGIN | | mysql-bin.000001 | 1748 | Query | 1 | 1829 | use `test`; delete from person | | mysql-bin.000001 | 1829 | Xid | 1 | 1856 | COMMIT /* xid=152 */ | +------------------+------+-------------+-----------+-------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 23 rows in set (0.00 sec) 可以看待在1680节点开始到1856节点结束是处理最后的删除表操作.所以我们恢复数据的时候,只需要恢复数据到1680节点之前就行 {/card-default} {card-default label="3.2 通过binlog恢复数据" width="100%"} 打开命令窗,切换路径到与安装的mysql执行文件同目录。比如我的mysql安装路径是:D:\mysql\bin\mysql.exe,所以目录切换到*D:\mysql\bin* 。 一般有两种恢复操作:一种是将从日志文件中抽取到的sql存为件,然后执行.sql文件;另一种是直接将抽取到的sql执行.恢复命令格式如下:# 抽取sql存为文件 mysqlbinlog --start-position=开始节点号 --stop-posion=结束节点号 日志文件名称(保险起见使用使用绝对路径) > 存储位置名称 # 执行.sql文件 source 路径名称.sql # 直接执行抽取到的sql mysqlbinlog --start-position=开始节点号 --stop-posion=结束节点号 日志文件名称(保险起见使用使用绝对路径) | mysql -uroot -p123456 通过3.1的分析,可以得知需要执行的起始节点位置和日志路径.所以执行命令如下:# 第一种情况: 先存.sql 然后执行(两条命令分开执行) mysqlbinlog --start-position=4 --stop-position=1680 D:\mysql\data\mysql-bin.000001 > d:\\test1.sql source d://test1.sql # 第二种情况: 直接执行 mysqlbinlog --start-position=4 --stop-position=1680 D:\mysql\data\mysql-bin.000001 | mysql -uroot -p1216{/card-default} {callout color="#f0ad4e"}执行完毕之后可以看到,数据已经恢复到以前两条数据没有删除的状态.{/callout}
2021年12月23日
256 阅读
0 评论
1 点赞