首页 文章 精选 留言 我的

精选列表

搜索[mysql],共10000篇文章
优秀的个人博客,低调大师

面试官:MySQL的自增ID用完了,怎么办?

既然这块知识点不清楚,那回头就自己动手实践下。 首先,创建一个最简单的表,只包含一个自增id,并插入一条数据。 createtablet0(idintunsignedauto_incrementprimarykey);insert intot0values(null); 通过show命令 show create table t0; 查看表情况 CREATETABLE`t0`(`id`int(10)unsignedNOTNULLAUTO_INCREMENT, PRIMARYKEY(`id`))ENGINE=InnoDBAUTO_INCREMENT=2DEFAULT CHARSET=utf8 可以发现 AUTO_INCREMENT 已经自动变成2,这离用完还有很远,我们可以算下最大当前声明的自增ID最大是多少,由于这里定义的是 intunsigned,所以最大可以达到2的32幂次方 - 1 = 4294967295 这里有个小技巧,可以在创建表的时候,直接声明AUTO_INCREMENT的初始值 createtablet1(idintunsignedauto_incrementprimarykey) auto_increment=4294967295;insertintot1values(null); 同样,通过show命令,查看t1的表结构 CREATETABLE`t1`(`id`int(10)unsignedNOTNULLAUTO_INCREMENT, PRIMARYKEY(`id`))ENGINE=InnoDBAUTO_INCREMENT=4294967295DEFAULT CHARSET=utf8 可以发现,AUTO_INCREMENT已经变成4294967295了,当想再尝试插入一条数据时,得到了下面的异常结果 17:28:03insertintot1values(null)ErrorCode:1062.Duplicate entry'4294967295'forkey'PRIMARY'0.00054sec 说明,当再次插入时,使用的自增ID还是 4294967295,报主键冲突的错误。 4294967295,这个数字已经可以应付大部分的场景了,如果你的服务会经常性的插入和删除数据的话,还是存在用完的风险,建议采用bigint unsigned,这个数字就大了。 不过,还存在另一种情况,如果在创建表没有显示申明主键,会怎么办? 如果是这种情况,InnoDB会自动帮你创建一个不可见的、长度为6字节的row_id,而且InnoDB 维护了一个全局的 dictsys.row_id,所以未定义主键的表都共享该row_id,每次插入一条数据,都把全局row_id当成主键id,然后全局row_id加1 该全局row_id在代码实现上使用的是bigint unsigned类型,但实际上只给row_id留了6字节,这种设计就会存在一个问题:如果全局row_id一直涨,一直涨,直到2的48幂次-1时,这个时候再+1,row_id的低48位都为0,结果在插入新一行数据时,拿到的row_id就为0,存在主键冲突的可能性。 所以,为了避免这种隐患,每个表都需要定一个主键。

优秀的个人博客,低调大师

Linux下如何实现MySQL数据库每天自动备份定时备份

云栖号:https://yqh.aliyun.com第一手的上云资讯,不同行业精选的上云企业案例库,基于众多成功案例萃取而成的最佳实践,助力您上云决策! 备份是容灾的基础,是指为防止系统出现操作失误或系统故障导致数据丢失,而将全部或部分数据集合从应用主机的硬盘或阵列复制到其它的存储介质的过程。而对于一些网站、系统来说,数据库就是一切,所以做好数据库的备份是至关重要的! 备份是什么? 为什么要备份 容灾方案建设 存储介质 光盘 磁带 硬盘 磁盘阵列 DAS:直接附加存储 NAS:网络附加存储 SAN:存储区域网络 云存储 这里主要以本地磁盘为存储介质讲一下计划任务的添加使用,基本的备份脚本,其它存储介质只是介质的访问方式可能不大一样。 1、查看磁盘空间情况: 既然是定时备份,就要选择一个空间充足的磁盘空间,避免出现因空间不足导致备份失败,数据丢失的恶果! 存储到当前磁盘这是最简单,却是最不推荐的;服务器有多块硬盘,最好是把备份存放到另一块硬盘上;有条件就选择更好更安全的存储介质; # df -hFilesystem 2、创建备份目录: 上面我们使用命令看出/home下空间比较充足,所以可以考虑在/home保存备份文件; cd /home mkdir backupcd backup 3、创建备份Shell脚本: 注意把以下命令中的DatabaseName换为实际的数据库名称; 当然,你也可以使用其实的命名规则! vi bkDatabaseName.sh 输入/粘贴以下内容: #!/bin/bash mysqldump -uusername -ppassword DatabaseName > /home/backup/DatabaseName_$(date +%Y%m%d_%H%M%S).sql 对备份进行压缩: #!/bin/bash mysqldump -uusername -ppassword DatabaseName | gzip > /home/backup/DatabaseName_$(date +%Y%m%d_%H%M%S).sql.gz 注意: 把 username 替换为实际的用户名; 把 password 替换为实际的密码; 把 DatabaseName 替换为实际的数据库名; 4、添加可执行权限: chmod u+x bkDatabaseName.sh 添加可执行权限之后先执行一下,看看脚本有没有错误,能不能正常使用; ./bkDatabaseName.sh 5、添加计划任务 检测或安装 crontab 确认crontab是否安装: 执行 crontab 命令如果报 command not found,就表明没有安装 如时没有安装 crontab,需要先安装它,具体步骤请参考: CentOS下使用yum命令安装计划任务程序crontab 使用rpm命令从CentOS系统盘安装计划任务程序crontab 添加计划任务 执行命令: crontab -e 这时就像使用vi编辑器一样,可以对计划任务进行编辑。 输入以下内容并保存: */1 * * * * /home/backup/bkDatabaseName.sh 具体是什么意思呢? 意思是每一分钟执行一次shell脚本“/home/backup/bkDatabaseName.sh”。 6、测试任务是否执行 很简单,我们就执行几次“ls”命令,看看一分钟过后文件有没有被创建就可以了! 如果任务执行失败了,可以通过以下命令查看任务日志: # tail -f /var/log/cron 输出类似如下: Sep 30 14:01:01 bogon run-parts(/etc/cron.hourly)[2503]: starting 0anacron Sep 30 14:01:01 bogon run-parts(/etc/cron.hourly)[2512]: finished 0anacron Sep 30 15:01:01 bogon CROND[3092]: (root) CMD (run-parts /etc/cron.hourly) Sep 30 15:01:01 bogon run-parts(/etc/cron.hourly)[3092]: starting 0anacron Sep 30 15:01:02 bogon run-parts(/etc/cron.hourly)[3101]: finished 0anacron Sep 30 15:50:44 bogon crontab[3598]: (root) BEGIN EDIT (root) Sep 30 16:01:01 bogon CROND[3705]: (root) CMD (run-parts /etc/cron.hourly) Sep 30 16:01:01 bogon run-parts(/etc/cron.hourly)[3705]: starting 0anacron Sep 30 16:01:01 bogon run-parts(/etc/cron.hourly)[3714]: finished 0anacron Sep 30 16:15:29 bogon crontab[3598]: (root) END EDIT (root) 云栖号:https://yqh.aliyun.com第一手的上云资讯,不同行业精选的上云企业案例库,基于众多成功案例萃取而成的最佳实践,助力您上云决策! 原文发布时间:2020-02-18本文作者:Lyven本文来自:“SQL数据库开发公众号”,了解相关信息可以关注“SQL数据库开发”

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册