一. xtrabackup 选项说明 在操作xtrabackup备份与恢复之前,先看下该工具的选项,下面记录了xtrabackup二进制文件的部分命令行选项,后期把常用的选项在补上.点击查看xtrabackup Option 指南 选项名 说明 --apply-log-only 仅在准备备份时,执行重做阶段.这对于增量备份非常重要. --backup 做一个备份, 并把它放在xtrabackup——target-dir目录里 --binlog-info 此选项控制Percona XtraBack…
一. 操作系统层面安全 对于数据库来说,安全很重要,本章将从操作系统和数据库两个层面对mysql的安全问题进行了解. 1. 严格控制操作系统账号和权限 在数据库服务器上要严格控制操作系统的账号和权限,在安装mysql时就要重视安全问题. (1) 锁定mysql用户. (2) 其它任何用户都采取独立的账号登录,管理员通过mysql专有用户管理mysql服务,或者通过 root su到mysql用户下进行管理. (3) mysql用户目录下,除了数据文件目录,其它文件和目录属主都改为root. 我本…
一. 完全备份恢复说明 xtrabackup二进制文件有一个xtrabackup --copy-back选项,它将备份复制到服务器的datadir目录下.下面是通过 --target-dir 指定完全备份文件的目录,还原到datadir目录下. xtrabackup --copy-back --target-dir=/data/backups/ 可以使用xtrabackup --move-back选项恢复备份.这个选项类似于xtrabackup --copy-back,唯一的区别是它将文件移动到…
一.概述 在作何数据库里,备份与恢复都是非常重要的.好的备份方法和备份策略将会使得数据库中的数据更加高效和安全.对于DBA来说,进行备份或恢复操作时要考虑的因素大概有如下: (1) 确定要备份的表的存储引擎是事务型(innodb)还是非事务型.两种不同的存储引擎备份方式在处理数据一致性方面是不太一样. (2) 确定使用全备份还是增量备份.增量备份是备份每天的增量日志,恢复时需要全备份加所有增量备份.这里与sql server的完整备份+日志备份或差异备份有点类似. (3) 可以考虑复制方法来做异…
1.使用相同索引键值的冲突 由于mysql 的行锁是针对索引加的锁,不是针对记录加的锁,所以虽然是访问不同行的记录,但如果是使用相同的索引键,是会出现锁冲突的.设计时要注意 例如:city表city_id字段有索引,Cityname字段没有索引: 会话1 会话2 SET autocommit=0; SET autocommit=0; SELECT * FROM city WHERE city_id=14 AND Cityname='深圳' FOR UPDATE; city_id      cou…
一.概述 在数据库中,数据是属于共享资源,为了保证并发访问的一致性,有效性,产生了锁.接下来重点讨论mysql锁机制的特点,常见的锁问题,以及解决mysql锁问题的一些方法或建议. 相比其他数据库,mysql 锁机制比较简单,显著的特点是 不同的存储引擎支持不同的锁机制.在innodb中支持行锁和表锁,默认行锁. mysql 的三种锁归纳如下: 表级锁:开销小,加锁快,不会出现死锁,锁定粒度大,发生锁冲突的概率最高,并发度最低. 行级锁:开销大,加锁慢:会出现死锁,锁定粒度最小,发生锁冲突的概率…
1. innodb_lock_wait_timeout mysql 可以自动监测行锁导致的死锁并进行相应的处理,但是对于表锁导致的死锁不能自动监测,所以该参数主要用于,出现类似情况的时候等待指定的时间后回滚.系统默认值是50秒.用户可以根据业务自行设置.生产环境不推荐使用过大的 innodb_lock_wait_timeout 参数值. -- 查看事务超时时间 SHOW VARIABLES LIKE 'innodb_lock_wait_timeout'; 也可以对当前会话进行超时设置如: set…
1. innodb 行锁是基于索引实现的,如果不通过索引访问数据,innodb会使用表锁. http://www.cnblogs.com/MrHSR/p/9376086.html 2. Innodb 间隙锁(Next-key)机制,以及innodb使用间隙锁的原因 http://www.cnblogs.com/MrHSR/p/9390350.html 3.不同隔离级别下,innodb的锁机制和一致性读策略不同. http://www.cnblogs.com/MrHSR/p/9403316.htm…
一.概述 Innodb 行锁是通过给索引上的索引项加锁来实现的.这一点与(oracle,sql server)不同后者是通过在数据块中对相应的数据行加锁.这意味着只有通过索引条件检索数据,innodb才使用行级锁,否则 innodb将使用表锁. 在实际应用中,特别要注意innodb行锁的这一特性,不然的话,可能导致大量的锁冲突,从而影响并发性能.下面来实际演示说明: 1.  innodb 的表条件CityCode不使用索引时,使用的是表锁例子 -- 查询表中数据共二条 SELECT * FROM…
1 .获取innodb行锁争用情况 1.1 通过检查innodb_row_lock状态变量来分析系统上的行锁的争夺情况 SHOW STATUS LIKE 'innodb_row_lock%' 通过innodb_row_lock_waits 和 innodb_row_lock_avg 的值来判断行锁争用情况,值高意味着争用比较严重. 1.2 通过检查 innodb monitors来观察发生锁冲突的表,数据行等,并分析锁争用的原因 -- 查看分析 SHOW ENGINE INNODB STATUS…