Table of Contents

上一個主題

服務列表

下一個主題

獨享MySQL

本頁

共享 MySQL?

服務概述?

共享 MySQL 服務是新浪云基于 MySQL-5.6 開發的一個共享數據庫服務,您僅需幾秒鐘即可獲得一個包括主從節點、高可用服務、自動備份、在線擴容以及監控等各種管理功能的 MySQL 服務。

不同于 獨享MySQL ,創建一個共享 MySQL 數據庫并不會創建新的 mysql-server(mysqld) 實例,而只是在已有的 mysql-server 集群里選擇一個實例,然后在這個實例上調用 CREATE DATABASE app_$APPNAME 創建一個新的 database 供您使用。

主從架構

共享 MySQL 數據庫采用主從架構,當數據庫發生故障或延遲時,系統會在秒級內自動切換,保證服務穩定可靠。

MySQL 從庫有時候會因為網絡抖動或者用戶 SQL 語句不夠優化,導致從庫數據同步會有些微延時(3-10 秒)。如果您有對數據實時性要求比較高的查詢,建議在主庫上進行操作。

性能

共享 MySQL 數據庫可以支持最高百萬級的數據庫訪問,對于數據庫性能要求更高的應用建議使用 獨享MySQL

MySQL 存儲引擎

共享 MySQL 數據庫服務支持 MyISAM 和 InnoDB 引擎,目前 InnoDb 引擎僅對企業版開放,詳見 企業版介紹

安全和隔離

共享 MySQL 數據庫服務通過 RDC(我們為共享數據庫服務開發的高性能 MySQL 代理)和 MySQL 本身的認證機制來實現數據庫和數據庫之間的隔離。所有的數據庫連接會首先連接 RDC,在 RDC 認證通過之后,由 RDC 將連接代理給實際的后端數據庫。

RDC 的功能主要如下:

  • 通過其強隔絕性為數據庫提供更高的安全性,保障您的數據安全。
  • 通過預判用戶執行的 SQL 語句,提前攔截可能損傷系統的 SQL 語句。

RDC 會對所有的 SQL 語句執行以下預判,如果超過了其限制,RDC 會直接攔截這個 SQL 查詢,返回查詢錯誤,您可以根據 MySQL 錯誤碼判斷該請求是否是被 RDC 攔截以及攔截的原因。

預判條件 相關錯誤信息 限額
單表的最大行數 Table has too many rows 10,000,000 行
庫的最大表數量 Database has too many tables 512 個
不支持的存儲引擎類型 Not support table type memory, temporary
不支持的內置函數 Not support function sleep, benchmark
最大外排序的行數 Filesort on too many rows 100,000 行
最大無索引的操作行數 Select on too many rows without index 300,000 行
查詢的最大操作行數 Select on too many rows 1,000,000 行
更新的最大操作行數 Update on too many rows 1,000,000 行
刪除的最大操作行數 Delete on too many rows 1,000,000 行
創建索引時允許的表的最大行數 Create index on big table 500,000 行
修改表結構時允許的表的最大行數 Alter table on big table 500,000 行
警報閾值百分比 80%
表主鍵及聚簇索引獎勵系數 1024 倍

RDC 的預判和攔截是針對 Web 應用的使用場景來優化的,如果您的數據庫表結構、索引、SQL 語句等合理的話是不會觸發這些攔截的,相反,如果出現這些攔截,您就需要根據對應的錯誤碼以及其優化建議對你的數據庫或者 SQL 語句去做相應的優化。

以下是被 RDC 攔截返回的錯誤碼說明以及建議:

