RDS mysql 与ECS自建mysql做主从备份
由于公司要组建一个数据中心,简而言之就是把各个地方的数据都同步到一个地方,做BI建模和数据分析。
一般来说这种需求是由hadoop来实现的,但由于预算不够。。所以,来个low点的办法吧
以下主要是讲rds与mysql主从的搭建
通常来讲,mysql主从分为binlog主从,gtid模式的主从,我这篇主要是讲GTID的主从部署模式(当然里面也是需要binlog的)
1、在ECS上搭建mysql(这块不需要说多少了吧,配置好第三方yum源,直接yum installvim /etc/my.cnf
[client]
mysqladmin=/usr/bin/mysqladmin
port = 13307 #定义端口
default-character-set=utf8 #定义数据库字符集 socket = /data/var/run/mysqld/mysqld13307.sock #定义sock文件,如果是多实例,可以直接mysql -S 指定sock文件链接数据库 [mysqld]
port = 13307 #端口
skip-external-locking #下面的配置我也不是很懂,大体都是优化配置的地方,可以直接复制我的配置文件
key_buffer_size = 256M
max_allowed_packet = 200M
table_open_cache = 40000
table_definition_cache = 40000
sort_buffer_size = 20M
net_buffer_length = 102400
read_buffer_size = 20M
read_rnd_buffer_size = 32M
bulk_insert_buffer_size = 50M
myisam_sort_buffer_size = 8M
max_connections = 2500
max_tmp_tables = 3200
lower_case_table_names = 1
thread_cache_size=64
query_cache_size=200M
query_cache_limit = 10M
join_buffer_size=20M
character-set-server=utf8
max_heap_table_size = 64M
thread_cache_size = 20
thread_concurrency = 32
transaction_isolation = READ-COMMITTED
back_log = 600
skip-name-resolve
open_files_limit = 250000
max_heap_table_size = 512G
tmp_table_size = 1G
server-id = 4 #注意,这里的serverid 不能是1,因为默认master节点的serverid是1,因此后面的id,就是不能为1的任何数字 gtid_mode=ON #gtid模式要开启
log_slave_updates=true #要开启
enforce-gtid-consistency=true #必须写
binlog_format=row #一般来说格式都是row
sync-master-info=1 #写1就可以 innodb_buffer_pool_size = 3G
innodb_log_file_size=1G
innodb_flush_log_at_trx_commit=2
innodb_write_io_threads = 16
innodb_file_io_threads=4
innodb_read_io_threads = 16
innodb_log_buffer_size = 20M
innodb_max_dirty_pages_pct = 80
innodb_lock_wait_timeout = 500
innodb_flush_method = O_DIRECT
innodb_io_capacity=2000
innodb_io_capacity_max=6000
innodb_lru_scan_depth=2000
innodb_thread_concurrency = 0
innodb_additional_mem_pool_size=16M
innodb_autoinc_lock_mode = 2
innodb_file_per_table = 1
innodb_buffer_pool_instances=2
innodb_open_files = 2048
wait_timeout=28800
interactive_timeout= 600 #从下面开始配置就不需要怎么解释了吧,会运维的都明白,和上面也有一些重复的地方
#basedir = /usr
#password = your_password
# Here follows entries for some specific programs
basedir = /usr
datadir = /data/mysql_data13307
log-error = /data/logs/mysql13307_error.log
pid-file = /data/var/run/mysqld/mysqld13307.pid
socket = /data/var/run/mysqld/mysqld13307.sock
log-bin = /data/logs/binlog13307/binlog
binlog_cache_size = 512M
binlog_format = MIXED
max_binlog_cache_size = 512M
max_binlog_size = 200M
relay-log-index = /data/logs/relaylog13307/relaylog
relay-log-info-file = /data/logs/relaylog13307/relaylog
relay-log = /data/logs/relaylog13307/relaylog
expire_logs_days = 7
innodb_flush_log_at_trx_commit=0
sync_binlog=0
slave_skip_errors = 1062,1032
#下面是指定哪些数据库需要被同步,哪些不需要被同步,一般来讲,只有数据的库才需要被同步,用户信息一般不同步。
# The MySQL server
replicate-do-db = aaa
replicate-do-db = bbbb
replicate-do-db = ccccc
replicate-do-db = 12ead
replicate-do-db = naiuqn
replicate-ignore-db = mysql
replicate-ignore-db = information_schema
replicate-ignore-db = performance_schema #slow_query_log = 1
#slow_query_log_file=/data/mysql/logs/slowquery.log
#long_query_time=2
#log_queries_not_using_indexes [mysqldump]
quick
max_allowed_packet = 16M
[mysql]
no-auto-rehash [myisamchk]
key_buffer_size = 20M
sort_buffer_size = 20M
read_buffer = 2M
write_buffer = 2M [mysqlhotcopy]
interactive-timeout
2、上面的步骤配置完了以后
将RDS的白名单,设置好,允许ECS远程连接RDS,然后对各个表的数据进行dump
一般来讲,高权限用户只能逐个的mysqldump各个数据库
mysqldump -h rds内网地址 -u用户 -p --database 数据库名 >> /tmp/数据库名1.sql
mysqldump -h rds内网地址 -u用户 -p --database 数据库名 >> /tmp/数据库名2.sql
mysqldump -h rds内网地址 -u用户 -p --database 数据库名 >> /tmp/数据库名3.sql
这一步主要操作是将现阶段的数据库都备份出来,然后执行下面的操作。
mysql> show master status\G #请注意,下面的信息全都要留好,因为后面会在自建数据库中需要指定这些数据
*************************** 1. row ***************************
File: mysql-bin.001461
Position: 15351962
Binlog_Do_DB:
Binlog_Ignore_DB:
Executed_Gtid_Set: 3fb72bdd-02d5-11e6-a554-6c92bf2c0469:1-1751591,
4e5c900f-02d5-11e6-a555-ecf4bbded8cc:1-54349982,
ac5fa92d-5b22-11e8-afcd-7cd30abead5e:1-135523638,
d3615618-7f50-11e6-9110-d89d672b73e0:1-4
1 row in set (0.01 sec)
在主库上我们需要操作的就这么多,下面我们来配置从库
3、在从库中,将上面的各个数据库导入
#先查看dump出来的sql里面有没有create语句,如果有的话,忽略这些create语句。
create database 数据库1;
create database 数据库2;
create database 数据库3; use 数据库1;
source /tmp/数据库1.sql
use 数据库2;
source /tmp/数据库2.sql
use 数据库3;
source /tmp/数据库3.sql #source语句执行不报错,就算导入成功了。
然后我们进行chang master 语句
change master to MASTER_HOST='RDS内网地址',
MASTER_USER='slave',
MASTER_PASSWORD='slave用户的密码',
MASTER_LOG_FILE='在rds上show master status的File列内容',
MASTER_LOG_POS=15351962; #这个log pos是从上面show master status中获取
然后直接执行以下命令
1.start slave;#注意,如果之前进行过changemaster 这块start slave的时候就会报如下错误。
ERROR 1776 (HY000): Parameters MASTER_LOG_FILE, MASTER_LOG_POS, RELAY_LOG_FILE and RELAY_LOG_POS cannot be set when MASTER_AUTO_POSITION is active.
需要执行以下语句(如果不报错,请忽略这一步)
change master to master_auto_position=0;
2.show slave status;
#当看到这两项为YES的时候,证明主从复制已经成功,自己进行测试即可
Slave_IO_Running:YES Slave_SQL_Running:YES
RDS mysql 与ECS自建mysql做主从备份的更多相关文章
- 阿里云RDS同步到本地自建mysql数据库从库
RDS mysql版本为5.6.29 x86_64 1.下载数据备份.binlog备份 内网中转?数据量不大,直接下载 下载数据备份(外网下载链接) wget -c "https://rds ...
- 实测:云RDS MySQL性能是自建的1.6倍
1. 摘要 基于之前写的「云厂商 RDS MySQL 怎么选」的文章,为了进一步了解各云厂商在RDS MySQL数据库性能上的差异,本文将对自建MySQL.阿里云.腾讯云.华为云和AWS 的 RDS ...
- 有关RDS上只读实例延时分析-同适用于自建MySQL主从延时分析判断
个人不是很喜欢在技术上跟人互喷,尤其是不在同一个岗位上的人.一方面本人的性格如此,另一方面,我自身的口水也确实是不行,人生经历了第一次的双11洗礼,在大促的环境下,总算知道了有些东西是否应该规避,这次 ...
- 如何将阿里云mysql RDS备份文件恢复到自建数据库
参考地址:https://help.aliyun.com/knowledge_detail/41817.html PS:目前恢复只支持 Linux 下进行.Linux下恢复的数据文件,无论 Windo ...
- 阿里云上安装mysql步骤/ 阿里云ECS搭建Java+mysql+tomcat环境
使用阿里云ECS挺长一段时间了.这两天碰巧朋友小白让我一步一步教他在ECS上搭建Java+mysql+tomcat环境,所以把在这里把步骤在这简单整理了一下,以便需要的人查阅. 我购买的阿里云服务器系 ...
- 阿里云RDS数据库备份文件恢复到本地mysql数据库
一.安装mysql和xtrabackup (1)安装mysql 因为RDS是5.6版本,所以我们本地的mysql数据库要与RDS版本对应. rpm -ivh http://repo.mysql.co ...
- 一次作业过程及其问题的记录:mysql建立数据库、建表、查询和插入等
前言 这次的作业需要我建立一个小的数据库. 这次作业我使用了mysql,进行了建库.建表.查询.插入等操作. 以下是对本次作业相关的mysql操作过程及过程中出现的问题的记录. 正文 作业中对数据库的 ...
- 容器化|自建 MySQL 集群迁移到 Kubernetes
背景 如果你有自建的 MySQL 集群,并且已经感受到了云原生的春风拂面,想将数据迁移到 Kubernetes 上,那么这篇文章可以给你一些思路. 文中将自建 MySQL 集群数据,在线迁移到 Kub ...
- mysql索引学习----2----创建索引、修改索引、删除索引的命令语句
查看表中已经存在 index:show index from table_name; 创建和删除索引索引的创建可以在CREATE TABLE语句中进行,也可以单独用CREATE INDEX或ALTER ...
随机推荐
- JAVA- 切换默认的Java
删除自带的java yum remove java java -version发现还有java,因为电脑上安装了多个版本的java,这时我们可以用 yum groupremove java 通过组的这 ...
- java反射(二)
java的很多框架都是基于反射的.
- 双系统重装win7和ubuntu修复win7引导方法介绍(来源百度经验)
很多朋友喜欢为电脑安装win7和ubuntu双系统,当我们重装双系统时,可能会出现win7引导不见的情况,接下来就告诉大家双系统重装win7和ubuntu修复win7引导的方法. 1.win7和ubu ...
- Java钉钉开发_00_资源帖
1.源码 本系列教程的源码已上传至GitHub: https://github.com/shirayner/DingTalk_Demo 2.官方 官方源码:https://github.com/op ...
- 数据库连接池(connection pool)
1.JDBC数据库连接池的必要性 在使用开发基于数据库的web程序时,传统的模式基本是按以下步骤: – 在主程序(如servlet.beans)中建立数据库连接. – 进行sql ...
- 机器学习 Generative Learning Algorithm (A)
引言 前面几讲,我们主要探讨了如何对 p(y|x;θ) (即y 相对于x的条件概率)进行建模的几种学习算法,比如,logistic regression 对 p(y|x;θ) 进行建模的假设函数为 h ...
- NodeJS中 Path 模块
var path = require('path'); // 当发现有多个连续的斜杠时,会替换成一个: 当路径末尾包含斜杠时,会保留: // 在 Windows 系统会使用反斜杠. var p = p ...
- uimsbf和 bslbf的含义
bslbf代表位串,即“Bit string, left bit first ”, uimsbf代表无符号整数,即”unsinged integer, most significant bit fir ...
- 用VBA计算两个日期之间的工作日(去掉周末两天)
最近公司HR和Finance想算员工的工作天数,想让我帮忙写些VBA,自己从网上找了下代码,自己再改改,以下来自网络. 计算两个日期之间的工作日,用VBA,因量大,最好用数组做 Sub kk() Di ...
- 洛谷【P3908】异或之和
二进制前置技能:https://www.cnblogs.com/AKMer/p/9698694.html 题目传送门:https://www.luogu.org/problemnew/show/P39 ...