MySQL的备份和还原及唯一索引和普通索引选的选择问题[图]

需求背景:数据库备份的重要性就不再赘述了。前段时间,我们的一个数据库,由于一些网络安全组的配置错误,导致被黑客攻击黑掉,数据表全部被删掉了,如果想要数据就要给黑客指定的账号上重比特币,更详细的信息可以参考我之前分享的一篇文章《MySQL被黑掉的一次记录》。
试想一下,如果被黑掉的数据库没有备份,我们该怎么办?不就彻底凉凉了。所以,数据库的备份很重要。
数据库的备份和还原是数据库日常维护工作中最为常见的需求,对于MySQL数据库的备份和还原,你真正的了解了吗?接下来我们一起来看下备份和还原的一些知识点吧。
备份和还原的拓扑图
总结了一些MySQL数据库备份的方式,以及各个备份方式的具体参数,详情见下图:(如果想获取原文件,可以加"coder-home"留言即可。)
备份的shell脚本
这里分享一个我平时用到的数据库逻辑备份脚本。采用的是MySQL原始自带的逻辑备份命令mysqldump。它的效率和第三方插件xtrabackup相比虽然差些,但是对于一些常见的备份需求,它还是可以满足大多数备份需求的。

MySQL的备份和还原及唯一索引和普通索引选的选择问题[图]_第1张图片

在下面的这个脚本中,对数据库进行了两次备份。
一次是分库备份:即一个数据库(schema)一个备份文件。
另外一次是分库分表备份:即一个表一个备份文件,这样的备份方式,对于以后还原的时候只还原数据库下面的某一个表十分的方便,而不用在整个数据库的备份文件中摘出来对应的表。
大家可以根据自己的需求,自行修改,删除冗余的备份逻辑,或者增加自己的备份逻辑。
脚本在调用的时候,是在crontab中配置的定时任务,示例如下:
301***/root/backup_mysql_db.sh/data/mysql_backup_dir192.168.5.100rootroot
上述定时任务的含义是:每天的凌晨1:30分执行/root目录下面的数据库的脚本backup_mysql_db.sh。这个shell脚本在调用的时候,后面需要传入5个参数,分别为:
BACKUP_DIR:生成的备份文件存放的目录在哪里
HOSTNAME:要备份的数据库所在的服务器IP地址
USERNAME:执行备份的时候,连接到MySQL数据库的用户名称
USERPASSWORD:执行备份的时候,连接到MySQL数据库的用户对应的密码
MAIL_RECIPIENT:数据库备份完成后,接受通知邮件的收件人邮箱地址。
备份任务执行完成后,会有对应的邮件发送给配置的邮箱。
还原的shell脚本
数据库的还原脚本就比较简单,只要选择对应需要还原的数据库或表就可以了,选择好对应的待还原的SQL文件。然后执行类似于如下的命令即可。
mysql-uroot-p-D 后续我会把xtrabackup相关备份和还原的使用示例分享给大家,敬请期待...
唯一索引和普通索引选哪个?MySQL的优化:

在找工作面试的时候,面试官会看你的简历,会重点问你简历上写的技术,所以你要精心准备自己简历上的问题。同时,我和孙悟空过一天作文400字四年级上册(https://www.yuananren.com/zuowen/16491.html)
面试官也会问一些基础问题和其他方向的技术问题,希望以下的一些常见MySQL面试题能对你有所帮助。


数据库面试题
唯索引和普通索引选择哪个?
唯索引和普通索引在读取的时候效率基本差不多,普通索引差了点点。主要是判断和特殊情况下的次IO。
写的时候,普通索引可以利changebuffffer适合写多读少,唯索引要快。
以业务为前提,如果要求唯,就要选择唯索引。如果已经保证列的唯,我们尽量选择普通索引,然后把changebuffffer调。
MySQL的优化
MySQL的查询优化
使连接代替查询
尽量IN代替OR,OR的效率是n级别,IN的效率是log(n)级别,IN的个数建议控制在200以内;能BETWEEN不IN;
尽量LIMIT,同时尽量不count;
切分个连接时间很的查询,或返回数据量很的查询;
分解关联查询,在应层做关联,可以更容易对数据库进拆分,减少锁的竞争,减少冗余记录的查询;
以上就是小科今天整理提供的MySQL面试题,希望为学习MySQL的同学提供了有用的面试素材,以后小科每日均会提供MySQL、Python及Web相关的习题

你可能感兴趣的:(网站建设,mysql,sql,数据库,java,php)