百万级mysql从库如何搭建
admin
2023-05-07 22:01:53
0

本文主要给大家简单讲讲百万级mysql从库如何搭建,相关专业术语大家可以上网查查或者找一些相关书籍补充一下,这里就不涉猎了,我们就直奔主题吧,希望百万级mysql从库如何搭建这篇文章可以给大家带来一些实际帮助。

背景:
 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
百万级mysql从库如何搭建
    解决办法:对下载地址用引号引入。

   备份压缩包接近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'@'%' IDENTIFIED BY ‘123456’;     //添加主从同步的用户
> 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获取日志
百万级mysql从库如何搭建
   Last_IO_Error: Relay log write failure: could not queue event from master
   原因:配置主从同步的binlog位置异常,需要重新指定。

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

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

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

百万级mysql从库如何搭建

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

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

  查找到的范围为:
百万级mysql从库如何搭建
  重新配置position位置,并重启slave进程即可。

  2.查看主从同步状态,报错:重复键问题,可能是刚刚调整了log_position导致的
百万级mysql从库如何搭建
考虑到先只做备份,将类似错误忽略即可。
    解决办法:在mysqld配置文件中添加 slave-skip-errors = 1062,并重启mysql服务即可。

百万级mysql从库如何搭建就先给大家讲到这里,对于其它相关问题大家想要了解的可以持续关注我们的行业资讯。我们的板块内容每天都会捕捉一些行业新闻及专业知识分享给大家的。

相关内容

热门资讯

“点热成电”,挖掘能源金矿 “十五五”规划纲要提出,深入实施能源安全新战略,加快构建清洁低碳安全高效的新型能源体系,建设能源强国...
新能源车企激战大电量时代 “量... 时报财经图库/供图 证券时报记者 叶玲珍 作为车企角逐的主战场,电池容量军备竞赛日趋白热化。中国汽车...
以方透露内塔尼亚胡曾秘访阿联酋... 以色列方面5月13日透露,以总理内塔尼亚胡在以色列对伊朗发动大规模军事行动期间曾秘密访问阿联酋,并称...
英伟达、谷歌、苹果均创市值历史... 【CNMO科技消息】5月14日,CNMO科技注意到,美东时间周三,美股三大指数涨跌不一,纳指和标普5...
商业化探索持续深入 “AI+教... 来源:滚动播报 (来源:经济参考报) 人工智能通识课堂上,教师发出指令几分钟后,学生手绘的卡通人物就...
偷拍男子是否会被清出公务员拟录... 近日,南京审计大学一名在校研究生顾某某因涉嫌偷拍女生隐私,引发关注。顾某某已被国家税务总局江苏省税务...
乌克兰首都基辅传出爆炸声 △乌克兰首都基辅(资料图)当地时间14日,乌克兰首都基辅传出爆炸声,此前基辅拉响防空警报。(总台记者...
移动空调制冷一会就停止了 原因可能是空调正在开启启动模式,移动空调存在逐步启动模式,在空调开启过程中会逐步启动保证空调的正常运...
排水管怎么安装 首先需关闭上水阀,然后将软管用扳手拧下来装上三通,注意需要按一个内部带丝扣的一面,然后在三通上接上原...
净水器滤芯正确顺序图 以常规的欧吉分五级过滤瓶为例,前三级是初次过滤,主要是PP棉、颗粒活性炭、块状活性炭、树脂等。通常组...