阿里雲RDS與ECS伺服器資料庫做主從
一、阿里雲RDS介紹
介紹:阿里雲RDS(資料庫)基於飛天大規模分散式計算和儲存能力,提供超高性價比的單機版例項,同時利用讀寫分離橫向擴充套件讀能力,滿足網站類的業務需求。提供穩定、高效能、安全可靠的資料庫服務,針對電商秒殺場景進行專項優化,解決熱點資料的高併發更新效能瓶頸,100倍效能提升。通過高安全模式,內建SQL注入檢測模組,實時攔截風險SQL,保護資料安全。資料強一致性保證,滿足金融級可靠性要求,搭建事前、事中、事後三層資料安全防護網,提供雙機熱備、同城、異地三中心部署架構,充分滿足金融級合規可靠性要求。高穩定性,隨時閃回任意時間點,對計算資源的彈性伸縮能力,賦予您更高的生產力,分鐘級部署遊戲分割槽資料庫;主備雙節點架構搭配高安全鏈路,實現全自動無感知容災切換,業務穩定性先人一步。連線大資料儲存、計算和視覺化引擎,MySQL作為線上關係型資料儲存服務,搭配E-MapReduce、HybridDB、DataV等,可滿足如日誌分析、資料倉庫、商業智慧、機器學習、科學模擬等業務。
提示: 雖然阿里雲介紹的不錯,但是這價格也確實是不便宜。但是針對於中小公司,RDS還是比較經濟實惠、穩定的。
二、阿里雲RDS與ECS伺服器搭建主從
1.購買伺服器
本人屬於貧窮系列,但是!! 為了試驗。我買了2個小時的RDS
關於RDS硬體根據你的需求進行設定
2.建立資料庫和使用者
我們建立的資料庫使用者建立了2個
abcdocker 用於程式目錄
mmm 使用者mysql主從連線使用者
提示: 我們abcdocker用於程式目錄,需要讀寫許可權,mmm作為主從連線使用者授權只讀即可
3.設定白名單和開通外網IP
設定白名單,因為我使用的是美國的一臺vps所以需要設定白名單。不管哪的IP我們都需要設定白名單,資料庫的連線儘量使用內網訪問,增加安全性。
因為我的伺服器和ECS不在一個網段,所以我需要開通公網IP
開通後
4.登陸資料庫
因為我們只有abcdocker有讀寫許可權,我們用abcdocker使用者建立表
我們建立一個表
語法如下:
CREATE TABLE table1(id int AUTO_INCREMENT NOT null PRIMARY KEY ,
name VARCHAR (20),
age int,
class VARCHAR (20),
create_date DATETIME )
- 1
- 2
- 3
- 4
- 5
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
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
#GTID配置
gtid_mode=on
enforce_gtid_consistency=on
log-slave-updates = 1
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
- 1
- 2
- 3
- 4
- 5
參考: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;
- 1
- 2
- 3
- 4
- 5
使用binlog進行記錄
[[email protected] ~]# 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)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
執行命令
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時看到的二進位制日誌偏移量,不能多空格
- 1
- 2
- 3
- 4
- 5
- 6
- 7
使用binglog記錄或者使用GIID記錄都可以,關於mysql主從可以參考
MySQL主從複製原理、半同步操作步驟及原理
開啟從庫
mysql> start slave;
Query OK, 0 rows affected, 1 warning (0.00 sec)
- 1
- 2
檢視從庫狀態,我們需要看到兩個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)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
檢視是否開啟成功
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)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
三、總結
使用阿里雲RDS和雲伺服器ECS做主從會出現主從資料不能及時同步,如果直接將ECS當從庫會出現資料不一致的情況,在阿里雲RDS與ECS主從環境,ECS伺服器不適合用來當從庫,只適合用於備份!
由於阿里雲RDS成本過高,可以考慮在ECS伺服器上搭建mysql叢集,但是安全性可能沒RDS高。因為是自建庫,可能會出現的問題比較多
出處:https://blog.csdn.net/abcdocker/article/details/71249809相關推薦
阿里雲RDS與ECS伺服器資料庫做主從
一、阿里雲RDS介紹介紹:阿里雲RDS(資料庫)基於飛天大規模分散式計算和儲存能力,提供超高性價比的單機版例項,同時利用讀寫分離橫向擴充套件讀能力,滿足網站類的業務需求。提供穩定、高效能、安全可靠的資料庫服務,針對電商秒殺場景進行專項優化,解決熱點資料的高併發更新效能瓶頸,100倍效能提升。通過高安全模式,內
記一次阿里雲RDS與自建資料庫同步中斷的補救過程
背景 2018年4月24日上午9點左右,小編在即將託管的伺服器上建立資料庫,並通過openvpn建立加密隧道,從而實現阿里雲RDS和本地自建資料庫之間同步。在託管伺服器上配置openvpn後,重啟openvpn客戶端時,一直獲取不到ip,後面重啟了一下openvpn服務端,本地託管伺服器獲取到了IP,之後小
阿里雲RDS與ECS自建庫搭建主從複製
前言 最近嘗試在阿里雲RDS與ECS自建庫之間搭建主從複製,主要是想用於備份資料,所以對於同步一致性要求不是很高.模擬了幾次,遇到的一些坑記錄在這裡,使用的是基於GTID的主從服務,關於GTID: MySQL GTID是在傳統的mysql主從複製的基礎之上
阿裏雲RDS與ECS自建庫搭建主從復制
lock 數據庫 rest 你在 RKE 腳本 self. res usr 前言 最近嘗試在阿裏雲RDS與ECS自建庫之間搭建主從復制,主要是想用於備份數據,所以對於同步一致性要求不是很高.模擬了幾次,遇到的一些坑記錄在這裏,使用的是基於GTID的主從服務,關於GTID:
【故障公告】阿里雲 RDS 資料庫伺服器 CPU 100% 造成全站故障
非常非常抱歉,今晚 19:34 ~ 21:16 園子所使用的阿里雲 RDS 資料庫伺服器突然出現 CPU 100% 問題,造成全站無法正常訪問,由此您帶來了很大的麻煩,請您諒解。 故障經過是這樣的。19:34 這個時間點本來是一個訪問低峰,資料庫壓力比訪問高峰時低很多,但資料庫伺服器卻異想天開、吃飽了
(轉)一次血的教訓,阿里雲rds mysql 資料庫,本地化並日志恢復已刪除的兩天資料
原文連結 參考阿里雲幫助文件 案例背景,勿刪公司線上資料庫使用者表(阿里去rds mysql),情急之下,將其恢復至最近備份(兩天前,阿里雲自動備份策略),恢復完後的第二天發現,備份與刪庫期間有些資料是重要且有用的,於是領導強烈希望能恢復期間資料,以減少公司損失,
Python 備份阿里雲RDS資料庫
#!/usr/bin/env python3 # -*- coding: utf-8 -*- # @Author: # @Date : 2018/10/11 # !/usr/bin env python3 # 你需要匯入這個模組 import os import time
Python 大資料庫備份阿里雲RDS資料庫分表匯出壓縮
思路:因為有的資料庫比較大,整體壓縮之後還是會有幾個G內容,既不方便下載也不方便恢復,然後就想到了對獨立的表分開進行備份。 1.連線阿里雲rds 2.建立資料夾,層級關係(資料庫名->日期->表名壓縮包) 3.迴圈需要備份的資料庫 4.從相應的資料庫查詢全
阿里雲RDS-MYSQL資料庫引數設定
2016.9.2 最近被資料庫要搞瘋掉了 取消myisam引擎,都換成innodb 總是主備切換,也沒有錯誤日誌 看了看引數設定,很多都不知道 這兩天有時間自己搜尋整理了下 發給大家,有需要的看看 我的伺服器應用主要是WEB網站服務 有一些不懂的地方或者不對的地方,還請大
阿里雲RDS資料恢復到本地MySQL資料庫
1.工具下載 RDS MySQL 使用開源軟體 percona-Xtrabackup 對MySQL 資料庫進行備份。需要下載該軟體,然後使用該軟體進行恢復。 下載解壓工具 rds_backup_extract (sh 檔案)
阿里雲輕量應用伺服器和雲伺服器ecs區別?輕量應用伺服器介紹
阿里雲輕量應用伺服器是阿里雲新推出的伺服器,本文介紹阿里雲輕量伺服器的價格,已經何為“輕量”?輕量與阿里雲ECS伺服器有什麼區別?輕量效能就一定不如ECS伺服器嗎?什麼是輕量應用伺服器?輕量應用伺服器是面向單機應用場景的新一代計算服務,提供精品應用一鍵部署,支援一站式的域名、
記錄一次阿里雲RDS-Mysql備份檔案,本地windows資料庫恢復過程
恢復雲資料庫MySQL的備份檔案到自建資料庫 https://help.aliyun.com/knowledge_detail/41817.html 官方給的是linux系統的恢復教程現在我們本地mysql資料庫是windows系統的mysql,以下是下載rds備份包在本地的
阿里雲RDS的mysql資料庫佔用空間超過90%的處理
阿里雲RDS資料庫最大支援2T,目前已經佔用了90%,如果進行分庫或者遷移比較麻煩,思路是找出佔用空間過大的日誌或不重要的檔案進行刪除操作 查詢所有資料庫佔用磁碟空間大小的SQL語句: show binary logs; show variables like '%log
阿里雲RDS文件概述——概述與請求方式
呼叫方式: 對RDS API介面呼叫是通過向RDS API的服務端地址傳送HTTP GET請求 並按照介面說明在請求中加入相應請求引數來完成的 根據請求的處理情況,系統會返回處理結果。 請求結構: 服務地址: RDS API的服務接入地址為:rds.aliyuncs.com 通訊協議: 支援通過HTTP
雲上的芯髒病:奇怪的阿里雲 RDS 資料庫突發 CPU 近 100% 問題
最近遇到了奇怪的阿里雲 RDS 資料庫突發 CPU 近 100% 問題,遇到了3次。 第一次是10月12日(週六)凌晨 3:24 負載極低的時候開始出現,早上發現後進行了主備切換,恢復了正常。 第二次也是出現在10月12日,就在主備切換後不久,發現後又進行了主備切換,切換回之前出問題的伺服器,恢復了正常。
阿里雲 RDS 資料庫又發 CPU 近 100% 的“芯髒病”
最近雲界發生了2件事,一件是大事,一件是小事,大事是阿里雲與微軟合作推出了開放應用模型 Open Application Model(OAM),小事是由於微軟 SQL Server 在阿里雲上水土不服(僅是我們的猜測),阿里雲 SQL Server RDS 患上了間隙性芯髒病,該病容易在夜間酣睡的時候發病
【故障公告】阿里雲 RDS 資料庫突發 CPU 近 100% 引發全站故障
今天晚上9點我們收到阿里雲的告警通知: 【阿里雲監控】華東1(杭州)-雲資料庫RDS版<cnblogsdb> [instanceId=xxx] 於21:00 發生告警, 前往診斷 CPU使用率平均值(98.25>=80 ), 持續時間4分鐘, rds_Cp
【故障公告】阿里雲 RDS SQL Server 資料庫例項 CPU 100% 引發全站故障
非常抱歉,今天 8:48 開始,我們使用的阿里雲 RDS SQL Server 資料庫例項突然出現 CPU 100% 問題,引發全站故障,由此給您帶來麻煩,請您諒解。 發現故障後立即進行主備切換,和往常一樣,第1次主備切換失敗,第2次主備切換完成後恢復正常。 上次同樣故障發生在2020年11月
阿里雲CentOS搭建SVN伺服器及許可權管理
linux(centos)下SVN伺服器如何搭建?說到SVN伺服器,想必大家都知道,可以是在LINUX下如何搭建SVN伺服器呢?那麼今天給大家分享一下linux(centos)搭建SVN伺服器的思路! 雖然在windows上搭建SVN很簡單,但是效能卻不高,
阿里雲輕量應用伺服器debian8.9用apache多埠搭建多站點
前幾天想要再搭個網站玩玩,就用阿里的伺服器,apache本地搭建站點和伺服器相差不多,然而卻踩了大坑,差點耗死在這兒。 先進入apache這個目錄,有如下資料夾: 開啟ports.conf, 新增 Listen 埠。 然後進入,sites-available 裡邊, 將000-defau