热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

ec2mysql_AWSEC2MySQL迁移到RDS案例

AmazonRelationalDatabaseService(AmazonRDS)是一种Web服务,可让用户更轻松地在云中设置、操作和扩展关系数据库。它可以为行业标

Amazon Relational Database Service (Amazon RDS) 是一种Web 服务,可让用户更轻松地在云中设置、操作和扩展关系数据库。它可以为行业标准关系数据库提供经济高效且可以调节大小的容量,并管理常见

数据库管理任务。

现有的环境如下,计划将MySQL主库billingdb迁移到RDS上,减少运维成本.

b5f30280c338ae96eb39553382f94c02.png

计划迁移之后的环境如下

60c5860a9fb7393fb22062da9a65e6a1.png

现在开始迁移过程

1. 在当前的RDS slave上记录需要过滤的表(RDS有自己的系统表,当RDS slave变成master后,这些表不需要被同步到EC2上的slave上)

mysql>show slave status\G*************************** 1. row ***************************Slave_IO_State: Waitingfor master tosend event

Master_Host:10.188.102.92Master_User: repl

Master_Port:3306Connect_Retry:60Master_Log_File: mysql-bin.000861Read_Master_Log_Pos:18626649Relay_Log_File: relaylog.005026Relay_Log_Pos:685Relay_Master_Log_File: mysql-bin.000861Slave_IO_Running: Yes

Slave_SQL_Running: Yes

Replicate_Do_DB:

Replicate_Ignore_DB:

Replicate_Do_Table:

Replicate_Ignore_Table: mysql.rds_sysinfo,innodb_memcache.cache_policies,mysql.rds_replication_status,innodb_memcache.config_options,mysql.rds_history,mysql.plugin,mysql.rds_monitor

2. 在RDS slave上创建复制及相关账户(创建RDS作为备库的时候,并没有导入系统表,所以不会有主库上的数据库用户)

mysql> grant replication slave on *.* to 'repl'@'%' identified by 'repl';

mysql> flush privileges;

3. 修改RDS slave上二进制日志保留时间(默认情况下,RDS并不会保留二进制日志,这样RDS切为master后就没有二进制日志,也就谈不上将EC2转换为slave连上RDS了)

mysql>call mysql.rds_show_configuration;

mysql> call mysql.rds_set_configuration('binlog retention hours', 72);

4.  记录当前master的session连接信息

/usr/local/mysql/bin/mysql -u root -p -e "show processlist"|awk '{print $3}'|grep ":"|awk '{print substr($0,0,index($0,":")-1) }'|sort|uniq -c1 10.188.100.36

1 10.188.104.196

1 ec2-backoffice-01.mypna.com20 ec2-billingcommerce-01.mypna.com20 ec2-billingcommerce-02.mypna.com10 ec2-billingen-01.mypna.com10 ec2-billingen-02.mypna.com11 ec2-billingengines-01.mypna.com10 ec2-billingentest-01.mypna.com10 ec2-billingentest-02.mypna.com25 ec2-billingiden-01.mypna.com25 ec2-billingiden-02.mypna.com20 ec2-billingoffer-01.mypna.com20 ec2-billingoffer-02.mypna.com20 ec2-billingoffer-03.mypna.com32 ec2-billingui-01.mypna.com31 ec2-billingui-02.mypna.com1 ec2-cliwebreport-01.mypna.com1 ec2-dbmon-01.mypna.com

5. 准备第4步主机名到IP地址的解析(RDS并不能解析出客户端主机名,迁移到RDS后,检查session连接的时候会方便很多)

IP address

Hostname

10.188.100.36

ec2-billingdb-04

10.188.104.196

ec2-csr-tracking-01

10.188.3.22

ec2-backoffice-01.mypna.com

10.188.1.102

ec2-billingcommerce-01.mypna.com

10.188.1.105

ec2-billingcommerce-02.mypna.com

10.188.1.252

ec2-billingen-01.mypna.com

10.188.1.59

ec2-billingen-02.mypna.com

10.188.1.189

ec2-billingengines-01.mypna.com

10.188.1.246

ec2-billingentest-01.mypna.com

10.188.1.232

ec2-billingentest-02.mypna.com

10.188.1.15

ec2-billingiden-01.mypna.com

10.188.1.16

ec2-billingiden-02.mypna.com

10.188.101.54

ec2-billingoffer-01.mypna.com

10.188.101.128

ec2-billingoffer-02.mypna.com

10.188.101.63

ec2-billingoffer-03.mypna.com

10.188.1.235

ec2-billingui-01.mypna.com

10.188.1.236

ec2-billingui-02.mypna.com

10.188.102.92

ec2-cliwebreport-01.mypna.com

