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

[经验分享] 百万级mysql从库搭建

[复制链接]

尚未签到

发表于 2018-10-6 13:03:34 | 显示全部楼层 |阅读模式
背景:
  

1.当前mysql:Ucloud高可用数据库实例,所属区域在北京。  

  2.异地容灾需求、跨平台同步、后期的异地双活需求。
  

  3.新建从库:阿里云华南自建mysql。
  

考察:
      1.Ucloud数据库实例基于mysql原版进行了二次开发,在结构上有些调整,在为每个实例搭配一个phpadmin进行管理,算是比较简单。高可用实例主库已做双主热备。Mysql5.7后支持一从多主。
      2.Aliyun数据库实例也进行过调整,修改比较多,对mysql库管控比较严以配合控制台的数据库管理。
      3.Aliyun数据库管理提供DTS工具,用于迁移数据,功能比较强大:迁移粒度、持续数据迁移(间接达到数据同步)、适合环境多。不适用当前需求原因:DTS迁移自建数据库需要公网访问源实例,太不安全。
      4.跨平台异地双活目前来看只能通过自建实现,业务架构还要大幅度调整。先实现跨平台异地备份吧。
      5.Mysl同步的数据包默认是明文传输,支持ssl验证,但在云平台上似乎不好实现(内网访问),先通过使用安全组控制访问解决安全问题,后期建立***,包传输走隧道改进。

情景汇总:
  

Mysql主(10.10.123.231):ucloud北京机房、高可用实例、内网访问、版本为5.6.20-ucloudrel1-log  
Mysql从(172.17.3.42):aliyun华南自建
  

步骤:
     1.准备工作
      aliyun平台新建ECS实例;根据源mysql版本安装相近版本,选择的mysql5.6.38,下载rpm包后,使用yum安装;初始化数据库,修改配置文件,并启动。
      考虑到后期会使用DTS,按建议添加配置;mysql5.6后添加了GTID作用于同步,主从配置要一致:
  

server_id=23  
gtid_mode=on
  
enforce_gtid_consistency=on
  
log_bin=mysql_bin
  
binlog_format=row
  
binlog_row_image=full
  
log-bin-trust-function-creators=1
  

  2.数据导入:从ucloud控制台找到源mysql的最新备份,下载并导入到自建的mysql中。
     下载备份遇到问题:浏览器能正常下载,在linux下使用wget下载报403
DSC0000.jpg

      解决办法:对下载地址用引号引入。
     备份压缩包接近40G,使用source导入耗时超过一天。
  3.搭建端口转发(类似于mysql代理服务器)
     选择一台与源mysql同内网的centos 7 (内网IP:10.10.123.233,外网IP:123.123.123.123),配置iptables转发3306端口的流量,实现新建的mysql实例访问到主库。
  

# echo 1 > /proc/sys/net/ipv4/ip_forward  
# iptables -t nat -A PREROUTING -d 10.10.123.233 -p tcp --dport 3306 -j DNAT --to-destination 10.10.123.231:3306
  
# iptables -t nat -A POSTROUTING -d 10.10.123.231 -p tcp --dport 3306 -j SNAT --to-source 10.10.123.233
  

    并在新建从库中测试好连通性。
  4.主从配置
  

主要命令:
  
> GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%'>  
> change master to \
  
master_host=”123.123.123.123”,\
  
master_port=3306,\
  
master_user=’slave’,\
  
master_password=’123456’,\
  
master_log_file=’mysql-bin.000383’,\
  
master_log_pos=’888039274’;     //配置主库信息
  
> start slave;
  
> show slave status\G;
  

      获取同步的binlog文件和位置:下载的备份文件中有,在文件前100行可以找到(推断ucloud备份是用mysqldump命令配合--single-transaction --master-data=2参数)。

遇到的问题及解决
    1.查看主从同步,报错:无法从master获取日志
DSC0001.jpg


     Last_IO_Error:>     原因:配置主从同步的binlog位置异常,需要重新指定。
  

> show master status;  
> show master logs;     //查看可用的binlog文件
  
> show binlog events in 'mysql-bin.000383' from 888039274 limit 2;      //指定开始位置和显示数量
  

DSC0002.jpg

    果然是个比较特殊的位置,直接在mysql下查不到。还好还可以使用mysqlbinlog工具查看。
    下载binlog,解压得到mysql-bin.000383文件
  

# mysqlbinlog  --start-position=888039200 --stop-position=888039300 mysql-bin.000383 //用大概的位置查找,报错  

DSC0003.jpg

    只能全部导出,在定位了:
  

# mysqlbinlog  mysql-bin.000383 > 383bin.log  

    查找到的范围为:
DSC0004.jpg

    重新配置position位置,并重启slave进程即可。
    2.查看主从同步状态,报错:重复键问题,可能是刚刚调整了log_position导致的
DSC0005.jpg

  考虑到先只做备份,将类似错误忽略即可。
      解决办法:在mysqld配置文件中添加 slave-skip-errors = 1062,并重启mysql服务即可。



运维网声明 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-613824-1-1.html 上篇帖子: 数据库 之 MySQL的索引 下篇帖子: mysql允许远程连接
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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