PDA

View Full Version : اتصال دیتابیس لوکال هاست به دیتابیس هاست



<?php?>
چهارشنبه 11 آذر 1394, 17:02 عصر
سلام .
با این فرض که میخوایم یک نرم افزار بنویسیم برای یک شرکت دولتی تا کارمنداشو مدیریت کنه و هر روز یکی باشه که اطلاعات کارمندان جدید رو وارد سیستم کنه .
حالا اگه اینترنت نباشه چه کار میشه کرد؟ چه طور میشه به صورت افلاین با نرم افزار کار کرد ؟ نرم افزار که رویه هاست و سرور سوار شده , اصلا شدنی هست که به صورت افلاین با نرم افزار تحت وب کار کرد؟

من خودم یک راهی به ذهنم رسید نمیدونم شدنی هست یا خیر .
نظرم اینه که همون cms که نوشتیم رو به صورت لوکال هاست رویه سیستم اون شرکت پیاده کنیم , اینطوری هر وقت اینترنت بود میره داخل نرم افزار و کاراشو میکنه و هر وقت اینترنت قطع شد میره تو لوکال هاست و اطلاعاتشو ذخیره میکنه .

اما مشکل دیگه تو این نظریه بنده اینه که : وقتی اینترنت بعد یکی دو ساعت وصل شد اطلاعات جدیدی که رویه لوکال هاست در زمان قعطی اینترنت ذخیره شد چه طور به بانک اطلاعاتی سرور انتقال پیدا کنه ؟ نظر شما چیه ؟

آیا این نظریه درسته و قابل احرا هست ؟ آیا از نظر امنیتی مشکلی نداره ؟

ممنون میشم کمکم کنید در این زمینه . تشکر

us1234
چهارشنبه 11 آذر 1394, 22:00 عصر
به نظر من برای حل این سناریو باید بروید سمت زبان های سمت کلاینت منظورم چیزی مثل ویندوز فرم یا ... است که یک لوکال دی بی دارند و وقتی اینترنت وصل شد می تواند اطلاعات را به یک دیتابیس آنلاین سینک کنند .

البته اگر سازمان بزرگی است کلا یک سرور در نظر بگیرید و کل کار را روی شبکه همان سازمان انجام دهید و آن سرور را به اینترنت وصل کنید ، با این کار اتوماسیون داخل سازمان کلا لوکال میشه و ارتباطی به اینترنت ندارد و همچنین چون سرور به نت وصل است از بیرون از سازمان هم دسترسی وجود دارد .

H:Shojaei
چهارشنبه 11 آذر 1394, 22:11 عصر
اگر موردی هست و کار بزرگ نیست من یه نمونه میخواستم اینطوری پیاده سازی کنم که اخرش دیدم اصلا ارزشی نداره که همچین کاری بکنم فرض کنید در ماه ۱ روز هم اینترنت قطع بشه واسه اون جایی که من میخواستم بنویسم فوقش میومد تو دفتر یادداشت میکرد و روز بعد وارد سیستم میکرد...
ولی در کل میشه سیستم رو طوری پیاده کنید اگر اینترنت قطع شده بود و دوباره وصل شد جداول رو چک کنید و با هم سینکشون کنید مثلا یه روش اینه که یه جدول temp داشت باشید که وقتی اینترنت قطعه بیاد و هرچی داده تو دیتابیس لوکال درج میشه id همراه نام جدول رو تو اون هم درج کنه و وقتی به نت وصل شدید این جدول رو میخونید و نسبت به رکوردها از جداول اطلاعات رو میخونید و به نت منتقل میکنید و هر رکوردی که ثبت شده بود از این جدول حذف میکنید هم درصد خطاش کمه هم مطمئن...
اینطوری نمیخواد همه جداول رو هربار چک کنید جدول temp اگه خالی بود یعنی داده ای سمت لوکال نیست که سمت سرور ثبت نشده باشه...

Unique
چهارشنبه 11 آذر 1394, 23:40 عصر
راستش من نمیفهمم اینترنت قطع شد یعنی چی !؟ یعنی کل اینترنت کشور قطع بشه !؟ خوب وقتی قطعه کار هم قطعه ! اصلا این اتفاق چند درصد ممکنه بیفته !؟

