mysql数据库

MySQL DBA成长宝典

喜你入骨 提交于 2020-01-01 03:15:09
搜狐公司高级 DBA 叶金荣推荐《MySQL性能调优与架构设计》 1995年5月23日,这是一个普通的日子,但对MySQL来说,这是初生的时刻;自此,这个世界上多了一个数据库系统,这就是一开始被人们嘲笑为“玩具”数据库的MySQL。我是在2000年开始接触Linux和MySQL的,那时候国内网络仍然很不发达,想要找到MySQL的学习资料太不容易了,唯一可用的就是MySQL手册,而且还是英文的。就这样懵懵懂懂直到工作,这种情况仍未得到太大改善。这时候,我就在想,有朝一日我也要学习开源社区的精神,为开源社区做出一定的努力。此后,我利用业余时间翻译了不少MySQL的英文手册,以及不少优秀的技术材料,期间也有出版社联系我商谈出书事宜,虽未出过书,但深知写书的艰辛,因此也没敢答应下来,至今仍为一大遗憾。 2008年2月26日,Sun收购了MySQL,可爱的小海豚差点就此走上了封闭的道路,幸好有开源社区各知名人士的奔走,才使得它仍然活跃在开源社区里,这让我们对MySQL的未来充满了信心。2009年4月20日,Oracle收购Sun后,我们却已不再担心MySQL的未来,因为我们坚信有开源社区的努力,即使Oracle想要扼杀它,也不会得逞的。 随着互联网的发展,电子商务、Web 2.0等的崛起,一大批以LAMP技术为依托的企业如雨后春笋,这也大大刺激了MySQL DBA这个职位的需求

MySQL 5.6 Replication 复制 FAQ

巧了我就是萌 提交于 2020-01-01 03:14:55
原文请参照MySQL官方文档Reference Manual,版本5.6.10。 复制功能使得数据可以从一个MySQL数据库(master主库)复制到另一个或多个MySQL数据库(slave从库)。缺省情况下,复制是异步的,slave无需保持持久的连接来从master获得更新。这意味着更新能工作在远程连接,甚至是临时间断性的连接上,比如拨号连接服务。根据不同的配置,你能复制master上所有的数据库,或指定的数据库,甚至某一数据库中指定的数据表。 下面是关于复制功能,新手经常问到的问题。 1. slave必须要持久连接到master吗? 不需要。slave可以关机或失去连接几小时甚至几天,然后重新连接获取更新。举例来说,你能在拨号连接网络上建立复制,而该拨号网络只有不定时或短时间的连接。这也意味着,在任何给定时间点,slave不能保证和master保持完全一致,除非你采取某些特别的措施。 为了保证能获取在slave失去连接时的更新,你不能从master上移除包含未完成复制内容的binary二进制日志文件。异步复制能维持工作的条件:slave能从最后一次读取事件的点继续读取binary二进制日志。 2. 复制必须要在master和slave上开启网络功能吗? 是的,必须要在master和slave上开启网络功能。如果网络没有连接

mysql对binlog的处理

微笑、不失礼 提交于 2020-01-01 03:11:46
Mysql 和其它开源数据库相比,具有更好的扩展性。其主要原因是它提供了存储引擎的开放接口。喜欢自己折腾数据库的程序员可以从这个接口起步,打造有个性的数据库。然而这里不打算对某种存储引擎的实现细节进行描述,也不打算介绍各种存储引擎的优缺点,只是描述一下 mysql 如何处理 binlog ,并澄清几个容易混淆的问题。 Binlog 对 mysql 而言是重要的,主要体现在它的功能上。 Mysql 官方文档明确指出, binlog 的启动大概会为 mysql 增加 1% 的负载,因此在绝大多数情况下, binlog 都不会成为 mysql 的性能瓶颈。 Binlog 是 mysql 以二进制形式打印的日志,它默认不加密,不压缩。每个正常的 binlog 文件头部,有 4 个字节的标记,值为 0xfe 0x62 0x69 0x6e 。 LOG_EVENT 是 binlog 里的单位,即正常情况下 binlog 按照逐 LOG_EVENT 的形式增长。除去头部的标记, binlog 就是一个 LOG_EVENT 的序列。每个 LOG_EVENT 都独立单元,没有互相引用的关系,它也有自己的二进制头部,主要是记录了时间戳、类型标记等描述信息。 Mysql 把磁盘操作的实现封装在 IO_CACHE 结构里,这也方便了我们对 binlog 的研究和描述,后文如果没有特别说明,读写 binlog

