欢迎光临
我们一直在努力

阿里云RDS与ECS服务器数据库做主从 [精]

里云RDS(数据库)基于飞天大规模分布式计算和存储能力,提供超高性价比的单机版实例,同时利用读写分离横向扩展读能力,满足网站类的业务需求。提供稳定、高性能、安全可靠的数据库服务,针对电商秒杀场景进行专项优化,解决热点数据的高并发更新性能瓶颈,100倍性能提升。通过高安全模式,内置SQL注入检测模块,实时拦截风险SQL,保护数据安全。数据强一致性保证,满足金融级可靠性要求,搭建事前、事中、事后三层数据安全防护网,提供双机热备、同城、异地三中心部署架构,充分满足金融级合规可靠性要求。高稳定性,随时闪回任意时间点,对计算资源的弹性伸缩能力,赋予您更高的生产力,分钟级部署游戏分区数据库;主备双节点架构搭配高安全链路,实现全自动无感知容灾切换,业务稳定性先人一步。连接大数据存储、计算和可视化引擎,mysql作为在线关系型数据存储服务,搭配E-MapReduce、HybridDB、DataV等,可满足如日志分析、数据仓库、商业智能、机器学习、科学模拟等业务。

阿里云RDS与ECS服务器数据库做主从 [精]

mysql

一、阿里云RDS介绍

介绍:阿里云RDS(数据库)基于飞天大规模分布式计算和存储能力,提供超高性价比的单机版实例,同时利用读写分离横向扩展读能力,满足网站类的业务需求。提供稳定、高性能、安全可靠的数据库服务,针对电商秒杀场景进行专项优化,解决热点数据的高并发更新性能瓶颈,100倍性能提升。通过高安全模式,内置SQL注入检测模块,实时拦截风险SQL,保护数据安全。数据强一致性保证,满足金融级可靠性要求,搭建事前、事中、事后三层数据安全防护网,提供双机热备、同城、异地三中心部署架构,充分满足金融级合规可靠性要求。高稳定性,随时闪回任意时间点,对计算资源的弹性伸缩能力,赋予您更高的生产力,分钟级部署游戏分区数据库;主备双节点架构搭配高安全链路,实现全自动无感知容灾切换,业务稳定性先人一步。连接大数据存储、计算和可视化引擎,MySQL作为在线关系型数据存储服务,搭配E-MapReduce、HybridDB、DataV等,可满足如日志分析、数据仓库、商业智能、机器学习、科学模拟等业务。 

阿里云RDS与ECS服务器数据库做主从 [精]

提示: 虽然阿里云介绍的不错,但是这价格也确实是不便宜。但是针对于中小公司,RDS还是比较经济实惠、稳定的。


二、阿里云RDS与ECS服务器搭建主从

1.购买服务器

本人属于贫穷系列,但是!! 为了试验。我买了2个小时的RDS

阿里云RDS与ECS服务器数据库做主从 [精]

关于RDS硬件根据你的需求进行设置

阿里云RDS与ECS服务器数据库做主从 [精]

2.创建数据库和用户

阿里云RDS与ECS服务器数据库做主从 [精]

阿里云RDS与ECS服务器数据库做主从 [精]

我们创建的数据库用户创建了2个

abcdocker 用于程序目录

mmm 用户mysql主从连接用户

提示: 我们abcdocker用于程序目录,需要读写权限,mmm作为主从连接用户授权只读即可

阿里云RDS与ECS服务器数据库做主从 [精]

3.设置白名单和开通外网IP

阿里云RDS与ECS服务器数据库做主从 [精]

设置白名单,因为我使用的是美国的一台vps所以需要设置白名单。不管哪的IP我们都需要设置白名单,数据库的连接尽量使用内网访问,增加安全性。

阿里云RDS与ECS服务器数据库做主从 [精]

因为我的服务器和ECS不在一个网段,所以我需要开通公网IP

开通后

阿里云RDS与ECS服务器数据库做主从 [精]

4.登陆数据库

阿里云RDS与ECS服务器数据库做主从 [精]

因为我们只有abcdocker有读写权限,我们用abcdocker用户创建表

阿里云RDS与ECS服务器数据库做主从 [精]

我们创建一个表

阿里云RDS与ECS服务器数据库做主从 [精]

语法如下:

CREATE TABLE table1(id int AUTO_INCREMENT NOT null PRIMARY KEY , name VARCHAR (20), age int, class VARCHAR (20), create_date DATETIME ) 

5.ECS数据库设置

环境

系统版本 [root@abcdocker ~]# cat /etc/redhat-release CentOS release 6.8 (Final) 数据库版本 [root@abcdocker ~]# mysql -V mysql Ver 14.14 Distrib 5.6.35, for Linux (x86_64) using EditLine wrapper MySQL配置文件 [root@abcdocker ~]# grep '^[a-z]' /etc/my.cnf server_id=211 read_only = 1 port = 3307 replicate-wild-ignore-table = mysql.% replicate-wild-ignore-table = test.% binlog_format = ROW log-bin = mysql-bin log-bin-index = mysql-bin.index relay-log = relay-log relay_log_index = relay-log.index 

#GTID配置

gtid_mode=on enforce_gtid_consistency=on log-slave-updates = 1 sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES 参考:MySQL GTID是在传统的mysql主从复制的基础之上演化而来的产物,即通过UUID加上事务ID的方式来确保每一个事物的唯一性。这样的操作方式使得我们不再需要关心所谓的log_file和log_Pos,只是简单的告诉从库,从哪个服务器上去找主库就OK了。简化了主从的搭建以及failover的过程,同时比传统的复制更加安全可靠。由于GTID是连续没有空洞的,因此主从库出现数据冲突时,可以通过注入空事物的方式进行跳过。本文主要讲述GTID主从架构的错误处理方式 

