目录
一、不停库不锁表在线主从配置
二、MySQL主主复制
三、关于auto_increment
四、MySQL读写分离
一、不停库不锁表在线主从配置
mysqldump适合备份10G以下的数据量,比较方便快捷。当需要备份的数据量达到100G以上时,mysqldump对原库的压力太大,导出性能很差。此时Percona-Xtrabackup备份工具是更好的选择,Percona-Xtrabackup支持在线热备份(备份时不影响数据读写),它有以下优势:
xtrabackup优势:
对InnoDB引擎的表做热备
增量备份
流压缩传输到另外的服务器上
在线移动表
更简单的创建主从同步
备份时不增加服务器负载
MYSQL主从同步因主键冲突导致的主从无法同步情况
二、MySQL主主复制
原理:主主复制在两台MySQL互为主从,它们都可以变更数据,其中一台变更了数据另外一台也会同步相应的变更。
架构方案思路:
两台mysql都可读写,互为主备,默认只使用一台(masterA)负责数据的写入,另一台(masterB)备用。
masterA是masterB的主库,masterB又是masterA的主库,它们互为主从。
两台主库之间做高可用,可以采用keepalived等方案(使用VIP对外提供服务)。
所有提供服务的从服务器与masterB进行主从同步(双主多从)。
建议采用高可用策略的时候,masterA或masterB均不因宕机恢复后而抢占VIP(非抢占模式)。
这样做可以在一定程度上保证主库的高可用,在一台主库down掉之后,可以在极短的时间内切换到另一台主库上(尽可能减少主库宕机对业务造成的影响),减少了主从同步给线上主库带来的压力。
不足:
masterB可能会一直处于空闲状态(可以用它当从库,负责部分查询)。
主库后面提供服务的从库要等masterB先同步完了数据后才能去masterB上去同步数据,这样可能会造成一定程度的同步延时。
三、关于auto_increment
MySQL中对于表上ID自增列可以在创建表的时候指定列上的auto_increment属性和auto_increment_offset属性。
auto_increment_increment控制列中的值的增量值,也就是步长。
auto_increment_offset确定AUTO_INCREMENT列值的起点,也就是初始值。
四、MySQL读写分离
原理:
读写分离就是在主服务器上修改,数据会同步到从服务器,从服务器只能提供读取数据,不能写入,实现备份的同时也实现了数据库性能的优化,以及提升了服务器安全。
目前较为常见的Mysql读写分离分为以下两种:
基于程序代码内部实现
在代码中根据select 、insert进行路由分类,这类方法也是目前生产环境下应用最广泛的。优点是性能较好,因为程序在代码中实现,不需要增加额外的硬件开支,缺点是需要开发人员来实现,运维人员无从下手。
基于中间代理层实现
代理一般介于应用服务器和数据库服务器之间,代理数据库服务器接收到应用服务器的请求后根据判断后转发到,后端数据库,有以下代表性的程序。
一些扩展