设为首页 收藏本站
查看: 1149|回复: 0

[经验分享] MySQL数据库复制过滤

[复制链接]

尚未签到

发表于 2018-10-9 08:18:10 | 显示全部楼层 |阅读模式
  在复制的时候只复制数据库中的部分表,可以减少主从服务器的压力
  在主服务器上
  binlog-bin-db仅将指定数据库相关的修改操作计入二进制日志(一般来讲)【白名单】
  binlog-ignore-db【黑名单】
  一旦主数据库发生故障,则无法立即还原引起较大的损失,因此主端的二进制日志是完整的
  从服务器上
  replicate-do-db【白名单】只应用哪个数据库到本地
  replicate-ignore-db【黑名单】
  replicate-do-table使用指定表
  replicate-ignore-table
  replicate-wild-do-table使用通配符的方式
  replicate-wild-ignore-table
  以上指令都可以使用多次
  设定黑白名单比较适合在从数据库上进行
  MySQL 5.6中引入了GTID
  是唯一的标示符,是由服务器的UUID(全局唯一标识)对于任意一个服务器来讲,都是一个128位的随机字符串、并结合事务ID号来组合成某个主机上事务的唯一的标识码,即为GTID
  在每一个事务的首部,都写上了GTID
  使复制的过程变得非常简单,并且能够在崩溃中迅速的恢复,提供了高可用的能力
  innoDB 存储引擎,若要使用它的高可用,都要借助于GTID
  使用GTID之后,可以自动的选择要从哪个地方开始复制
  多线程复制
  事务的前后顺序很重要
  每个数据库也仅能使用一个线程,当涉及到多个数据库时,多线程复制才有意义
  slave -parallel-workers=0
  禁用多线程功能
  replication Utility:mysqlreplicate
  快速启用MySQL的从服务器,帮助从服务器,检查本地已经执行的事务通过追踪GTID,跳过已经执行的复制,从而加快复制
  replication Utility:mysqlrplcheck
  实现简单的验证部署,并实现快读故障修复,binlog是否被启用以及相关的配置是否异常
  通过执行简单的认证功能
  replication Utility:mysqLrplshow
  显示mysql的复制拓扑图,显示是否是多级复制,会绘制一个图,会显示主机名以及端口号
  replication Utility:mysqlfailover故障转移工具
  快速的自动或手动提升一个slave,应用其他slave不具有的功能转换为master
  replication Utility:mysqlrpladmin调度管理工具
  手动的让某个节点上线或者下线,调度down掉一个节点
  要在MySQL 5.6中使用复制功能,其服务配置段[mysqld]中于少应该定义如下选项:
  binlog-format:二进制日志的格式,有row、statement和mixed几种类型;
  需要注意的是:当设置隔离级别为READ-COMMITED必须设置二进制日志格式为ROW,现在MySQL官方认为STATEMENT这个已经不再适合继续使用;但mixed类型在默认的事务隔离级别下,可能会导致主从数据不一致;
  log-slave-updates、gtid-mode、enforce-gtid-consistency、report-port和report-host:用于启动GTID及满足附属的其它需求;
  master-info-repository和relay-log-info-repository:启用此两项,可用于实现在崩溃时保证二进制及从服务器安全的功能;
  sync-master-info:启用之可确保无信息丢失;
  slave-paralles-workers:设定从服务器的SQL线程数;0表示关闭多线程复制功能;
  binlog-checksum、master-verify-checksum和slave-sql-verify-checksum:启用复制有关的所有校验功能;
  binlog-rows-query-log-events:启用之可用于在二进制日志记录事件相关的信息,可降低故障排除的复杂度;
  log-bin:启用二进制日志,这是保证复制功能的基本前提;
  server-id:同一个复制拓扑中的所有服务器的id号必须惟一;
  master-info-repository让主服务器记录每一个从服务器的连接信息以及每一个主服务器复制的二进制文件名极其相关的事件信息;记录到:file table
  relay-log-info-repository从服务器自己记录连接的主服务器是谁,主服务器的哪个二进制文件以及二进制文件的记录位置.记录到:file table
  PS uname -n 查看主机名
  cat /etc/issue查看Linux内核
  一、简单主从模式配置步骤
  1、配置主从节点的服务配置文件
  1.1、配置master节点:
  [mysqld]
  binlog-format=ROW
  log-bin=master-bin
  log-slave-updates=true
  gtid-mode=on
  enforce-gtid-consistency=true
  master-info-repository=TABLE
  relay-log-info-repository=TABLE
  sync-master-info=1
  slave-parallel-workers=2
  binlog-checksum=CRC32
  master-verify-checksum=1
  slave-sql-verify-checksum=1
  binlog-rows-query-log_events=1
  server-id=1
  report-port=3306
  port=3306
  datadir=/mydata/data
  socket=/tmp/mysql.sock
  report-host=master.magedu.com
  1.2、配置slave节点:
  [mysqld]
  binlog-format=ROW
  log-slave-updates=true
  gtid-mode=on
  enforce-gtid-consistency=true
  master-info-repository=TABLE
  relay-log-info-repository=TABLE
  sync-master-info=1
  slave-parallel-workers=2
  binlog-checksum=CRC32
  master-verify-checksum=1
  slave-sql-verify-checksum=1
  binlog-rows-query-log_events=1
  server-id=11
  report-port=3306
  port=3306
  log-bin=mysql-bin.log
  datadir=/mydata/data
  socket=/tmp/mysql.sock
  report-host=slave.magedu.com
  2、创建复制用户

  mysql> GRANT REPLICATION SLAVE ON *.* TO repluser@172.16.100.7>  说明:172.16.100.7是从节点服务器;如果想一次性授权更多的节点,可以自行根据需要修改;
  3、为备节点提供初始数据集
  锁定主表,备份主节点上的数据,将其还原至从节点;如果没有启用GTID,在备份时需要在master上使用show master status命令查看二进制日志文件名称及事件位置,以便后面启动slave节点时使用。
  4、启动从节点的复制线程
  如果启用了GTID功能,则使用如下命令:
  mysql> CHANGE MASTER TO MASTER_HOST='master.magedu.com', MASTER_USER='repluser', MASTER_PASSWORD='replpass', MASTER_AUTO_POSITION=1;
  没启用GTID,需要使用如下命令:
  slave> CHANGE MASTER TO MASTER_HOST='172.16.100.6',
  -> MASTER_USER='repluser',
  -> MASTER_PASSWORD='replpass',
  -> MASTER_LOG_FILE='master-bin.000003',
  -> MASTER_LOG_POS=1174;
  二、半同步复制
  1、分别在主从节点上安装相关的插件
  master> INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';
  slave> INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';
  2、启用半同步复制
  在master上的配置文件中,添加
  rpl_semi_sync_master_enabled=ON
  在至少一个slave节点的配置文件中添加
  rpl_semi_sync_slave_enabled=ON
  而后重新启动mysql服务即可生效。
  或者,也可以mysql服务上动态启动其相关功能:
  master> SET GLOBAL rpl_semi_sync_master_enabled = ON;
  slave> SET GLOBAL rpl_semi_sync_slave_enabled = ON;
  slave> STOP SLAVE IO_THREAD; START SLAVE IO_THREAD;
  3、确认半同步功能已经启用
  master> CREATE DATABASE magedudb;
  master> SHOW STATUS LIKE 'Rpl_semi_sync_master_yes_tx';
  slave> SHOW DATABASES;


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-619127-1-1.html 上篇帖子: mysql数据库安装 下篇帖子: mysql备份之mysqldump工具
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表