MySQL权威指南第三部分(系统管理)读书笔记 一

mysql 专业笔记 -- 第 10 章:INSERT <think>好的,用户要求根据给定内容生成篇不超过150字的文章摘要。内容是关于MySQL的多种插入方法,包括基本的INSERT、INSERT...ON DUPLICATE KEY UPDATE、多行插入、INSERT IGNORE、AUTO_INCREMENT和LAST_INSERT_ID()、INSERT SELECT等。 需要提取核心要点并压缩到150字以内。摘要应涵盖这些主要插入方式及其关键特性,比如原子性、性能优势、处理重复键、获取自增ID等。注意不能只罗列术语,要连贯地组织语句。 首先快速扫 阅读详情
一、MySQL的数据目录

1.确定MySQL数据目录的位置
·MySQL数据目录的默认位置通常是 
/usr/local/mysql/var (源码安装) 
或是 /var/lib/mysql (RPM方式安装) 
或 /usr/local/mysql/data (二进制发行版本安装),而Windows下默认的数据目录是 c:/mysql/data
·查询当前数据目录的位置
# mysqladmin -u root -p variables
显示如下:
......
| datadir                         | /usr/local/mysql/var
......
进入mysql程序查询也可以:
mysql> show variables like 'datadir';
如果运行多个服务器,使用--port参数区别,使用如下参数:
# mysqladmin --host=127.0.0.1 --port=  variables
如果是源码安装,则可以查看Makefile文件,找到localstatedir变量,查出datadir所在。
最后一个最BT的命令: 
# find / -name "*.frm" -print   
哈哈

2.数据目录的结构
·每个数据库对应于MySQL数据目录下的一个目录。
·同一数据库里的数据表对应于数据库目录中的各有关文件。不过InnoDB数据表除外。(从 3.23.34a 开始包含 InnoDB 表,并在 MySQL -Max 的二进制版本中激活,InnoDB提供了更高的性能,具体的我还没研究,有兴趣的话可以到google.com查一下,有很多相关的资料)
·MySQL服务器的配置文件 my.cnf。
·MySQL服务器的进程ID(PID)文件,它保存当前MySQL进程的ID,当然Windows系统下是不存在这个文件的。
·MySQL服务器生成的状态和日志文件。
·DES密钥文件和服务器SSL证书(这个没有具体用过)。

3.mysqld
各种客户程序不直接对数据进行操作,它们必须通过服务器(mysqld)才能存取数据库里的数据,这是它的惟一使用数据的惟一通路;
启动时mysqld服务器将根据命令行(或配置文件)的要求打开一些日志文件,然后向用户提供一个到有关MySQL数据目录的网络接口并开始在这个接口上临听各种网络连接。
客户程序要先建立一个到服务器的连接,然后发出各种SQL查询命令让服务器执行,然后将结果返回。
MySQL服务器是多线程的,可以同时和多个客户提供服务,但它每次只能执行一个修改操作,所以实际效果是有关请求将被“串行化”,所以两个客户绝不会在同一时刻修改某给定记录而发生冲突。
下面两种场合服务器无法独占控制MySQL数据目录:
a.当在同一个数据目录上运行多个MySQl服务器时。
b.当运行各种数据表修复工具程序时。
要尽量避免在MySQL服务器运行的时候使用数据表修复之类的工具。。

4.文件系统
·每个数据库其实就是MySQL数据目录里的一个子目录,并且名字与它代表的数据库名字相同。
·MySQL支持以下几种不同数据表类型的处理程序:
a.ISAM
最原始的类型,每个ISAM表三个文件代表,这些文件名和数据表名字相同,但使用不同的后缀名,分别代表它的用途。
*.frm ---- 表定义文件,存放表结构定义。
*.ISD ---- 数据文件,存各个数据行的内容。
*.ISM ---- 索引文件,存放表的全部索引信息。
b.MyISAM
MySQL 3.23开始引入MyISAM类型做为ISAM类型的替代者。
*.frm ---- 表定义文件,存放表结构定义。
*.MYD ---- 数据文件,存各个数据行的内容。
*.MYI ---- 索引文件,存放表的全部索引信息。
c.MERGE
是一个逻辑结构,它代表着由一组结构相同的MyISAM表构成的集合。,表示为一个.frm文件和一个.MRG文件,.MRG文件就是一个表名单,可直接修改(flushtables命令先刷新数据表缓存区)。
d.BDB
用两个文件代表一个数据表,一个表结构.frm,一个数据.db。
e.InnoDB
只有一个文件,物理上类似于Oracle的表空间。
f.HEAP
只有.frm文件,数据表是创建在内存中的。