使用GIID做主从可以执行一下参数,不需要设置binlog

change master to MASTER_HOST='rm-2ze5i3w4h0182kua0o.mysql.rds.aliyuncs.com', master_user='mmm', master_password='Abcdocker!', master_port=3306, master_auto_position=1; 

使用binlog进行记录

[root@abcdocker ~]# mysql -ummm -p -hrm-2ze5i3w4h0182kua0o.mysql.rds.aliyuncs.com #我们需要远程连接到主库,执行show master status mysql> show master status; +------------------+----------+--------------+------------------+---------------------------------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set | +------------------+----------+--------------+------------------+---------------------------------------------+ | mysql-bin.000004 | 4273212 | | | 29fe5004-315c-11e7-9a0f-6c92bf477043:1-7365 | +------------------+----------+--------------+------------------+---------------------------------------------+ 1 row in set (0.16 sec) 

执行命令

CHANGE MASTER TO MASTER_HOST='rm-2ze5i3w4h0182kua0o.mysql.rds.aliyuncs.com', #这是主库的IP(域名也可以需要做解析) MASTER_PORT=3306, #主库的端口,从库端口和主库不可以相同 MASTER_USER='mmm', #这是主库上创建用来复制的用户rep MASTER_PASSWORD='Abcdocker!' #rep的密码 MASTER_LOG_FILE='mysql-bin.000025', #这里是show master status时看到的查询二进制日志文件名称,这里不能多空格 MASTER_LOG_POS=9155; #这里是show master status时看到的二进制日志偏移量,不能多空格 

使用binglog记录或者使用GIID记录都可以,关于mysql主从可以参考

MySQL主从复制原理、半同步操作步骤及原理

开启从库

mysql> start slave; Query OK, 0 rows affected, 1 warning (0.00 sec) 

查看从库状态,我们需要看到两个yes

mysql> show slave status\G *************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: rm-2ze5i3w4h0182kua0o.mysql.rds.aliyuncs.com Master_User: mmm Master_Port: 3306 Connect_Retry: 60 Master_Log_File: mysql-bin.000004 Read_Master_Log_Pos: 4276127 Relay_Log_File: relay-log.000006 Relay_Log_Pos: 33642 Relay_Master_Log_File: mysql-bin.000004 Slave_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: mysql.%,test.% Last_Errno: 0 Last_Error: Skip_Counter: 0 Exec_Master_Log_Pos: 4276127 Relay_Log_Space: 33809 Until_Condition: None Until_Log_File: Until_Log_Pos: 0 Master_SSL_Allowed: No Master_SSL_CA_File: Master_SSL_CA_Path: Master_SSL_Cert: Master_SSL_Cipher: Master_SSL_Key: Seconds_Behind_Master: 0 Master_SSL_Verify_Server_Cert: No Last_IO_Errno: 0 Last_IO_Error: Last_SQL_Errno: 0 Last_SQL_Error: Replicate_Ignore_Server_Ids: Master_Server_Id: 3482796583 Master_UUID: 29fe5004-315c-11e7-9a0f-6c92bf477043 Master_Info_File: /usr/local/mysql/data/master.info SQL_Delay: 0 SQL_Remaining_Delay: NULL Slave_SQL_Running_State: Slave has read all relay log; waiting for the slave I/O thread to update it Master_Retry_Count: 86400 Master_Bind: Last_IO_Error_Timestamp: Last_SQL_Error_Timestamp: Master_SSL_Crl: Master_SSL_Crlpath: Retrieved_Gtid_Set: 29fe5004-315c-11e7-9a0f-6c92bf477043:1-7376 Executed_Gtid_Set: 29fe5004-315c-11e7-9a0f-6c92bf477043:1-7376 Auto_Position: 1 1 row in set (0.00 sec) 

查看是否开启成功

mysql> use abc;show tables;desc table1; Database changed +---------------+ | Tables_in_abc | +---------------+ | table1 | +---------------+ 1 row in set (0.00 sec) +-------------+-------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------------+-------------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | name | varchar(20) | YES | | NULL | | | age | int(11) | YES | | NULL | | | class | varchar(20) | YES | | NULL | | | create_date | datetime | YES | | NULL | | +-------------+-------------+------+-----+---------+----------------+ 5 rows in set (0.00 sec) 

三、总结

使用阿里云RDS和云服务器ECS做主从会出现主从数据不能及时同步,如果直接将ECS当从库会出现数据不一致的情况,在阿里云RDS与ECS主从环境,ECS服务器不适合用来当从库,只适合用于备份!

由于阿里云RDS成本过高,可以考虑在ECS服务器上搭建mysql集群,但是安全性可能没RDS高。因为是自建库,可能会出现的问题比较多

  • 海报
海报图正在生成中...
赞(0) 打赏
声明:
1、本博客不从事任何主机及服务器租赁业务,不参与任何交易,也绝非中介。博客内容仅记录博主个人感兴趣的服务器测评结果及一些服务器相关的优惠活动,信息均摘自网络或来自服务商主动提供;所以对本博客提及的内容不作直接、间接、法定、约定的保证,博客内容也不具备任何参考价值及引导作用,访问者需自行甄别。
2、访问本博客请务必遵守有关互联网的相关法律、规定与规则;不能利用本博客所提及的内容从事任何违法、违规操作;否则造成的一切后果由访问者自行承担。
3、未成年人及不能独立承担法律责任的个人及群体请勿访问本博客。
4、一旦您访问本博客,即表示您已经知晓并接受了以上声明通告。
文章名称:《阿里云RDS与ECS服务器数据库做主从 [精]》
文章链接:https://www.456zj.com/3949.html
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址