mysql并发复制系列 一:binlog组提交

感情迁移 提交于 2020-01-01 03:09:39
http://blog.itpub.net/28218939/viewspace-1975809/ 作者:沃趣科技MySQL数据库工程师 麻鹏飞 MySQL Binary log在MySQL 5.1版本后推出主要用于主备复制的搭建,我们回顾下MySQL 在开启/关闭 Binary Log功能时是如何工作的 。 MySQL 没有开启 Binary log的情况下: InnoDB存储引擎通过redo和undo日志可以safe crash recovery数据库,当数据crash recovery时,通过redo日志将所有 已经在存储引擎内部提交的事务应用 redo log 恢复 ,所有已经prepared但是 没有 commit 的 transactions 将会应用 undo log 做 roll back 。然后客户端连接时就能看到已经提交的数据存在数据库内,未提交被回滚地数据需要重新执行。 MySQL 开启 Binary log 的情况下: 为了保证存储引擎和MySQL数据库上层的二进制日志保持一致( 因为备库通过二进制日志重放主库提交的事务,假设主库存储引擎已经提交而二进制日志没有保持一致,则会使备库数据丢失造成主备数据不一致 ),引入二阶段提交(two phase commit or 2pc) 图1 二阶段提交 MySQL二阶段提交流程: Storage Engine

MySQL:binlog 和 redo log

半腔热情 提交于 2020-01-01 03:09:17
【参考文章】: MySQL中Redo与Binlog顺序一致性问题? 【参考文章】: 极客时间 1. 数据更新时的日志处理流程    1.1 redo log(prepare状态)   此时SQL已经成功执行了,已经产生了语句的redo和undo内存日志,已经进入了事务commit步骤。然后告诉引擎做Prepare完成第一阶段,Prepare阶段就是写Prepare Log(Prepare Log也是Redo Log),将事务状态设为TRX_PREPARED,写Prepare XID(事务ID号)到Redo Log。写XID到Redo Log的时候会一并把Redo Log刷新到磁盘,这个时候Redo Log的日志量大小取决于执行SQL语句时产生的Redo是否被刷盘,这个刷盘是随机的,后台Master线程每秒钟都会刷新一次。 1.2 binlog   如果事务涉及的所有存储引擎的Prepare( 即Redo Log写入磁盘之后 )都执行成功,则调用TC_LOG_BINLOG::log_xid方法将SQL语句写到Binlog(write()将binary log内存日志数据写入文件系统缓存,fsync()将binary log文件系统缓存日志数据永久写入磁盘),同时也会把XID写入到Binlog。此时,事务已经铁定要提交了。否则,调用ha_rollback_trans方法回滚事务

MySQL重置root密码

℡╲_俬逩灬. 提交于 2020-01-01 03:03:33
1,以管理员身份进入cmd命令行,输入命令:Net stop mysql; 2 ,进入mysql安装目录的bin文件夹下,执行mysqld --skip-grant-tables 启动MySQL Server (如果报错,执行mysqld-nt --skip-grant-tables); 3,另外打开一个命令窗口,同样进入安装目录的bin文件夹下,输入mysql 进入mysql,(此时不需要账号密码即可进入) 4,use mysql 进入mysql数据库中,update user set password=password("123456") where user="root"; 5,flush privileges; 6 ,quit(); 设置远程可访问: GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'IDENTIFIED BY 'mypassword' WI TH GRANT OPTION ; 或者 : UPDATE user SET Host='192.168.1.100' WHERE User='root' AND Host='localhost' LIMIT 1; 来源: https://www.cnblogs.com/ciscoo/p/6256023.html

64位 windows10,安装配置MYSQL8.0.13

