数据库的复制过滤功能
Master:
show global variables like “binlog_do_db”;
仅将指定数据库的相关修改操作记入二进制日志;
show global variables like “binlog_ignore_db”;
Slave:
replicate-do-db =
replicate-do-table =
replicate-ignore-db =
replicate-ignore-table =
replicate-wild-do-table =
replicate-wild-ignore-table =
关于replicate-wild-do-table可能带来的问题:
http://dinglin.iteye.com/blog/1207776
在进行过滤的时候,应该在Slave上进行定义过滤规则!!
由于这些变量是只读的,所以show没法看到;
例如:
#vim /etc/my.cnf
replicate-do-db = discuz
#service mysqld restart
mysql>show slave status\G
可以看到只复制主服务器discuz这个数据库;
基于GTID实现多线程的复制
GTID(Global Transaction Identifiers)
GTID:由服务器的UUID并结合事务ID标识出来的唯一身份符;
多线程复制:
- 多线程对单个数据库操作有可能带来数据紊乱,所以每个数据库仅能使用一个线程;
- 对于一个数据库,多线程没有意义;
从服务器使用:
slave-parallel-workers=#(线程数目最好和数据库数目相同)
0:表示禁用
提供的工具:
- mysqlrelplcate
实现快速启动从服务器,能够快速检查已经保存的GTIDs,然后从那些没有执行的GTIDs事务中进行备份;
- mysqlrplcheck
检查复制环境是否满足的工具
- mysqlrplshow
发现并显示复制的拓扑图
并显示主机名和端口号 - mysqlfailover
master故障后,快速使slave提升为master;
- mysqlrpladmin
管理工具
MySQL5.6引入的GTID(Global Transaction IDs)使得其复制功能的配置、监控及管理变得更加易于实现,且更加健壮;
要在MySQL5.6中使用复制功能,其服务配置段[mysqld]中至少应该定义如下选项:
binlog-format:二进制日志的格式,有row,statement和mixed几种类型:
需要注意的是,当设置隔离级别为READ-COMMITTED必须设置二进制日志格式为ROW,现在MySQL官方认为statement这个已经不再适合继续使用;但mixed类型在默认的事务隔离级别下,可能会导致主从数据不一致;
log-slave-updates、gitd-mode、enforce-gtid-consistency、report-port和report-host:用于启动GTID及满足附属的其他需求;
master-info-repository和reply-log-info-repository:启用此两项,可用于实现在崩溃时保证二进制及从服务器安全的功能;
sync-master-info:启用之后可保证无信息丢失;
slave-paralles-workers:设定从服务器的SQL线程数,0表示关闭多线程复制功能;
binlog-checksum、master-verity-checksum和slave-verity-checksum:启用复制相关的所有校验功能;
binlog-rows-query-log-events:启用之后可用于在二进制日志记录事件相关的信息,可降低故障排除的复杂度;
log-bin:启用二进制日志,这是保证复制功能的基本前提;
server-id:同一个复制拓扑中的所有服务器的ID号必须唯一;
report-host:
The host name or IP address of the slave to be reported to the master during slave registration,This value appears in the output of SHOW SLAVE HOSTS on the master server.
report-port:
The TCP/IP port number for connecting to the slave,to be reported to the master during slave registration.
master-info-repository:
The setting of this variable determines whether the slave logs master status and connection information to a FILE(master.info),or to a TABLE(mysql.slave_master_info)
relay-log-info-repository:
This option causes the server to log its relay log info to a file or a table.
log_slave_updates:
Whether updates received by a slave server from a master server should be logged to the slave’s own binary log ,binary logging must be enabled on the slave for this variable to have any effect;
enforce_gtid_consistency:强制GTID的一致性
1 | 一、简单主从模式配置步骤 |
1 | [mysqld] |