Amazon RDS для MySQL проти встановлення MySQL на екземплярі Amazon EC2


31

На роботі ми розміщуємо всі наші веб-сервери на Amazon EC2 і зазвичай використовуємо бази даних MySQL, встановлені в тому ж полі, що й наш веб-сервер Apache, і спілкуємося з ними localhost. Зараз ми стикаємося з необхідністю перенести нашу базу даних на власний сервер для однієї з наших систем. У мене є вибір між двома рішеннями: скористайтеся Amazon RDS або просто запустіть нову коробку Amazon EC2 та встановіть на ній MySQL.

RDS, будучи спеціалізованою послугою бази даних, що надається тією ж компанією, що і EC2, здається, що це повинен бути очевидно кращим варіантом. Однак, коли я дивлюся на ціни на два варіанти (див. Http://aws.amazon.com/ec2/pricing та http://aws.amazon.com/rds/pricing ), здається, що RDS-сервер коштує майже вдвічі більше, ніж сервер EC2 за коробку з тими ж характеристиками.

Зважаючи на те, що я здатний самостійно обробляти резервні копії та що EC2 пропонує таку ж здатність масштабувати екземпляр, як це вимагається, ніж це робить RDS, я не бачу жодної причини використовувати RDS замість EC2. Здається, я, мабуть, пропускаю щось велике, бо якби я мав рацію, ніхто не використовував би RDS. Що саме мені не вистачає, і які переваги RDS над встановленням власної бази даних на екземплярі EC2?


Варто зазначити, що співвідношення цін між EC2 та RDS суттєво змінилося, оскільки я задав це питання. Продовження екземплярів на EC2 все ще дешевше, але становить понад дві третини ціни RDS; перехід від EC2 до RDS (або навпаки) більше не означає подвоєння (або вдвічі) рахунку на сервері. (Звичайно, це може бути різниця, про яку варто піклуватися, звичайно, залежно від ваших обставин.)
Марк Амерді

Відповіді:


20

Я взагалі великий шанувальник AWS ... але RDS, не так вже й багато.

@RolandoMySQLDBA зазначив, що це досить непогані моменти.

Єдиною перевагою, яку я бачу в RDS порівняно з MySQL на EC2, є можливість робити точкові та клацаючі знімки, клони та відновлення в момент часу, але це майже не достатньо, щоб компенсувати втрату контролю та гнучкість, і вони більшість, звичайно, не виправдовують ціну, що вона вища. RDS є певним чином сексуальним, але ви в кінцевому рахунку не можете довіряти тому, що ви не можете в кінцевому рахунку виправити, оскільки ви не можете дістатися до всіх рухомих частин.

Мені не подобається мати SUPERпривілей. Мені не подобається, що я не можу створити хвіст журналу помилок. Мені не подобається, що я не можу запустити "top" або "iostat" на моєму сервері баз даних, щоб побачити, як ядра та накопичувачі насолоджуються навантаженням. Мені не подобається не мати доступу до двигуна федеральної пам’яті. Мені не подобається думка платити за гарячу резервну машину резервного резервування (кілька AZ), яку я навіть не можу використовувати як репліку читання. Звичайно, є цілком розумні пояснення, чому всі ці обмеження повинні бути встановлені, щоб MySQL був успішно упакований і проданий як RDBMS-in-a-box. Єдине, що RDBMS в коробці "вирішує" цілу низку проблем, яких у мене немає ... і стає на шляху, викликаючи нові проблеми.

Але абсолютним вимикачем угод для RDS є повна відсутність доступу до бінарних журналів та реплікації. Бінлоги, особливо на основі рядків, - це фантастичний інструмент відновлення для незначних катастроф, але вони вам не допоможуть, якщо ви не можете отримати до них доступ. Хочете налаштувати локальний сервер у вашому офісі як репліка читання виробничої бази даних в RDS? Щось взяти з місцевих резервних копій, чи мають звіти мати під рукою для відновлення аварій, чи трапиться щось немислиме з вашими даними, які живуть в RDS? Це ідея, яка одночасно очевидна і геніальна.

На жаль, прямий доступ до реплікації недоступний. Звичайно, ви можете платити за читання реплік ... але лише як інші екземпляри RDS. Не цінні пропозиції у моїй книзі.

Оновлення: одна суттєва зміна RDS для MySQL 5.6

Я все ще вважаю за краще запускати власний сервер (навіть в EC2), а не запускати RDS з ряду причин, включаючи відсутність підтримки визначених користувачем функцій , неможливість використання Fedrated Engine Engine і неможливість мати такий доступне додаткове підключення для аварійного доступу ... проте ...

Amazon внесла суттєві зміни в MySQL 5.6 для RDS, що усуває одне з моїх основних заперечень - можливо, моє найбільше заперечення: бінарні журнали тепер доступні, і ви можете запускати екземпляр, який не є RDS, як ведений, або підключати інші утиліти до сервер, який читає потік бінлог.

http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/MySQL.Procedural.Exporting.NonRDSRepl.html

Офіційно документація вказує на те, що вони це відкривають, щоб ви могли налаштувати підлеглий для здійснення живої міграції - ви синхронізуєте іноземний майбутній головний сервер із наявного екземпляра RDS за допомогою mysqldump, а потім підключаєте його до RDS як підлеглий щоб отримати пряму трансляцію оновлень через потік реплікації, поки ваша програма не буде перенесена на новий головний майстер - але неофіційно ви можете це робити постійно, доки ви не очікуєте, що вони підтримуватимуть вас ... мені здається розумним.

Це було підтверджено в недавньому Вебінарі в розмові, яка починається близько 56:45:

"Ви можете зберігати його у тираженому стані нескінченно ...

"... поки ви берете на себе відповідальність за підтримку реплікації ..."

"Ми не заважаємо вам робити поточну реплікацію, якщо ви цього хочете".

Ця нова можливість була достатньою для мене, щоб відмовитись від заперечення проти використання RDS у наших екземплярах MySQL, що підтримують загальнодоступний веб-сайт, де ми не використовуємо FEDERATEDбагато або взагалі деякі інші речі.

Тому я все ще не за це, але я вже не проти цього, оскільки наявність прямого потоку бінарних журналів змушує мене в кінцевому підсумку контролювати дані в режимі реального часу та відповідальність за те, щоб жодних транзакцій не було загублений у катастрофічному перебої знову зі мною, тому що я як DBA знову контролюю - саме так я і хочу. Якщо третій постачальник не вказує пальцями на нього, або подає позов проти будь-якого іншого, не повертає втрачені дані, якщо вони зникають через чорну діру всередині чорної скриньки.

Здається, керівництву подобається «ідея» RDS і не заперечує проти різниці у вартості, тому ми зараз запускаємо всі нові веб-сайти з RDS за ними.

Зізнаюся, точне та натискання часу в момент відновлення - це приємна особливість у RDS ... вона не змінює та не порушує вашу існуючу машину - натомість вона запускає абсолютно новий екземпляр, використовуючи резервну копію, найближчим часом до вибраного моменту, а потім застосовує необхідні бінлоги, щоб привести цю нову машину вперед до визначеного вами моменту.

Що стосується цього, але в іншому напрямку, можливо, також зараз використовувати подібну стратегію для переміщення живої бази даних MySQL в RDS ... Ви можете підключити RDS-майстер (імовірно, як правило, це буде щойно розгорнутий екземпляр) як підлеглий існуючої системи, щоб екземпляр RDS мав живу версію даних під час переходу до неї. На відміну від доступу до бінлогів RDS для зовнішньої реплікації, яка працює лише в 5.6, внутрішня реплікація підтримується в RDS, починаючи з 5.5.33 та 5.6.13.


Чи можу я знати, як ви використовуєте двигун FedE ?
Бхарат Хатрі

11

Якщо масштабування серверів DB не є вашою чашкою чаю , то Amazon RDS в порядку, оскільки всі дзвіночки та свистки приходять разом із ним. Тим, хто просто хоче помірного HA, резервного копіювання та масштабування, багато користі.

З іншого боку, якщо ви хочете збільшити масштаб обладнання, для RDS це не викликає сумнівів. Що робити, якщо ви хочете розширити можливості MySQL? На жаль, це не підлягає сумніву для багатьох аспектів, які б хотіли.

Наприклад, чи знаєте ви, що всі сім (7) моделей RDS-серверів обмежені двома полями?

Зверніть увагу на наступну діаграму щодо цих двох варіантів:

MODEL      max_connections innodb_buffer_pool_size
---------  --------------- -----------------------
t1.micro   34                326107136 (  311M)
m1-small   125              1179648000 ( 1125M,  1.097G)
m1-large   623              5882511360 ( 5610M,  5.479G)
m1-xlarge  1263            11922309120 (11370M, 11.103G)
m2-xlarge  1441            13605273600 (12975M, 12.671G)
m2-2xlarge 2900            27367833600 (26100M, 25.488G)
m2-4xlarge 5816            54892953600 (52350M, 51.123G)

Вам не надано привілей SUPER і до нього немає прямого доступу my.cnf. З огляду на це, щоб змінити my.cnfпараметри запуску, спочатку потрібно створити список параметрів БД на основі MySQL та скористатись RDS CLI (Command Line Interface)для зміни потрібних параметрів. Потім потрібно зробити це, щоб імпортувати нові параметри:

  • Створіть спеціальну групу параметрів БД (назвіть її MySettings)
  • Завантажте RDS CLI та встановіть конфігураційний файл за допомогою своїх облікових даних AWS
  • Виконайте наступне: ./rds-modify-db-parameter-group MySettings --parameters "name=whateveroption,value=whatevervalue,method=immediate"
  • Змініть за допомогою списку параметрів БД параметрів MySettings
  • Перезавантажте екземпляр MySQL RDS

Використовуєте API для оновлення однієї змінної та проведення обов'язкового перезавантаження екземпляра RDS для реалізації змін? Це досить болісний процес, щоб підправити будь-який варіант.

Якщо ви хочете збільшити масштаб MySQL, будь ласка, використовуйте EC2. Тоді ви можете my.cnfналаштувати на свій смак, як це завжди робили і звикли.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.