1.复制对于主库来说主要是二进制日志的开销。
2.基于行的复制比语句复制更占用带宽。
3.工作流程图:
4.Percona Xtrabackup 开源的热备份工具,可以不阻塞服务器操作情况下备份数据库。
5.从库设置延时时间可以用来做备份容灾。一个从库只能对应一个主库,一个主库可以对应多个从库(ID唯一,否则重复ID从库会在主库上相互踢掉对方)
6.同一主库的备库不会共享binlog dump资源,所以备库越多对主库压力越大。需要很多备库时考虑从主库移除负载并使用份发主库,同时将表改为blackhole存储引擎(问题会很多,不做推荐)避免在分发主库上做实际查询。另一种思路是做树形/金字塔形备库,但中间层越多处理故障会更困难。
7.主库备库延时时间可以参考 Percona Toolkit里的pt-hearbeat脚步,是“复制心跳”流行的一种实现。在主库上每秒更新一次时间戳,备库用当前时间去减掉这个值。
$pt-table-checksum --replicate=test.checksum <master_host> 该命令检查所有表,并插入到test。checksumbiao zhong 。
8.备库不一致时可以考虑用Percona Toolkit的pt-table-sync工具,操作已知不同步的数据块。
9.更多高级的待实际遇到问题时再来细读....
主备库的一些常用参数配置:
server-id= #唯一ID
#主库
#innodb推介配置
innodb_flush_logs_at_trx_commit #flush erery log write
innodb_support_xa=1 #>mysql 5.0ver
lob_bin=路径 #二进制日志存放路径
expire_log_days=5 #日志保存天数
#备库
relay_log=路径 #复制的二进制日志和中继日志路径
skip_slave_start #避免启动自动连上次保存的主库信息
#可考虑配置
sync-master_info=1
sync_relay_log=1
sync_relay_log_info=1
log_slave_updates #让该备库变成其他库的主库 serverid要考虑唯一性
replicate-do-db=db #只复制指定db
replicate_wild_do_table=db.% #只复制指定db下的指定表
replicate-wild-ignore-table=db.% #忽略指定db下的指定表