پیشنیازهای نصب برای Unidirectional
برای راهاندازی سناریوی replication یکطرفه در گلدنگیت بهتره یکسری پیشنیازها که از طرف اوراکل مشخص شدهاند رو رعایت کنیم
الزامات سیستمعاملی
مقدار RAM ماشین رابطه مستقیمی با تعداد پردازشهای همزمان و در حال اجرا دارد. در کمترین حالت شما یک پروسهی Extract و Capture در دیتابیس مبدا دارید و در طرف دیگه باید دادههای شما که از طریق Pump و شبکه به مقصد رسیده Extract شوند و توسط یک یا چند پروسهی Replicat بر روی دیتابیس مقصد apply شوند.
رابط کاربری تحت کامند گلدنگیت به طور کامل بیشتر از 5 هزار پروسه Extarct و Replicat رو میتونه به طور همزمان در یک instance گلدنگیت مدیریت کنه. هر instance گلدنگیت حداقل یک پروسه Manager داره که وظیفه مدیریت پروسهها رو بر عهده داره.
هر پروسه Replicat یا Extract در گلدنگیت تقریباً به 25MB تا 55MB حافظه(یا بیشتر) نیاز داره و مقدار دقیقش وابستگی شدیدی به تراکنشهای انتقالی شما و تعداد همزمانی تراکنشهاتون بستگی داره.
به صورت پیشفرض پروسه Extract اگه بخواد با دیتابیس اوراکل کار بکنه حداقل به ۱ گیگابایت حافظه در پارامتر Max_SGA_Size دیتابیس و Streams_Pool_Size برای هر پروسه نیاز داره. مقدار این پارمترها بازم وابستگی شدیدی به تراکنشهای شما دارند و اگه زمان براتون خیلی مهم هستش میتونید این مقدار رو زیاد کنید.
مقدار فضای آزاد مورد نیاز:
- مقدار فضای مورد نیاز برای نصب گلدنگیت بسته به پلتفرم سیستمعامل و دیتابیس شما چیزی حدود 450MB تا 800MB است(این مقدار فضا برای نگهداری فایل فشرده نصب و فایلهای خارج شده از فضای نصبه که شما میتونید فایل نصب فشرده رو بعد از خارجسازی از حالت فشرده پاک کنید)
- فضایی حدود 40MB برای نصب فایلهای باینری برای هر instance گلدنگیت اگه شما نیاز داشتید چند ورژن مختلف گلدنگیت رو کنار هم نصب کنید باید این فضا رو بیشتر کنی (برای ۲ ورژن باینری 80MB مورد نیاز است)
- یک فضای کلی برای ذخیرهسازی Trailها. این فضا رابطه مستقیمی با دیتای شما داره و یک نقطه شروع خوب حداقل 1GBه
نیازمندهای شبکه TCP/IP
- پیکربندی شبکه برای استفاده از پروتکل TCP/IP با DSN همچنین IPV6 به صورت پیشفرض در گلدنگیت پشتیبانی میشود
- پیکربندی شبکه با Hostname و IP صحیح برای تمام سیستمهایی که میزبان و در اتصال پروسههای گلدنگیت هستند.
- گلدنگیت نیاز به رزرو یکسری پورت در شبکه شما داره:
- ۱ پورت برای برقراری ارتباط پروسه Manager و باقی پروسههای گلدنگیت
- یک رنج از پورتها برای ارتباطات درونی گلدنگیت در ماشین میزبانی شده. رنج پیشفرض از پروت 7840 شروع شده یا هر پورت سفارشی دیگهای توسط شما که قابلیت باز کردن 256 پورت بعد از اون هم باشه
نگاهی کلی
ساخت ساختار پایگاهداده در مقصد و انتقال اطلاعات
- INITIAL LOAD
- DATA PUMP
فعال کردن Archivelog بر روی سرور مبدا در سناریوی یکطرفه (بر روی هر دو سرور در سناریوی ۲ طرفه)
فعال کردن log streaming یا همان suplemental log در اوراکل
کپی فایلهای نصب در محل مورد نظر و اعمال دسترسیهای مناسب:
mkdir -p /u02/app/oracle/ggs
chown -R oracle:oinstall /u02/app/oracle/ggs
chmod -R 770 /u02/app/oracle/ggs
تنظیم پارامترهای محیطی بر روی سیستمعامل:
--bash profile oracle
export ggs=/u02/app/oracle/ggs;
export ggs
Initial Load
اولین کار در راهاندازی گلدنگیت ایجاد Initial Load یا همان لود اولیه هستش چون ما باید اولین بار ما سمت دیتابیس مقصدمون یکسری دیتا رو ببریم و از اون لحظه به بعد فقط تغییرات بین ۲ دیتابیس رو به سمت مقصد بفرستیم پس اولین کارمون همیشه Initial Load هستش
Initial Load میتونه به چند طریق اتفاق بیوفته:
اولین راه میتونه به وسیلهی خود گلدنگیت باشه یعنی ما ۲ تا سرویس Extract و Replicat مخصوص اینکار بالا میاریم و شروع به انجام Initial Load با گلدنگیت میکنیم این روش مزایی زیر رو داره
نکته: این روش فقط DMLها(INSERT) رو انتقال میده و DDLها(CREATE) رو انتقال نمیده پس شما باید قبل استفاده از این روش ساختار Objectها رو در دیتابیس مقصد ساخته باشید.
راه دوم استفاده از Oracle Data Pump در سناریوی مبدا و مقصد اوراکل هستش یعنی شما از دیتابیس مبدا یک export بگیرید و در دیتابیس مقصد import بکنید البته با لحاظ یکسری شرایط که ما دیتایی رو از دست ندیم و down time هم نداشته باشیم
برای انجام اینکار اول سرویس capture گلدنگیت رو باید اجرا کنیم تو همین حین که تغییرات در کپچر هستند شما باید export online بگیرید (یه بحثی که تو این نوع export داریم اینه که شما جدول A رو خروجی گرفتید و میرید سراغ جدول B خب اینجا وقتی سیستم آنلاین هستش ممکنه تغییراتی در جدول A رخ بده و ما مشغول خوندن جدول B بوده باشیم) خب وقتی ما capture رو راه میندازیم از این مطمئن هستیم که تغییرات رو داریم.
حالا فایل export رو به دیتابیس مقصد انتقال میدیم و بعد از import فایل سرویس delivery رو راهاندازی میکنیم و به این حالت تغییرات بر روی دیتابیس مقصد اعمال میشوند
خب از این به بعد هر تغییری روی مبدا رخ بده روی دیتابیس مقصد توسط delivery به apply میرسه و این ۲ دیتابیس باهم sync هستند
راه سوم استفاده از RMAN هستش که با یک backup full میتونید به راحتی بین ۲ دیتابیس اوراکلی اینکار رو انجام بدید
راه چهارم هر روشی که شما بتونید دیتا رو بین ۲ دیتابیس مبدا و مقصد انتقال بدید :)
نکته: لازمه حتماً قبل بردن دیتا روی مقصد شما حتماً سرویس capture رو راهاندازی کنید