Zrobiłem trochę googlingu i nie mogłem znaleźć odpowiedzi na to pytanie dłużej niż kilka lat temu, więc pomyślałem, że zapytam. Funkcja Oracle RAC oferuje równoważenie obciążenia zarówno dla transakcji odczytu i zapisu, jak również skalowanie i wysoką dostępność bez przestojów (przynajmniej, jak rozumiem - zamierzamy wdrożyć nasze pierwsze bazy danych, które używają RAC, więc Zobaczę jak to będzie).
Czy jest jakiś zestaw funkcji programu SQL Server (lub komponent innej firmy, który można zainstalować na górze), który zapewnia równoważną funkcjonalność? Zawsze korzystaliśmy z klastrowania systemu Windows, w którym zdarzenie przełączania awaryjnego powoduje około 20-30 sekund przestoju SQL - zawsze tolerowane, ale nie idealne. Teraz, dzięki AlwaysOn w SQL 2012, SQL Server zmniejsza to do około 15 sekund i dodaje koncepcję pomocniczych baz danych tylko do odczytu, ale nadal wymaga, aby transakcje zapisu były dławione przez jeden punkt połączenia (znacznie ulepszone, ponieważ wiele transakcji jest po prostu przeczytaj, ale nadal tak naprawdę nie jest równoważenie obciążenia), aw przypadku awarii węzła lub konieczności łatania nadal występuje przestój.
Przypuszczam, że to tylko większa ciekawość - wydaje mi się, że to jedyny obszar, w którym SQL Server pozostaje w tyle za Oracle (przynajmniej wśród funkcji, które osobiście widziałem). Chciałem sprawdzić, czy są jakieś opcje, aby wypełnić tę lukę i ewentualnie poprawić nasze własne wdrożenie SQL Server, czekając na dodanie równoważnej funkcji Microsoftu - może w SQL 2014/2015?
Odpowiedzi:
Nie, nic w SQL Server nie może dać ci tego samego po wyjęciu z pudełka .
Obecnie jedyną technologią SQL Server, która umożliwia jednoczesne zapisy w wielu węzłach, jest replikacja peer-to-peer . Zauważ, że nie powiedziałem „zapisu skalowanego w górę”, ponieważ działa w taki sposób, że cały system ma pojemność zapisu tylko jednego węzła. Akapit wprowadzający tej strony jest starannie sformułowany, tak aby zawierał termin „skalowanie w poziomie”, nie mówiąc „napisz skalę”. Tak, mów marketingowo.
Z tego, co przeczytałem , Oracle RAC jest pod tym względem taki sam. Funkcjonalnie jedyną rzeczą, której brakuje w SQL Server w tej konfiguracji, jest rozwiązanie równoważące obciążenie, które jest zarówno zaletą (możesz go wdrożyć, jak chcesz), jak i wadą (nie jest w pudełku ani nie jest obsługiwane przez Microsoft), gdy porównywanie z konkurencyjnymi produktami.
I odwrotnie, Oracle RAC nie daje ci tego samego, co SQL Server od razu po wyjęciu z pudełka . Na przykład zaleca się wdrożenie RAC z węzłami w odległości 100 km od siebie ze względu na opóźnienie sieci w czasie rzeczywistym, podczas gdy replikacja równorzędna nie ma takich ograniczeń. (Nie twierdzę, że jedno rozwiązanie jest lepsze od drugiego: po prostu zaznaczam, że są różne. Firma powinna wybrać rozwiązanie, które najlepiej odpowiada ich konkretnym potrzebom).
źródło
Jestem DBA obsługującym zarówno SQL 2000-2012, Oracle 11g, jak i Oracle 11g RAC.
Grupy IMO, Always On Availability Groups w SQL 2012 są bardzo zbliżone do dostępności i skalowalności RAC przy znacznie niższych kosztach zarówno w dolarach, jak i złożoności. Możesz skalować odczyty, wysyłając zapytania do kopii lustrzanych, ale chcesz przekierować cały DML na serwer główny (kopii lustrzanych programu SQL Server nie można zaktualizować). Jeśli podstawowy serwer SQL ulegnie awarii, przełączenie awaryjne do jednego z serwerów lustrzanych jest prawie natychmiastowe. RAC doświadcza podobnej pauzy, jeśli węzeł ulega awarii, ponieważ niezatwierdzone transakcje w uszkodzonym węźle są wycofywane przez pozostały węzeł.
Największą zaletą (IMHO) SQL 2012 AAAG w stosunku do RAC jest to, że jest to architektura współdzielona-nic. RAC dzieli pamięć. Jeśli to się nie powiedzie, cały klaster jest wyłączony. To ogromny SPOF w RAC, o którym wszyscy zdają się zapominać. Jeśli chcesz się przed tym zabezpieczyć, musisz skonfigurować serwer rezerwowy. Jeśli chcesz, aby to był RAC, koszt jest jeszcze bardziej skomplikowany.
źródło
Prosta odpowiedź na twoje pytanie brzmi: nie, SQL Server nie ma równoważnych funkcji. Istnieją aspekty SQL Server, które zapewniają pożądaną odporność na awarie (nawet tak daleko jak SQL Server 2005, gdy używa się dublowania DB i aplikacji obsługującej dublowanie), ale nie ma 1: 1 z Oracle RAC.
źródło
Lepszym porównaniem AlwaysOn byłaby funkcja Oracle Data Guard. Klastrowanie aktywno-pasywne. (tak, możesz czytać w trybie gotowości, ale jest on tylko do odczytu, więc nadal aktywny jest tylko jeden węzeł ”)
Oracle RAC jest zupełnie innym zwierzęciem i aktywnym klastrowaniem. Nie widziałem żadnych ruchów, jeśli Microsoft kiedykolwiek będzie chciał to wdrożyć.
źródło
SQL Server 2012/2014 z AlwaysOn dodaje wiele możliwości, które przybliżają Cię do Oracle RAC - a w niektórych przypadkach poprawiają go. (Przypomnij, że z RAC musisz korzystać z serwera aplikacji Oracle, weblogic i JDBC - a także działać w jednym centrum danych, a aplikacja może łączyć się tylko z jednym klastrem RAC - udostępniona pamięć oznacza, że RAC nie działa w chmurze) .
Dzięki AlwaysOn otrzymujesz pomocnicze elementy tylko do odczytu (4 na 12, 8 na 14) i obsługę automatycznego przełączania awaryjnego. Kilka rzeczy jest jednak trudnych - AlwaysOn nie obsługuje równoważenia obciążenia - chyba że napiszesz skrypt, to zawsze narysuje pierwszy serwer na liście. Przełączanie awaryjne ma również wpływ na aplikację - nie jest przezroczyste, więc aplikacje mogą wymagać ponownego uruchomienia.
Pełne ujawnienie - pracuję dla firmy, która produkuje oprogramowanie, które rozszerza AlwaysOn. Nasze oprogramowanie do równoważenia obciążenia bazy danych SQL Server - wykonuje podział odczytu / zapisu w imieniu aplikacji, wykonuje równoważenie obciążenia oparte na czasie odpowiedzi, które obejmuje centra danych, a kolejki zapisów / transakcji przychodzących podczas przełączania awaryjnego, dzięki czemu aplikacje nie widzą błędów . Zobacz, jak Microsoft, Dell, Quicken Loans i inne przedsiębiorstwa używają oprogramowania ScaleArc, aby ulepszyć SQL Server AlwaysOn i uzyskać funkcje podobne do RAC bez żadnych zmian w aplikacji.
źródło