5.数据库及表命名规则
·当前字符集字母和数据以前下划线和美元符号组成。
·名字最大长度是64个字符。
·MySQL 3.23.6版本开始,可以用反引号引起来的任意字符及保留字做名称。(如`odd@name`)
·要符合当前系统的文件命名规则。
·在创建有关磁盘文件和查询引用某数据表时,MySQL服务器会把它们的名字转成小写。

6.状态文件和日志文件
------------------------------------------------------------------------------------
    文件类型            默认名                文件内容
------------------------------------------------------------------------------------
进程ID文件            HOSTNAME.pid            MySQL服务器进程的ID
常规查询日志        HOSTNAME.log            连接/断开连接事件和查询信息
慢查询日志            HOSTNAME-slow.log        耗时很长的查询命令的文本
变更日志            HOSTNAME.nnn            创建/变更表结构或修改了表内容的查询命令文本
二进制变更日志        HOSTNAME-bin.nnn        如上面,这是二进制表示。
二进制变更日志的索引    HOSTNAME-bin.index        二进制变量日志文件的清单
错误日志            HOSTNAME.err            "启动/关机" 事件和异常情况
------------------------------------------------------------------------------------

7.重新安置数据目录
两种方法,一个是使用--datadir=来启动服务器,实现。另一种就是创建符号链接,如果不是新装的MySQL服务器的话,推荐第二种方法,因为第一种方法可能会引起其它程序找不到相对的路径,容易产生错误。
基本步骤如下:
1)shutdow MySQL服务器。
2)把数据库(或datadir)目录copy到新的位置。
3)改名原数据库(或datadir)
4)在原位置创建符号链接,到新位置。
5)重启MySQL服务器。
6)正常后,删除原数据库(或datadir)。

下面是把/usr/local/mysql/var 这个数据目录移到 /var/mysql_db 的例子:
# mysqladmin -u root -p shutdown
# cd /usr/local/mysql
# tar cf - var | (cd /var/mysql_db; tar xf -)            //最好不要直接用cp -R复制文件,会出现权限错误。
# mv var var.bak
# ln -s /var/mysql_db .
# /usr/local/mysql/bin/safe_mysqld --user=mysql &    //启动MySQL,可按自己服务器情况修改
如果一切正常,则可以把原来的删掉:
rm -Rf var
MySQL 高可用系列 · 第六篇——MHA 核心短板与生产致命坑汇总 <think>我们根据要求生成篇不超过150字的文章摘要。内容概括了MHA的局限性、风险、案例和收获,需要精简。</think>MHA仅负责主从切换,存在功能短板、数据丢失、脑裂及恢复难题;依赖SSH和脚本,半同步可能静默降级。高频故障含库hang未切、数据不致、VIP漂移等。需配合半同步、健壮脚本、监控及SOP化恢复流程,认清风险方能稳用。 阅读详情

相关推荐

MySQL 高可用系列 · 第三篇——核心原理精讲:故障检测、候选主选择与数据补偿

<think>我们根据要求生成篇不超过150字的摘要。摘要需概括文章核心内容:MHA故障检测、候选主选择、数据补偿、切换流程、半同步配合、脑裂防护等。注意字数限制,要精炼。</think>MHA切换核心:故障检测需连续失败确认;候选主以数据最新优先,权重次之;通过relay log差异补偿数据后再提升新主;切换七步流程;配合半同步复制可逼近零丢失;防脑裂依赖VIP漂移和旧主隔离。

彭大帅的博客 5

MySQL权威指南.pdf(中文版本)

学习MySQL的必备参考书!强烈推荐需要学习这方面知识的人学习参考!

MySQL权威指南读书笔记

MySQL权威指南读书笔记MySQL权威指南读书笔记MySQL权威指南读书笔记

Mysql 5权威指南3 中文版高清pdf

MySQL 5权威指南第三版 中文高清PDF

MySQL 5权威指南中文版(第3版).pdf

MySQL5 权威指南(第三) 中文版,高清版。很清晰的。

MySQL权威指南(第3版)

MySQL权威指南(第3版),压缩包文件,欢迎下载,11111

EGOTableViewPullRefresh动态刷新按钮

EGOTableViewPullRefresh 是fork EGOTableViewPullRefresh开源类库进行的改进,添加了上提加载更多效果。同时也可以通过个按钮的触发刷新事件,但是刷新的时候不能跳到top,为了动态展示,再刷新的时候按钮旋转,然后跳转回到顶部!如下如图

新风作浪的博客专栏 5763

为什么刷新页面会触发最近执行过的个按钮事件