اگه انقدر شرکت حساسی هست که حالا نمیتونه کار را متوقف کنه یا یک روز دستی کار کنه باید خرج کنه ! این سینک کردن و این حرفا را بگذارین کنار چون به دردسرش اصلا نمی ارزه و مشکلات خاص خودش را داره. بهترین کار همونه که us1234 گفت. یعنی بیاد سرور را لوکال بگیره و ip اختصاصی و پهنای باند مناسب از یک ISP. اینطوری اینترنت هم که قطع باشه مهم نیست چون اینترنت فقط برای دسترسی از بیرون به سرور هست و بس.

مهرداد سیف زاده
پنج شنبه 12 آذر 1394, 07:15 صبح
کار انقدرها هم پیچیده نیست
همون نرم افزار رو روی لوکال نصب کنید و نمونه دیگری رو رو اینترنت داشته باشید
حالا به کمک replication در mysql این دو دیتابیس رو sysnc کنید
https://dev.mysql.com/doc/refman/5.1/en/replication.html

در replication شما تا وقتی اینترنت وصله هر دو دیتابیس مانند همدیگه هستن یعنی فرقی نمیکنه کسی ip روی سرور local رو بزنه یا سایت روی اینترنت رو
ولی وقتی اینترنت قطع میشه، خب دیگه قطع شده و عمل replication دیگه انجام نمیشه ولی تا آخرین لحظه replicate به داده ها دسترسی دارید و همچنین میتونید کار رو ادامه بدید و به محض وصل شدن اینترنت replication شروع به ارسال تغییرات جدید به سمت اینترنت میکنه. اگر راهنمایی بیشتر میخواستید در خدمتم

Unique
پنج شنبه 12 آذر 1394, 18:57 عصر
همون نرم افزار رو روی لوکال نصب کنید و نمونه دیگری رو رو اینترنت داشته باشید
حالا به کمک replication در mysql این دو دیتابیس رو sysnc کنید

Replication برای سناریو های خاصی کاربرد داره ! هر کاری بکنی delay داری ، حتی اگه اینترنت وصل باشه و نفتی هم باشه و مثلا چندین و چند کاربر با هم کار کنن.

توی سناریو ایشون اگه کسی در زمان قطعی اینترنت شرکت دولتی بخواد آنلاین گزارش بگیره یا حتی آنلاین چیزی را ثبت کنه که ممکنه توی منطق برنامه به دلیل همزمانی و بحث های تقدم و تاخر تاثیر گذار باشه نسخه اینترنتی برنامه چون عقب هست دردسر ساز میشه. کلا وقتی قطعی اینترنت قابل چشم پوشی هست یا میشه سرور را لوکال در نظر گرفت استفاده از replication و توسعه و نگهداری کد در دو سرور عاقلانه و بهینه نیست !

<?php?>
پنج شنبه 12 آذر 1394, 23:35 عصر
بابت نظرات دوستان خیلی ممنونم .
من منظورم فعطی اینترنت کل کشور نیست . برای مثال شما از شرکت اسساتک استفاده میکنید و یک روزی اتفاقی ساعت 10 صبح تا 12 بعد از ظهر اینترنت قطع میشه .
از اونجایی که میخوایم نرم افزاری بنویسیم که هم در زمان قعطی جواب سازمان رو بدهو بتونه اطلاعات سازمان رو توش درج کنه و هم در زمانی که یوزر ها در منزلشون میخوان به صورت انلاین وارد اکانتشون بشن و به اطلاعات جدید اون سازمان دسترسی داشته باشن . پس یا باید یک اینترنت لوکال خصوصی براش پیاده سازی کنیم یا باید از روش اول استفاده کنیم ( تا اینجا نظظرم درسته دوستان ؟ )
------------------------------
در گزینه اول اگر ما بخوایم ((( یعنی بیاد سرور را لوکال بگیره و ip اختصاصی و پهنای باند مناسب از یک ISP ))) که دوستمون گفتن استفاده کنیم برای قعطی نداشتن چقدر هزینه باید صزف بشه و چقدر زمان پیاده سازی داره ؟
------------------------------
در حالت دوم که اقای یوسف زاده گفتند که از replication استفاده کنیم :
ایا زمانی که دو دیتابیس به هم وصل میشن با replication , وقی اینترنت قطع میشه و سازمان مورد نظر اطلاعات جدید رو وارد نرم افزار لوکل میکنه , آیا وقتی اینترنت وصل میشه اطلاعات جدیدی که در زمان قعطی ثبت شدن در نرمافزا لوکال در دیتابیس نرم افزاری که رو سرور سواره هم ذخیره می شوند ؟
آیا این مسئله با replication حل میشه آقای یوسف زاده ؟
ممنون از همه دوستان

