阿里云主从同步2.0

概述
嗨,大家好,我还是那个苦B的运维工程师,今天我要记录的是如何让阿里云ECS自建Mysql与RDS进行主从复制,(下面我就要讲述一下我的心酸屎了,请大家仔细审查)这还真是一个问题,当我接收到首长这条命令的时候,其实我内心是拒绝的, 
但是身为一名具有绝对职业操守的运维人员来说,也要硬着头皮上,所以我就干到了凌晨三点,呵呵呵呵,此时已经是第二天的商务10:10分,我坐在办公桌上不知所措,眼皮都已经睁不开了,但是!!因为拥有运维工程师的职业操守,所以!!我就要记录一下我的过程,各位客官慢慢欣赏!

准备工作
1 RDS数据库服务器(不会操作,就去阿里提工单,他们就教你)
2 ECS自建数据库(至于建立数据库的过程,上篇文章有写,请注意,rds上的数据库版本要与ecs上的版本相同,一点都不能不一样!)
  可以在rds上输入用户名和密码登录进数据库中,打开SQL窗口,执行"select version();"来查看具体版本号
3 具体没啥别的了,我在下面写一下Mysql主从复制的原理吧,不会的就认真看看,会的就随便看看


Mysql主从复制原理


上面这张图我用了某个大哥的,如果你发现了,不要生气,爱你,Mua~!(下面正式进入关于原理的主题)
    1 从库会生成两个线程,一个I/O线程,一个SQL线程;
    2 I/O线程会去请求主库的binlog,并将得到的binlog写到本地的relay-log(中继日志)文件中;
    3 主库会生成一个log dump线程,用来给从库I/O线程传binlog;
    4 SQL线程,会读取relay log文件中的日志,并解析成sql语句逐一执行;

将RDS上面的数据导到ECS自建数据库中
    1 点击RDS管理页面的"迁移数据库" --> 点击左侧列表"数据传输"列表中的"数据迁移" --> 选择你的实例所在地区
    --> "创建迁移任务" --> 弹出来的页面都是自己手动填写的,一般迁移过程中建议将应用关闭,因为数据还会更新,不过阿里说
    迁移过程中,DDL的指定都无效,也不知道真假的,反正我迁的时候就给关了
    2 登录到rds上,点击"新建数据库用户" --> 指定用户名和密码 --> 赋予"SELECT,REPLICATION 
      SLAVE,REPLICATION CLIENT"权限
    3 当它预检查成功的时候就证明,你的迁移可以开始了,选中你的任务,点击下方的"启动",然后等待!
    4 迁移完毕后,在从库上登录查看一下迁移的库是否存在,如果存在,恭喜你,如果不存在,活该,我写这么详细还能失败?!

在ECS自建数据库上操作
1 更改/etc/my.cnf文件为以下内容
[mysqld]
user=mysql                                             #用来启动mysql的用户
server_id = 2                                          #指定从库的server_id,不能与主库相同
read_only = 1                                          #设置从库为只读
port = 3307                                            #指定端口号为3307,最好不要跟主库相同
replicate-wild-ignore-table     = mysql.%              #主从复制的时候忽略
replicate-wild-ignore-table     = test.%               #主从复制的时候忽略
binlog_format   = ROW                                  #binlog的格式,ROW格式记录方式成每一行数据被修改,
                                                       然后在slave端再对相同的数据进行修改
log-bin                  = mysql-bin                   #二进制日志,记录对数据发生变化的sql语句,以二进制方式
                                                       保存在磁盘中
log-bin-index            = mysql-bin.index             #指定索引文件,此文件指示当前使用了哪个日志文件
relay-log                = relay-log                   #中继日志,用来存放master的bin中的内容,看上方原理
relay_log_index          = relay-log.index             #指定索引文件,此文件指示当前使用哪个日志文件

gtid_mode=on                                           #开启GTID

GTID概述 
1、全局事物标识:global transaction identifieds。 
2、GTID事物是全局唯一性的,且一个事务对应一个GTID 
3、一个GTID在一个服务器上只执行一次,避免重复执行导致数据混乱或者主从不一致 
4、GTID用来代替classic的复制方法,不在使用binlog+pos开启复制。而是使用master_auto_postion=1的方式自动匹配GTID断点进行复制 
5、MySQL-5.6.5开始支持的,MySQL-5.6.10后开始完善。 
6、在传统的slave端,binlog是不用开启的,但是在GTID中,slave端的binlog是必须开启的,目的是记录执行过的GTID(强制)

enforce_gtid_consistency=on                          #只记录对基于GTID的复制安全
log-slave-updates = 1                                #允许下端接入slave

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES  #存储引擎采用严格模式


basedir=/app/mysql/                                  #指定mysql的安装目录
datadir=/app/mysql/data                              #指定mysql数据的存放目录
socket=/tmp/mysql.sock                               #指定mysql的sock文件存放目录
key_buffer_size=32M                                  #myisam索引缓冲,对myisam很重要,缓存myisam表索引数据
max_allowed_packet=8M                                #限制Server接受的数据包大小

[mysqldump]                                          #数据库备份
quick                                                #强制mysqldump从服务器一次一行地检索表中的行而不是
                                                     检索所有行并在输出前将它缓存到内存中
2 启动数据库
[root@localhost ~]# service start mysqld             #Centos6上面的启动命令(前提是要将mysql.server文
                                                     件加到系统服务)

3 登录rds数据库查看信息(虽然是可视化操作,但是也能打开SQL窗口,打开SQL窗口执行以下sql)
show master status;                                  #记录执行结果;

4 登录从数据库执行以下语句
mysql>change master to MASTER_HOST='RDS内网地址',
                       MASTER_USER='slave',
                       MASTER_PASSWORD='slave用户的密码',
                       MASTER_LOG_FILE='在rds上show master status的File列内容',
                       MASTER_LOG_POS=1;
mysql> start slave;
mysql> show slave status;(以下这两个参数显示YES则证明成功)
Slave_IO_Running:YES
Slave_SQL_Running:YES                                

5 有什么报错的话,可以在评论里留言,我看到了都会回答的!

发布了112 篇原创文章 · 获赞 266 · 访问量 26万+

猜你喜欢

转载自blog.csdn.net/fujiakai/article/details/101058013
今日推荐