<br />我在页面上添加了个按钮btn,同时给这个按钮添加个onclick事件,比如按下按钮就添加条数据到数据表中。<br />当我运行页面并按下按钮触发这个事件后,直接刷新次页面,这个时候却发现,我没按按钮都会触发这个onclick事件。因为表中主键id是自动增量,所以这个事件触发后,会将条实际上内容相同的数据插入到数据表中,产生了重复数据,其他事件也会发生这种情况。<br />请教下各位,这是因为什么会这样?是按钮控件的特性还是其他原因?有没有方法可以解决?<br />在代码中,我只是写

mjq945的专栏 3116

linux 怎么刷新,Linux下要不要添加“刷新”按钮?Linux用户怎么看?以下附上评论...

有些人对Deepin Linux操作系统丢掉“刷新”按钮抱有成见,觉得应该加上“刷新”功能,有些人则认为不要用Windows的思维来操作Linux,下面听听其他的Linux用户是怎么说的?用户评论1、右键里面的“刷新”功能事实上还是比较常用的,然而Deepin Linux却没有。2、没什么实际用处,只不过是心理安慰,在上世纪末及本世纪初,计算机性能较差的时代,GUI不能保持实时刷新的时候,“刷新”...

weixin_39589511的博客 2253

刷新按钮在actionbar上的效果

MenuItemCompat.setActionView(refreshItem, R.layout.actionbar_indeterminate_progress);

Sanjay的专栏 2618

浏览器点刷新按钮,重新输入URL和按F5的区别

浏览器刷新操作的缓存机制差异分析:点击刷新按钮/F5会触发协商缓存验证(携带Cache-Control:max-age=0),重新输入URL回车则应用完整缓存策略(先强缓存后协商缓存),而Ctrl+F5强制刷新会完全绕过所有缓存。这三种操作在HTTP请求头、浏览器历史记录处理以及单页应用路由表现上存在显著差异,开发者需要根据调试或部署需求选择合适的刷新方式,其中强制刷新能确保获取最新资源,而普通刷新更适合日常检查内容更新。理解这些差异对Web开发和故障排查至关重要。

油墨香^-^的博客 1119

MySQL 权威指南中文版第三

mysql 5 权威指南中文版第三mysql 5 权威指南中文版第三

Windows平台UE5源码编译全攻略:从环境搭建到高效开发

C++项目编译是大型软件开发的基石,其核心原理在于将源代码通过编译器转换为目标平台可执行的机器码。对于游戏引擎这类超大型项目,编译过程涉及复杂的依赖管理和构建系统,技术价值在于实现对底层架构的完全掌控与深度定制。在游戏开发、实时图形渲染等应用场景中,编译自有引擎版本是进行性能优化、平台适配和前沿技术研究的必要手段。本文聚焦于虚幻引擎5(UE5)在Windows环境下的源码编译全流程,详细解析了从硬件准备、软件环境配置(如Visual Studio 2022、Git LFS)、源码获取到漫长编译过程中的核心环

558

MySQL权威指南读书笔记() (转载)

第二章:MYSQL数据库里面的数据用想用好MYSQL,就必须透彻理解MYSQL是如何看待和处理数据的。本章主要讨论了两个问题:是SQL所能处理的数据值的类型;二是这些数据类型在实际应用中需要注意的问题。首先我们看看mysql能够支持的数据类型,和其它的数据库样,我们可以处理各种数值(整型,浮点),字符串型,日期/时间型,NULL值等等。大家在使用的需要注意不同类型的数值的格式是

gavin_ku的专栏 836

MySQL】基础入门:库操库、数据表操作与数据类型详解

本文主要详细介绍了MySQL 的库操作,表操作以及MySQL 相关数据类型。

Miun123的博客 1832

MySQL DQL 子查询详解:从标量、列、行到表子查询的完整实战

子查询(Subquery)是指出现在其他 SQL 语句(如 SELECT、INSERT、UPDATE、DELETE)中的 SELECT 语句,也被称为内查询(Inner Query)或嵌套查询。外层的主查询(Outer Query)会使用子查询返回的结果作为条件、数据源或字段值,从而完成更复杂的查询需求。子查询本质上是张临时生成的虚表,主查询在执行时会把子查询的结果作为输入。理解子查询的分类和适用场景,是掌握 SQL 高级查询能力的关键步。子查询必须放在小括号内,保证优先级清晰。

2401_83857914的博客 418
上一篇: 用XML做为数据存贮格式
下一篇: Google的Hacker版研究
z33
z33
博客等级 码龄24年 0粉丝 11原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值