مهرداد سیف زاده
جمعه 13 آذر 1394, 00:03 صبح
بابت نظرات دوستان خیلی ممنونم .

در حالت دوم که اقای یوسف زاده گفتند که از replication استفاده کنیم :
ایا زمانی که دو دیتابیس به هم وصل میشن با replication , وقی اینترنت قطع میشه و سازمان مورد نظر اطلاعات جدید رو وارد نرم افزار لوکل میکنه , آیا وقتی اینترنت وصل میشه اطلاعات جدیدی که در زمان قعطی ثبت شدن در نرمافزا لوکال در دیتابیس نرم افزاری که رو سرور سواره هم ذخیره می شوند ؟
آیا این مسئله با replication حل میشه آقای یوسف زاده ؟
ممنون از همه دوستان
من مورد replication رو گفتم. ولی اونم الزاماتی داره. مثلا به اینترنت پر سرعت نیاز داره و بعدش هم دانش راه اندازی و نگهداری
برای replication ما به حداقل سرور master و slave نیاز داریم. هر تغییری که در server اعمال میشود همان تغییرات به سمت slave می رود. ولی برگشت داده و قرار گیری بر روی روی سرور بسته به کانفیگ داره و برای کار شما باید طوری کانفیگ بشه که از سمت slave تغییرات به سمت دیتابیس master بره. اگر کانفیگ ها و فاصله زمانی sync بسته به سرعت درست کانفیگ شده باشه شما در هر لحظه یک mirror از دیتابیس‌ها خواهید داشت یعنی همیشه هیچ فرقی دیتابیس local با دیتابیس اینترنت نخواهد داشت. اگر اینترنت قطع بشه دیگه sync رخ نمیده. این مرحله انقدر توی wrapper میمونه تا اتصال برقرار بشه. وقتی اولین اتصال بین دو تا دیتابیس برقرار شد اون وقت شروع به sync میکنه. کانفیگ slave و master ها خیلی مهم هست. لینکی که در پست بالا گذاشتم اطلاعات بیشتری در اختیار شما میزاره

<?php?>
جمعه 13 آذر 1394, 16:32 عصر
من مورد replication رو گفتم. ولی اونم الزاماتی داره. مثلا به اینترنت پر سرعت نیاز داره و بعدش هم دانش راه اندازی و نگهداری
برای replication ما به حداقل سرور master و slave نیاز داریم. هر تغییری که در server اعمال میشود همان تغییرات به سمت slave می رود. ولی برگشت داده و قرار گیری بر روی روی سرور بسته به کانفیگ داره و برای کار شما باید طوری کانفیگ بشه که از سمت slave تغییرات به سمت دیتابیس master بره. اگر کانفیگ ها و فاصله زمانی sync بسته به سرعت درست کانفیگ شده باشه شما در هر لحظه یک mirror از دیتابیس‌ها خواهید داشت یعنی همیشه هیچ فرقی دیتابیس local با دیتابیس اینترنت نخواهد داشت. اگر اینترنت قطع بشه دیگه sync رخ نمیده. این مرحله انقدر توی wrapper میمونه تا اتصال برقرار بشه. وقتی اولین اتصال بین دو تا دیتابیس برقرار شد اون وقت شروع به sync میکنه. کانفیگ slave و master ها خیلی مهم هست. لینکی که در پست بالا گذاشتم اطلاعات بیشتری در اختیار شما میزاره

منظور از اینترنت پر سرعت چقدره ؟ بری مثال این سازمان هایی مورد هدف ما هستن همه از سرویس های آسیاتک و مخابراط و شاتل و ..... سرویس میگیرند و فکر کنم سرعت 128 پایین ترین سرعتشون باید باشه . آیا با این سرعت میشه از replication استفاده کرد ؟
وقتی نرم افزار ومپ ( wampserver ) رو نصب میکنیم و برنامه ای که با php نوشتیم رو توش قرار میدیم و به mysql متصلش میکنیم , چطور باید بفهمیم که نرم افزار ومپ ما slave هست یا master ؟ و چطور باید طوری کانفیکش کنیم که اطلاعات جدید رو در زمان اتصال اینترنت به دیتابیس master ( که همون دیتابیس هاست اشتراکی ما هست ) بفرسته ؟

ممنون , ببخشید که یکم سوالات مبتدی و در حد پایه میپرسم

