主从复制—下
MySQL复制
主主复制:互为主从(使用的场景不是很多)
- 容易产生的问题:数据不一致;因此慎用(主主会造成ID不连续,不会冲突)
- 考虑要点:自动增长id 配置一个节点使用奇数id
另一个节点使用偶数id
主主复制的配置步骤:
1、各节点使用一个惟一server\_id
2、都启动binary log和relay log
3、创建拥有复制权限的用户账号
4、定义自动增长id字段的数值范围各为奇偶
5、均把对方指定为主节点,并启动复制线程
半同步复制
默认情况下,MySQL的复制功能是异步的,异步复制可以提供最佳的性能,主库把binlog日志发送给从库即结束,并不验证从库是否接收完毕。这意味着当主服务器或从服务器端发生故障时,有可能从服务器没有接收到主服务器发送过来的binlog日志,这就会造成主服务器和从服务器的数据不一致,甚至在恢复时造成数据的丢失
半同步使用的场景还是挺多的推荐,在主从环境下,主收到更新语句,主同步完成后发送给所有的从服务器,当收到任意一台从服务器写入成功才发送给调度器,或用户,当然有个超时时间(默认是10秒)

半同步复制实现
复制过滤器
让从节点仅复制指定的数据库,或指定数据库的指定表
跨库操作有问题,问题不大
两种实现方式:
1、服务器选项:主服务器仅向二进制日志中记录与特定数据库相关的事件
注意:此项和binlog\_format相关
参看:https://mariadb.com/kb/en/library/mysqld-options/#-binlog-ignore-db
binlog\_do\_db = 数据库白名单列表,多个数据库需多行实现
binlog\_ignore\_db = 数据库黑名单列表
问题:基于二进制还原将无法实现;不建议使用
2、从服务器SQL\_THREAD在replay中继日志中的事件时,仅读取与特定数据库(特定表)相关的事件并应用于本地
问题:会造成网络及磁盘IO浪费
从服务器上的复制过滤器相关变量
replicate\_do\_db= 指定复制库的白名单(多数据库使用逗号,隔开) 不支持通配符,配置文件或想配置多个数据名,
replicate\_ignore\_db= 指定复制库黑名单(多数据库使用逗号,隔开)
replicate\_do\_table= 指定复制表的白名单
replicate\_ignore\_table= 指定复制表的黑名单
replicate\_wild\_do\_table= foo%.bar% 支持通配符
replicate\_wild\_ignore\_table=
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 438803792@qq.com
Loading...
keepalived