戏子无情 提交于 2020-01-01 03:00:41
MySQL的安装配置过程,一查网上一大堆,但是每个人在安装配置的过程中都会碰到一些问题,因为安装的版本不一样,有些命令可能就不适用了。所以安装之前一定先确认好你的版本号。 下面开始安装MYSQL8.0.13。 第一步: 先去官网下载安装包:官网下载地址: https://dev.mysql.com/downloads/mysql/ 这是我下载的windows(x86 64位)的MySQL8.0.13的zip包。下载完毕以后,解压到你想要安装的位置,我放到了这个位置:D:\MyPrograms\mysql-8.0.13-winx64 第二步 ,配置MYSQL环境变量,设置mysql命令全局使用。 如下图1的路径,打开【系统】,点击2【高级系统设置】,打开系统属性,选择3【环境变量】弹出窗口,选择系统变量中的4【新建】,弹窗,变量名为:MYSQL_HOME,路径是刚刚解压的路径,确定以后如图中5。 在系统变量中找到path,点击【编辑】添加%MYSQL_HOME%\bin\ 如下图 确定以后,mysql的命令就设置为全局的了,在任何地方都可以使用mysql的命令 第三步: 生成存放数据库的文件夹data 以管理员身份运行cmd,在任意路径下执行命令:mysqld --initialize-insecure --user=mysql 都会在我们解压的路径下产生data文件夹。

MySQL忘记root密码解决方法

假如想象 提交于 2020-01-01 02:59:58
1,首先停止MYSQL服务,CMD打开DOS窗口,输入 net stop mysql 2,然后在CMD命令行窗口,进入MYSQL安装目录 比如E:\Program Files\MySQL\MySQL Server 5.0\bin 示范命令: 输入 e:回车, 输入cd “E:\Program Files\MySQL\MySQL Server 5.0\bin” 注意双引号也要输入,这样就可以进入Mysql安装目录了. 3,进入mysql安全模式,即当mysql起来后,不用输入密码就能进入数据库。 命令为: mysqld -nt –skip-grant-tables (注意-nt前面的空格!) 4,重新打开一个CMD命令行窗口,输入mysql -u root -p,使用空密码的方式登录MySQL(不用输入密码,直接按回车) 5,输入以下命令开始修改root用户的密码(注意:命令中mysql.user中间有个“点”) mysql> update mysql.user set password=PASSWORD(‘新密码’) where User=’root’; 6,刷新权限表 mysql> flush privileges; 7,退出 mysql> quit 这样MYSQL超级管理员账号 ROOT已经重新设置好了,白话点讲就是利用mysql的安全模式置空模式,然后重新设定密码, 接下来

由于缺少msvcp120.dll文件的错误解决

坚强是说给别人听的谎言 提交于 2020-01-01 02:58:37
在安装数据库软件mysql 5.7.23的时候出现了以下几个问题:由于缺少msvcp120.dll...导致不能够安装数据库服务环境,百度了一下说可以下载这个文件然后放入到系统文件中发现还是不行,报加载这个文件失败的错误,最后尝试了一下下载Windows10Microsoft Visual C++ 2013运行库64位(根据自己系统的位数来进行安装)成功使用mysqld -install命令安装服务环境,下载链接如下: http://www.downza.cn/soft/195421.html 下面是安装服务的时候出现的错误提示: ① 提示无法启动程序 ② 运行regsvr32 msvcp120.dll加载失败错误提示: 安装好了上面的程序之后运行命令发现可以安装数据库服务了 来源: CSDN 作者: 蠕动的二哈 链接: https://blog.csdn.net/qq_39445165/article/details/103757131

MySQL 8.018 Windows64位 安装教程

巧了我就是萌 提交于 2020-01-01 02:58:18
1. MySQL8.0.18下载 1.1 登录 MySQL下载 页面,如图1所示,点击下载。 图1 MySQL下载 1.2 将下载好的压缩文件放在C盘根目录下,图2为下载好的压缩文件,并执行“解压到当前文件夹”,更名为“ mysql_8_0_18_winx64 ”(建议使用良好的命名风格),如图3所示。 图2 下载完成的压缩文件 图3 解压后的文件 1.3 解压后的MySQL文件目录中原本并没有“ my.ini ”文件,需要我们手动添加,建议使用“ Notepad++ ”创建(编码格式为UTF-8),并保存在图3所示的目录下,文件添加后如图4所示。 图4 增加my.ini文件 文件my.ini中的内容为: [mysqld] # 设置3306端口 port=3306 # 设置mysql的安装目录 basedir=C:\mysql_8_0_18_winx64 # 设置mysql数据库的数据存放目录 datadir=C:\mysql_8_0_18_winx64\Data # 允许最大连接数 max_connections=200 # 允许连接失败的次数 max_connect_errors=10 # 服务端使用的字符集默认为utf8mb4 character-set-server=utf8mb4 # 创建新表时将使用的默认存储引擎 default-storage-engine