10.188.100.65

ec2-dbmon-01.mypna.com

10.188.102.92

ec2-cliwebreport-01.mypna.com

6. 将主库master重启到只读状态,并记录当前的master日志位置信息(这样做是为了让所有的slave都达到一致性状态)

/etc/init.d/mysql restart --read-only

mysql>show master status\G*************************** 1. row ***************************

File: mysql-bin.000865Position:120Binlog_Do_DB:

Binlog_Ignore_DB:

Executed_Gtid_Set:1 row in set (0.00 sec)

7. 稍等片刻,检查所有EC2 slave,确保所有的EC2的slave已经赶上master的二进制日志位置

mysql>show slave status\G*************************** 1. row ***************************Slave_IO_State: Waitingfor master tosend event

Master_Host:10.188.100.73Master_User: repl

Master_Port:3306Connect_Retry:60Master_Log_File: mysql-bin.000865 #看该行Read_Master_Log_Pos:120 #看该行Relay_Log_File: ec2-billingdb-04-relay-bin.000047Relay_Log_Pos:279Relay_Master_Log_File: mysql-bin.000865Slave_IO_Running: Yes

Slave_SQL_Running: Yes

Replicate_Do_DB:

Replicate_Ignore_DB:

Replicate_Do_Table:

Replicate_Ignore_Table:

Replicate_Wild_Do_Table:

Replicate_Wild_Ignore_Table:

Last_Errno:0Last_Error:

Skip_Counter:0Exec_Master_Log_Pos:120 #看该行Relay_Log_Space:618Until_Condition: None

Until_Log_File:

Until_Log_Pos:0Master_SSL_Allowed: No

Master_SSL_CA_File:

Master_SSL_CA_Path:

Master_SSL_Cert:

Master_SSL_Cipher:

Master_SSL_Key:

Seconds_Behind_Master:0 #看该行

8. EC2的机器ec2-billingdb-06是RDS的master,所以RDS的二进制日志要看是否追上ec2-billingdb-06

在ec2-billingdb-06查看

mysql>show master status\G*************************** 1. row ***************************

File: mysql-bin.000861Position:18626649Binlog_Do_DB:

Binlog_Ignore_DB:

Executed_Gtid_Set:1 row in set (0.00 sec)

在RDS上查看

mysql>show slave status\G*************************** 1. row ***************************Slave_IO_State: Waitingfor master tosend event

Master_Host:10.188.102.92Master_User: repl

Master_Port:3306Connect_Retry:60Master_Log_File: mysql-bin.000861 #这里和上一步骤06机器的二进制日志一致Read_Master_Log_Pos:18626649 #这里和上一步骤06的机器的二进制日志一致Relay_Log_File: relaylog.005026Relay_Log_Pos:685Relay_Master_Log_File: mysql-bin.000861Slave_IO_Running: Yes

Slave_SQL_Running: Yes

Replicate_Do_DB:

Replicate_Ignore_DB:

Replicate_Do_Table:

Replicate_Ignore_Table: mysql.rds_sysinfo,innodb_memcache.cache_policies,mysql.rds_replication_status,innodb_memcache.config_options,mysql.rds_history,mysql.plugin,mysql.rds_monitor

Replicate_Wild_Do_Table:

Replicate_Wild_Ignore_Table:

Last_Errno:0Last_Error:

Skip_Counter:0Exec_Master_Log_Pos:18626649 #这里和上一步骤06机器的二进制日志一致Relay_Log_Space:79732Until_Condition: None

Until_Log_File:

Until_Log_Pos:0Master_SSL_Allowed: No

Master_SSL_CA_File:

Master_SSL_CA_Path:

Master_SSL_Cert:

Master_SSL_Cipher:

Master_SSL_Key:

Seconds_Behind_Master:0

8. 将master主库数据库关机

/etc/init.d/mysql stop

9. 记录RDS slave的二进制日志信息

mysql>show master status;*************************** 1. row ***************************

File: mysql-bin-changelog.007492Position:120Binlog_Do_DB:

Binlog_Ignore_DB:

Executed_Gtid_Set:1 row in set (0.00 sec)

10. 清除RDS的slave信息,使其作为独立的主库运行

mysql>CALL mysql.rds_stop_replication;

mysql>CALL mysql.rds_reset_external_master;

mysql>show slave status\G;

mysql>show master status\G;File: mysql-bin-changelog.007492Position:1025

11. 将步骤1中需要过滤的表添加到原master的配置文件/etc/my.cnf里

replicate-ignore-table=mysql.rds_sysinfo

replicate-ignore-table=innodb_memcache.cache_policies

replicate-ignore-table=mysql.rds_replication_status

