阿里云ECS搭建RDS从库

架构

RDS版本:5.6.40

ECS自建库版本:5.7.26


前置工作

配置ECS防火墙

默认入规则配置设置为drop

iptables -P INPUT DROP

只开启ssh和80端口,此外再打开MySQL端口(80端口看自身需求)

配置ECS内网IP到RDS的白名单里


ECS搭建单机MySQL

脚本创建MySQL5.7

RDS物理备份还原到ECS

RDS恢复到自建ECS


主库配置工作

主库需要高权限账户,创建一个用于复制的账号

create user 'rpl'@'%' identified by 'password';

grant REPLICATION SLAVE,Replication client,reload on *.* to 'rpl'@'%' identified by 'password';


从库配置工作

根据需求设置从库过滤选项(执行全库同步的忽略此步骤)

在配置文件中加入#replication,该部分用来配置从库参数

#replication

read_only=1   #根据业务需求,此处设置从库为只读

replicate-wild-do-table=xxx1.%  #需要传输的库1

replicate-wild-ignore-table=mysql.%  #需要过滤的库1

replicate-wild-ignore-table=xxx2.%   #需要过滤的库2


删除从库中的几张表,并重新创建

reset slave;

use mysql;

drop table slave_master_info;

drop table slave_relay_log_info;

drop table slave_worker_info;

drop table innodb_index_stats;

drop table innodb_table_stats;

重新创建(mysql_system_tables.sql)

source /usr/local/mysql/share/mysql_system_tables.sql


从库创建复制账号,与主库的一致

create user 'rpl'@'%' identified by 'password';

grant REPLICATION SLAVE,Replication client,reload on *.* to 'rpl'@'%' identified by 'password';


从库创建业务用查询权限的账号

create user 'dasj'@'%' identified by 'password';

grant select on *.* to 'dasj'@'%' identified by 'password'; 


重启ECS端MySQL使设置生效

配置主从

change master to master_host='rm-xxxxxxxxxxx.mysql.rds.aliyuncs.com',master_user='rpl',master_password='password',master_port=3306,master_auto_position=1;


切换到主库

确认当前Executed_Gtid_Set

show master status

复制当前的Executed_Gtid_Set值


切换回从库

设置GTID_PURGED

reset master;

set global gtid_purged='14cd06a7-847a-11e8-bd61-506b4b2babde:1-4257177, 333cccc5-808b-11e8-a3bc-7cd30abeadba:1-6734';

配置完毕,启动主从

start slave;

检查状态

show slave status \G

出现双yes则表示配置成功

在线上RDS可以看到复制线程一直在工作


至此初步配置完成


关于过滤参数

replicate-wild-do-table和replicate-wild-ignore-table

replicate-do-db和replicate-ignore-db

根据网上的说法replicate-do-db和replicate-ignore-db这组参数有可能造成binlog过滤不完整的情况,因此普遍采用replicate-wild-do-table和replicate-wild-ignore-table这组参数进行数据过滤

比如不同步主库的mysql库,可以把参数写成replicate-wild-ignore-table=mysql.%

此外如果需要过滤多个库,不可以写成replicate-wild-ignore-table=mysql.%,xxx.%,yyy.%,需要分开写出来


在线设置复制过滤

过滤不需要重启数据库,但需要停sql_thread

STOP SLAVE SQL_THREAD;

CHANGE REPLICATION FILTER replicate-wild-do-table=('xxx.acp','xxx1.%')

注意在线设置的时候,写法要写在一起,而不是之前配置参数时的分开写,如果分开写的话,会导致前面的都不生效,只有最后一条生效(比如下面的2个语句,就只有xxx1.%那条生效了)

CHANGE REPLICATION FILTER replicate-wild-do-table=('xxx.acp')

CHANGE REPLICATION FILTER replicate-wild-do-table=('xxx1.%')

再开启sql_thread通过show slave status \G查看配置是否生效

START SLAVE SQL_THREAD;


报错处理

阿里金融云RDS默认不能拿到最新的binlog文件(延迟6小时),因此采用物理备份还原的数据不是最新数据,不可避免的会产生1032报错

执行show slave status \G

找到下面这2行

Retrieved_Gtid_Set: 364da72f-333f-11e8-abb2-7cd30ad3abda:104186843-104394919

Executed_Gtid_Set: 186c8f74-9620-11e9-9929-00163e0009fe:1-9166,

364da72f-333f-11e8-abb2-7cd30ad3abda:1-104394919,

b0a77135-4f35-11e7-9cb4-7cd30abeaf0e:1-47265271


Re表示Relay已接收的,Ex表示已经执行复制的

通常来说,Re大于等于Ex

此处Re为104394919,Ex也为104394919,表明数据已经完全同步

如果Re为一个远大于104394919的值,且有1032报错,则表明Ex在104394919这里卡住了,需要跳过去,跳过的值为当前Ex的GTID值+1,即:104394920


操作如下

方法1

STOP SLAVE;

SET @@SESSION.GTID_NEXT='364da72f-333f-11e8-abb2-7cd30ad3abda:104394920';

#设置空事务

BEGIN; COMMIT;

#恢复事务号

SET SESSION GTID_NEXT = AUTOMATIC;

START SLAVE;


方法2

STOP SLAVE;

RESET MASTER;

SET @@GLOBAL.GTID_PURGED ='364da72f-333f-11e8-abb2-7cd30ad3abda:1-104394920,'

START SLAVE;


此外还可以用pt系列的工具:pt-slave-restart

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 156,757评论 4 359
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,478评论 1 289
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 106,540评论 0 237
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,593评论 0 203
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 51,903评论 3 285
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,329评论 1 210
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,659评论 2 309
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,383评论 0 195
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,055评论 1 238
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,337评论 2 241
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,864评论 1 256
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,227评论 2 251
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,820评论 3 231
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 25,999评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,750评论 0 192
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,365评论 2 269
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,260评论 2 258

推荐阅读更多精彩内容