مهرداد سیف زاده
جمعه 13 آذر 1394, 21:13 عصر
منظور از اینترنت پر سرعت چقدره ؟ بری مثال این سازمان هایی مورد هدف ما هستن همه از سرویس های آسیاتک و مخابراط و شاتل و ..... سرویس میگیرند و فکر کنم سرعت 128 پایین ترین سرعتشون باید باشه . آیا با این سرعت میشه از replication استفاده کرد ؟
وقتی نرم افزار ومپ ( wampserver ) رو نصب میکنیم و برنامه ای که با php نوشتیم رو توش قرار میدیم و به mysql متصلش میکنیم , چطور باید بفهمیم که نرم افزار ومپ ما slave هست یا master ؟ و چطور باید طوری کانفیکش کنیم که اطلاعات جدید رو در زمان اتصال اینترنت به دیتابیس master ( که همون دیتابیس هاست اشتراکی ما هست ) بفرسته ؟

ممنون , ببخشید که یکم سوالات مبتدی و در حد پایه میپرسم
برای replication حداقل دیگه باید 512 داشته باشید. البته به جز یکی دو مورد تا حالا ندیدم کسی 512 واقعی داشته باشه. شرکت مخابرات که 512 در واقع همون ۱۰ کیلوبیت بر ثانیه هست.
برای داشتن وضعیت پایدار و همچنین بستر مناسب بهتره از سرورهای لینوکسی استفاده کنید. همچنین نرم افزار wamp یه نصاب سریع و راحت نرم افزارهای apache,php,mysql هست و نمیشه به عنوان بستر مناسب ازش استفاده کرد.
همچنین مورد replication مثل این نیست که بگیم فلان پنجره هست برید تیکش رو بزنید و فعال بشهو بلکه باید در مورد اصول replication کمی مطالعه داشته باشید و این که هدف از slave‌و master چی هست. حالا بسته به کا شما بهتره slave رو روی اینترنت باشه و master شما باشید. اون لینکی رو که فرستادم باید مطالعه کنید و در این مورد کمی اطلاعات اولیه کسب کنید
البته دلیل دیگرم برای مطالعه اون لینک این هست که شاید اطلا replication برای کا شما مناسب نباشه و بهتره که از وصل کردن سیستم لوکال به اینترنت استفاده کنید.

Unique
شنبه 14 آذر 1394, 16:03 عصر
منظور از اینترنت پر سرعت چقدره ؟ بری مثال این سازمان هایی مورد هدف ما هستن همه از سرویس های آسیاتک و مخابراط و شاتل و ..... سرویس میگیرند و فکر کنم سرعت 128 پایین ترین سرعتشون باید باشه . آیا با این سرعت میشه از replication استفاده کرد ؟

دوست عزیز ، آخه چرا شما پایین ترین را مثال میزنین ! این سرعت ها کلا real نیست ! خیلی از این ها ۱۲۸ میدن اما تا ۱ مگ بازه مگه اینکه ترافیک کم بیارن ! چنین سازمان هایی نمیتونن سرویس های ۲ مگ بگیرن ؟ من ۲ مگ دارم و ثانیه ای ۲۰۰ کیلو بایت داره بهم سرویس میده ! ۵۱۲ و ۱۲۸ صبانت هم زمان هایی که ۱ مگ بودن و real نبودن تا ۷۰ یا ۹۰ کیلو سرعت میده.


برای replication حداقل دیگه باید 512 داشته باشید. البته به جز یکی دو مورد تا حالا ندیدم کسی 512 واقعی داشته باشه. شرکت مخابرات که 512 در واقع همون ۱۰ کیلوبیت بر ثانیه هست.

آقا مهرداد دیگه اینجا ایران هست اما نه تا این حد !!!! همونطور که گفتم خیلی از اینها سرویس هاشون real نیست و ۵۱۲ خیلی مواقع تا ۹۰ یا ۱۰۰ کیلو هم جواب میده ! اگه real بدن باید ۶۵ کیلوبایت باشه اما دیگه ۳۰ یا ۴۰ را قطعا هست.


برای داشتن وضعیت پایدار و همچنین بستر مناسب بهتره از سرورهای لینوکسی استفاده کنید. همچنین نرم افزار wamp یه نصاب سریع و راحت نرم افزارهای apache,php,mysql هست و نمیشه به عنوان بستر مناسب ازش استفاده کرد.
همچنین مورد replication مثل این نیست که بگیم فلان پنجره هست برید تیکش رو بزنید و فعال بشهو بلکه باید در مورد اصول replication کمی مطالعه داشته باشید و این که هدف از slave‌و master چی هست. حالا بسته به کا شما بهتره slave رو روی اینترنت باشه و master شما باشید. اون لینکی رو که فرستادم باید مطالعه کنید و در این مورد کمی اطلاعات اولیه کسب کنید
البته دلیل دیگرم برای مطالعه اون لینک این هست که شاید اطلا replication برای کا شما مناسب نباشه و بهتره که از وصل کردن سیستم لوکال به اینترنت استفاده کنید.