replicate-ignore-table=innodb_memcache.config_options

replicate-ignore-table=mysql.rds_history

replicate-ignore-table=mysql.plugin

replicate-ignore-table=mysql.rds_monitor

replicate-ignore-table=mysql.rds_heartbeat2

12. 将原master以只读的方式启动(确保应用不会连接进来写脏数据)

/etc/init.d/mysql start --read-only

13. 将原master作为slave连接到RDS

mysql> change master tomaster_host='RDS endpoint name',

master_user='repl',

master_password='repl',

master_port=3306,

master_log_file='mysql-bin-changelog.xxxxxx',

master_log_pos=xxx;

mysql>start slave;

mysql> show slave status\G;

14, 将应用解析到RDS上,并检查RDS的session信息,确保应用可以正常接入



推荐阅读
  • 如何利用 Myflash 解析 binlog ?
    本文主要介绍了对Myflash的测试,从准备测试环境到利用Myflash解析binl ... [详细]
  • 基于PgpoolII的PostgreSQL集群安装与配置教程
    本文介绍了基于PgpoolII的PostgreSQL集群的安装与配置教程。Pgpool-II是一个位于PostgreSQL服务器和PostgreSQL数据库客户端之间的中间件,提供了连接池、复制、负载均衡、缓存、看门狗、限制链接等功能,可以用于搭建高可用的PostgreSQL集群。文章详细介绍了通过yum安装Pgpool-II的步骤,并提供了相关的官方参考地址。 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • Firefox火狐浏览器关闭到http://detectportal.firefox.com的流量问题解决办法
    本文介绍了使用Firefox火狐浏览器时出现关闭到http://detectportal.firefox.com的流量问题,并提供了解决办法。问题的本质是因为火狐默认开启了Captive portal技术,当连接需要认证的WiFi时,火狐会跳出认证界面。通过修改about:config中的network.captive-portal-service.en的值为false,可以解决该问题。 ... [详细]
  • 本文介绍了Oracle数据库中tnsnames.ora文件的作用和配置方法。tnsnames.ora文件在数据库启动过程中会被读取,用于解析LOCAL_LISTENER,并且与侦听无关。文章还提供了配置LOCAL_LISTENER和1522端口的示例,并展示了listener.ora文件的内容。 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • 关于我们EMQ是一家全球领先的开源物联网基础设施软件供应商,服务新产业周期的IoT&5G、边缘计算与云计算市场,交付全球领先的开源物联网消息服务器和流处理数据 ... [详细]
  • 本文介绍了通过ABAP开发往外网发邮件的需求,并提供了配置和代码整理的资料。其中包括了配置SAP邮件服务器的步骤和ABAP写发送邮件代码的过程。通过RZ10配置参数和icm/server_port_1的设定,可以实现向Sap User和外部邮件发送邮件的功能。希望对需要的开发人员有帮助。摘要长度:184字。 ... [详细]
  • flowable工作流 流程变量_信也科技工作流平台的技术实践
    1背景随着公司业务发展及内部业务流程诉求的增长,目前信息化系统不能够很好满足期望,主要体现如下:目前OA流程引擎无法满足企业特定业务流程需求,且移动端体 ... [详细]
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
  • 本文介绍了将mysql从5.6.15升级到5.7.15的详细步骤,包括关闭访问、备份旧库、备份权限、配置文件备份、关闭旧数据库、安装二进制、替换配置文件以及启动新数据库等操作。 ... [详细]
  • Imtryingtofigureoutawaytogeneratetorrentfilesfromabucket,usingtheAWSSDKforGo.我正 ... [详细]
  • 本文介绍了MVP架构模式及其在国庆技术博客中的应用。MVP架构模式是一种演变自MVC架构的新模式,其中View和Model之间的通信通过Presenter进行。相比MVC架构,MVP架构将交互逻辑放在Presenter内部,而View直接从Model中读取数据而不是通过Controller。本文还探讨了MVP架构在国庆技术博客中的具体应用。 ... [详细]
  • 本文介绍了5个基本Linux命令行工具的现代化替代品,包括du、top和ncdu。这些替代品在功能上进行了改进,提高了可用性,并且适用于现代化系统。其中,ncdu是du的替代品,它提供了与du类似的结果,但在一个基于curses的交互式界面中,重点关注占用磁盘空间较多的目录。 ... [详细]
  • php缓存ri,浅析ThinkPHP缓存之快速缓存(F方法)和动态缓存(S方法)(日常整理)
    thinkPHP的F方法只能用于缓存简单数据类型,不支持有效期和缓存对象。S()缓存方法支持有效期,又称动态缓存方法。本文是小编日常整理有关thinkp ... [详细]
author-avatar
骚动的疯子
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有