錯誤碼 錯誤信息 說明 建議
13000 Not support multi statements 不支持一個字符串多條 SQL 語句
13001 Select on too many rows 查詢的表記錄超過了限制 [1] 優化 SQL 語句,減少掃描行
13002 Update on too many rows 更新的表記錄超過了限制 [1] 優化 SQL 語句,減少掃描行
13003 Delete on too many rows 刪除的表記錄超過了限制 [1] 減少 SQL 語句,減少掃描行
13004 Create index on big table 在一個過大的表上創建索引 使用新浪云 DefferedJob 離線任務隊列執行
13005 Alter table on big table 在一個過大的表上改變表結構 使用新浪云 DefferedJob 離線任務隊列執行
13006 Operations take too much time cost 超過 SQL 并發執行時間和 優化 SQL 語句,或者購買更大的并發支持
13007 Filesort on too many rows SQL 導致高時間復雜度的外排序 優化 SQL 語句
13008 Table has too many rows 單表行數超過規定上限 分表以降低表內的記錄數
13009 Database has too many tables 用戶當前表數目已達到規定上限 降低表的數量(可以通過 MySQL 的跨應用授權使用多庫)
13010 Not support table type 試圖創建不支持的表類型 了解支持的表類型
13011 Not support table optimization 試圖執行 optimize table 語句 去掉該語句
13012 Not support function 試圖執行禁用函數 不執行該函數
13013 Scanned too many databases when querying INFORMATION_SCHEMA 查詢 INFORMATION_SCHEMA 時導致過多的跨庫掃描 查詢時 INFORMATION_SCHEMA 時顯式指明庫和表
13014 Too complicated sql case uncacheable 過于復雜的語句導致不可被 cache 降低語句復雜度
13016 Not support show databases 不支持 show databases 不要調用 show databases
13017 Select on too many rows without index 查詢時過于復雜且不帶索引 請使用索引查詢
13018 Impossible where that may caused by sql injection 出現永遠不可能的條件語句 有可能是被 SQL 注入導致 檢查該語句是否有安全隱患
13019 Invalid operate information_schema 對 information_schema 操作不當 避免對 information_schema 的操作
13044 Backends connection error 連接時出現未知錯誤 稍后重試,連續失敗時,請向官方反饋
13045 Backends connection timeout 連接時超時 稍后重試,連續失敗時,請向官方反饋
13046 No available backends 沒有可用的后端 向官方反饋
13047 Be banned (maybe out of quota) 因為慢查詢過多導致被禁用 優化 SQL 語句
[1](1, 2, 3) 掃描行數過多,這里的考慮因素有表結構、表行數、帶沒帶索引、有沒有 limit、有沒有 join 等

共享 MySQL 服務對用戶開放了以下權限:

select, insert, update, delete, create table, alter table, drop table, index

新建?

在控制臺管理頁面導航中點擊『數據庫與緩存/共享 MySQL』進入創建頁面。選擇你要創建的數據庫類型開始創建。

../../_images/rdc-create.png

導入、導出?

導入

  1. 上傳數據庫文件到 Storage 中。
  2. 在控制臺管理頁面導航中點擊『數據庫與緩存/共享 MySQL/導入導出』進入異步任務創建頁面,添加新的導入任務。
  3. 導入成功后,可以在管理面板收到任務執行成功通知。

導出

  1. 在控制臺管理頁面導航中點擊『數據庫與緩存/共享 MySQL/導入導出』進入異步任務創建頁面,添加新的導出任務。
  2. 導出成功后,可以在管理頁面收到任務執行成功通知。您可以在通知提供的鏈接中下載導出的數據庫文件。

注解

  • 導入導出任務不一定立刻執行,但一般會在第二天凌晨 1 點~7 點間完成。導入壓縮文件時,請保證解壓后只有一個解壓文件,且沒有文件夾,否則任務會執行失敗。
  • 對于 4M 以內的小數據,您可以直接通過 PhpMyAdmin 在線同步的導入導出。
  • 導入導出任務也可以通過 API 去添加,相關的 API 見: PHP , Python

備份、恢復?

共享數據庫服務會每天定時自動幫您備份數據庫,您可以在控制臺管理頁面導航中點擊[數據庫服務 > MySQL > 共享 MySQL 服務 > 數據恢復]進入管理面板中恢復數據庫到最近 14 天內任意時間點。

../../_images/rdc-recovery.png

跨應用授權?

您可以在管理面板中授權其它應用訪問你的數據庫。

API使用手冊?

新浪云的PHP運行環境提供了標準的 MySQLMySQLIPDO 模塊來連接數據庫,支持所有MYSQL的特性,您可以使用您習慣的方式來操作數據庫。

以下是一些和共享MySQL數據庫服務相關的預定義常量,你可以直接引用這些參數來連接數據庫:

用戶名  :  SAE_MYSQL_USER
密  碼 :  SAE_MYSQL_PASS
主庫域名 :  SAE_MYSQL_HOST_M
從庫域名 :  SAE_MYSQL_HOST_S
端  口 :  SAE_MYSQL_PORT
數據庫名 :  SAE_MYSQL_DB

使用方法,以MySQL模塊為例:

<?php

// 連主庫
$db = mysql_connect(SAE_MYSQL_HOST_M.':'.SAE_MYSQL_PORT,SAE_MYSQL_USER,SAE_MYSQL_PASS);

// 連從庫
// $db = mysql_connect(SAE_MYSQL_HOST_S.':'.SAE_MYSQL_PORT,SAE_MYSQL_USER,SAE_MYSQL_PASS);

if ($db) {
    mysql_select_db(SAE_MYSQL_DB, $db);

    // ...
}

?>

注解

PDO不支持host:port這種寫法,請使用PDO標準寫法

河南22选5开奖
  • <em id="xpjve"><ol id="xpjve"></ol></em>

          1. <em id="xpjve"><ol id="xpjve"></ol></em>