آخر حرف های آقا مهرداد اینه که باید یک Sys Admin برات سرور ها را Config کنه. بیخودی خودت را اذیت نکن.

اما از نظر صرفه قیمت فکرش را کردی ؟!
اگه بخوای از Replication استفاده کنی باید دو جا پول بدی و نگهداری و هزینه Sys Admin را هم داری ! اما روی اینترنت یا Local فقط یکبار هزینه میکنی.

us1234
شنبه 14 آذر 1394, 19:30 عصر
من یک چیز هایی از Replication میدونستم و کاربردش ( هر چند فکر میکنم خیلی محدود باشه ) را میدونم و اصلا بحثم در این خصوص نیست .
سوالی که برام مطرح شد اینجاست :

مثلا در این سازمان که استارتر مطرح کرده اینترنت قطع شده است و چند کاربر می خواهند با اسکریپت و دیتابیس کار کنند ، در این صورت طبق گفته دوستان و استفاده از Replication باید یک وب سرور روی تمام کلاینت ها نصب کنیم و یک نسخه از اسکریپت روی تمام سیستم ها باشد ؟

اگر جواب مثبت باشد که خیلی اوضاع شیر تو شیر میشه :)

من بودم با کمترین هزینه و استفاده از دانگل وایرلس کل سیستم ها را شبکه میکردم و یک سیستم معمولی ( حتما نباید سخت افزار سرور باشد ) به عنوان سرور در نظر میگردم و سیستم عامل محبوبم (7 CentOS ) را روی آن نصب میکردم و به بقیه کلاینت ها دسترسی استفاده از این سرور را میدام ، تازه میتونستم استفاده از اینترنت بقیه کاربران را هم مدیریت کنم ...

واقعا جالب نیست که هر کدام از کلاینت ها یک نسخه از اسکریپت و یک دی بی محلی روی سیستم خودشان داشته باشند !

مهرداد سیف زاده
شنبه 14 آذر 1394, 20:22 عصر
من یک چیز هایی از Replication میدونستم و کاربردش ( هر چند فکر میکنم خیلی محدود باشه ) را میدونم و اصلا بحثم در این خصوص نیست .
سوالی که برام مطرح شد اینجاست :

مثلا در این سازمان که استارتر مطرح کرده اینترنت قطع شده است و چند کاربر می خواهند با اسکریپت و دیتابیس کار کنند ، در این صورت طبق گفته دوستان و استفاده از Replication باید یک وب سرور روی تمام کلاینت ها نصب کنیم و یک نسخه از اسکریپت روی تمام سیستم ها باشد ؟

اگر جواب مثبت باشد که خیلی اوضاع شیر تو شیر میشه :)

من بودم با کمترین هزینه و استفاده از دانگل وایرلس کل سیستم ها را شبکه میکردم و یک سیستم معمولی ( حتما نباید سخت افزار سرور باشد ) به عنوان سرور در نظر میگردم و سیستم عامل محبوبم (7 CentOS ) را روی آن نصب میکردم و به بقیه کلاینت ها دسترسی استفاده از این سرور را میدام ، تازه میتونستم استفاده از اینترنت بقیه کاربران را هم مدیریت کنم ...

واقعا جالب نیست که هر کدام از کلاینت ها یک نسخه از اسکریپت و یک دی بی محلی روی سیستم خودشان داشته باشند !
در مورد جواب شما خیر قرار نیست روی کل سیستمها بیاد نرم افزار و وب سرور نصب بشه. هدف از replication بین یک سرور master‌و یک سرور slave هست. مثلا در مورد سوال استارتر که گفته بود من یه سرور محلی دارم و حالا میخوام هر کدام از کارمندان در بیرون از سازمان(اینترنت) هم به نرم افزار دسترسی داشته باشن. دوستان پیشنهاد دادن سرور محلی رو به اینترنت وصل کنید و بنده هم پیشنهاد دادم از replication استفاده کنید.
شکل زیر relication بین دو سرور رو نشون میده
137259

اطلاعات بیشتر در ویکی‌پدیا (https://en.wikipedia.org/wiki/Replication_(computing))