ডেটাবেস মিররিং সংযোগ সমস্যা বোঝা
SQL সার্ভার পরিবেশে উচ্চ প্রাপ্যতা এবং অপ্রয়োজনীয়তা নিশ্চিত করার জন্য ডেটাবেস মিররিং একটি অপরিহার্য কৌশল। যাইহোক, মিররিং কনফিগার করা কখনও কখনও হতাশাজনক ত্রুটির দিকে নিয়ে যেতে পারে, যেমন ত্রুটি 1418, যা বলে যে সার্ভার নেটওয়ার্ক ঠিকানা পৌঁছানো যাবে না বা বিদ্যমান নেই৷
এই বিশেষ ত্রুটিটি প্রায়ই ঘটে যখন দুটি SQL সার্ভার উদাহরণের মধ্যে একটি মিররিং সেশন সেট আপ করার চেষ্টা করা হয়, এমনকি উভয় ডাটাবেস পৃথকভাবে অ্যাক্সেসযোগ্য হলেও। সমস্যা দেখা দেয় যখন মিররিং এন্ডপয়েন্ট একে অপরের সাথে যোগাযোগ করতে ব্যর্থ হয়।
হাতে থাকা ক্ষেত্রে, একটি স্থানীয় ডেস্কটপ (192.168.0.80) এবং একটি মিনি পিসি (192.168.0.85) মিররিং প্রক্রিয়ার সাথে জড়িত। মিররিং এর "হাই পারফরম্যান্স" মোড ব্যবহার করে, একটি মোবাইল অ্যাপ্লিকেশনের জন্য মিনি পিসি একটি শুধুমাত্র পঠনযোগ্য প্রতিরূপ হিসাবে পরিবেশন করার উদ্দেশ্যে।
সঠিক পোর্ট কনফিগারেশন এবং ফায়ারওয়াল সামঞ্জস্য থাকা সত্ত্বেও, ব্যবহারকারী মিররিং সেশন শুরু করার চেষ্টা করার সময় ত্রুটি 1418 এর সম্মুখীন হয়। এই নিবন্ধটি এই সমস্যার সমাধানের সম্ভাব্য কারণ এবং সমাধানগুলি অন্বেষণ করবে।
| আদেশ | ব্যবহারের উদাহরণ |
|---|---|
| ALTER ENDPOINT | এই কমান্ডটি SQL সার্ভারে একটি ডাটাবেস মিররিং এন্ডপয়েন্টের অবস্থা পরিবর্তন করতে ব্যবহৃত হয়। ত্রুটি 1418 সমাধানের প্রেক্ষাপটে, এটি নিশ্চিত করে যে শেষ পয়েন্টটি সঠিকভাবে শুরু হয়েছে এবং নির্দিষ্ট পোর্টে শোনা যাচ্ছে। উদাহরণ: ALTER ENDPOINT [মিররিং] STATE = STARTED; |
| GRANT CONNECT ON ENDPOINT | একটি নির্দিষ্ট লগইনকে একটি মিররিং এন্ডপয়েন্টের সাথে সংযোগ করার অনুমতি দেয়৷ এসকিউএল সার্ভার দৃষ্টান্তগুলিকে ডেটাবেস মিররিংয়ের সময় নিরাপদে যোগাযোগ করার অনুমতি দেওয়ার জন্য এটি অত্যন্ত গুরুত্বপূর্ণ। উদাহরণ: এন্ডপয়েন্টে সংযোগ মঞ্জুর করুন::[মিররিং_এন্ডপয়েন্ট] থেকে [DOMAINUserAccount]; |
| SET PARTNER | একটি ডাটাবেস মিররিং সেশনে অংশীদার হিসাবে একটি SQL সার্ভার উদাহরণ কনফিগার করে৷ এই কমান্ডটি অংশীদার সার্ভারের জন্য নেটওয়ার্ক ঠিকানা স্থাপন করে। উদাহরণ: ALTER DATABASE YourDatabaseName SET PARTNER = 'TCP://192.168.0.85:5022'; |
| CREATE ENDPOINT | একটি মিররিং এন্ডপয়েন্ট তৈরি করে যা একটি নির্দিষ্ট পোর্টে শোনে এবং ডাটাবেস মিররিং সেশন পরিচালনা করে। এটি যোগাযোগের ভূমিকা নির্দিষ্ট করে (যেমন, PARTNER)। উদাহরণ: ডেটাবেস_মিররিংয়ের জন্য TCP (LISTENER_PORT = 5022) হিসাবে ENDPOINT [মিররিং_এন্ডপয়েন্ট] তৈরি করুন (ROLE = PARTNER); |
| netsh advfirewall firewall add rule | SQL সার্ভার এবং মিররিং (যেমন, 1433 এবং 5022) এর জন্য প্রয়োজনীয় নির্দিষ্ট পোর্টের মাধ্যমে ট্র্যাফিকের অনুমতি দেওয়ার জন্য ফায়ারওয়াল নিয়মগুলি কনফিগার করতে ব্যবহৃত হয়। মিররিং অংশীদারদের মধ্যে যোগাযোগ সক্ষম করার জন্য এটি অপরিহার্য। উদাহরণ: netsh advfirewall firewall add রুল name="SQLPort" dir=in action=allow protocol=TCP localport=1433 |
| socket.create_connection | একটি Python কমান্ড একটি নির্দিষ্ট সার্ভার এবং পোর্টে একটি TCP সংযোগ স্থাপন করতে ব্যবহৃত হয়। এই প্রেক্ষাপটে, নেটওয়ার্কের মাধ্যমে SQL সার্ভারের ইন্সট্যান্স পৌঁছানো যায় কিনা তা পরীক্ষা করার জন্য নিযুক্ত করা হয়। উদাহরণ: socket.create_connection((সার্ভার, পোর্ট), টাইমআউট=5); |
| New-Object System.Net.Sockets.TcpClient | একটি PowerShell কমান্ড পোর্ট সংযোগ পরীক্ষা করার জন্য একটি TCP ক্লায়েন্ট তৈরি করতে ব্যবহৃত হয়। এটি প্রয়োজনীয় মিররিং পোর্টগুলি সার্ভারের মধ্যে খোলা এবং অ্যাক্সেসযোগ্য কিনা তা যাচাই করতে সহায়তা করে। উদাহরণ: $tcpClient = New-Object System.Net.Sockets.TcpClient($server, $port) |
| SELECT * FROM sys.database_mirroring | এই SQL কমান্ডটি ডাটাবেস মিররিং সেশনের স্থিতি পুনরুদ্ধার করে, মিররিং সেটআপ সঠিকভাবে প্রতিষ্ঠিত কিনা বা সমস্যার সম্মুখীন কিনা তা নির্ণয়ে সহায়তা করে। উদাহরণ: sys.database_mirroring থেকে SELECT *; |
মিররিং এরর রেজোলিউশন স্ক্রিপ্টগুলির বিস্তারিত ভাঙ্গন
আগের উদাহরণে দেওয়া প্রথম স্ক্রিপ্ট ব্যবহার করে এসকিউএল সার্ভারে মিররিং ত্রুটি কনফিগার এবং সমাধান করার জন্য কমান্ড। স্ক্রিপ্টের সবচেয়ে গুরুত্বপূর্ণ অংশ হল এর সৃষ্টি এবং কনফিগারেশন . এই শেষ পয়েন্টগুলি হল নেটওয়ার্ক ইন্টারফেস যার মাধ্যমে SQL সার্ভার দৃষ্টান্তগুলি মিররিংয়ের সময় যোগাযোগ করে। আদেশ নিশ্চিত করে যে উভয় সার্ভারের শেষ পয়েন্টগুলি "স্টার্টেড" অবস্থায় আছে, যা যোগাযোগ ঘটতে দেয়। দ পার্টনার সেট করুন কমান্ডটি তারপরে ডাটাবেসগুলিকে লিঙ্ক করতে ব্যবহৃত হয়, অংশীদার সার্ভারের নেটওয়ার্ক ঠিকানা নির্দিষ্ট করে, যা দুটি SQL দৃষ্টান্তকে নেটওয়ার্ক জুড়ে ডেটা মিরর করতে দেয়।
দ্বিতীয় স্ক্রিপ্টটি একটি পাওয়ারশেল সমাধান যা দুটি সার্ভারের মধ্যে নেটওয়ার্ক সংযোগ পরীক্ষা করার জন্য ডিজাইন করা হয়েছে। পাওয়ারশেল ব্যবহার করে একটি TCP ক্লায়েন্ট তৈরি করার নির্দেশ যা নির্দিষ্ট আইপি ঠিকানা এবং পোর্টের সাথে সংযোগ করার চেষ্টা করে। এটি যাচাই করার একটি কার্যকর উপায় যে প্রয়োজনীয় পোর্টগুলি (এসকিউএল সার্ভারের জন্য 1433 এবং মিররিংয়ের জন্য 5022) খোলা এবং অ্যাক্সেসযোগ্য। এই স্ক্রিপ্টটি ফায়ারওয়াল বা নেটওয়ার্কিং সমস্যা নির্ণয়ের জন্য বিশেষভাবে কার্যকর যা দুটি এসকিউএল ইনস্ট্যান্সকে যোগাযোগ থেকে বাধা দিতে পারে, এইভাবে .
তৃতীয় স্ক্রিপ্ট ফায়ারওয়াল সেটিংস পরিচালনা করতে উইন্ডোজ কমান্ড প্রম্পট কমান্ডগুলিকে ব্যবহার করে। বিশেষ করে, দ কমান্ডটি SQL সার্ভার এবং মিররিংয়ের জন্য প্রয়োজনীয় পোর্ট খুলতে ব্যবহৃত হয়। এটি নিশ্চিত করে যে ডাটাবেস ট্রাফিক (পোর্ট 1433) এবং মিররিং ট্র্যাফিক (পোর্ট 5022) উভয়ই দুটি সার্ভারের মধ্যে অবাধে প্রবাহিত হতে পারে। সাময়িকভাবে ফায়ারওয়াল অক্ষম করে দিয়ে কমান্ড, স্ক্রিপ্ট যাচাই করতে পারে যে ফায়ারওয়াল নেটওয়ার্ক অ্যাক্সেস সমস্যার মূল কারণ কিনা। একটি নিরাপদ পরিবেশে সার্ভার যোগাযোগের সমস্যা সমাধান করার সময় এই সমাধানটি বিশেষভাবে গুরুত্বপূর্ণ।
অবশেষে, পাইথন স্ক্রিপ্ট ব্যবহার করে দুটি সার্ভারের মধ্যে একটি নেটওয়ার্ক চেক করার ফাংশন। এই স্ক্রিপ্টটি প্রয়োজনীয় TCP পোর্টগুলির মাধ্যমে সার্ভারগুলি একে অপরের কাছে পৌঁছাতে পারে কিনা তা যাচাই করার একটি দ্রুত এবং কার্যকর উপায় প্রদান করে৷ এটি একটি সংযোগ স্থাপন করার চেষ্টা করে, এবং সফল হলে, নিশ্চিত করে যে নেটওয়ার্ক সেটআপ সঠিক। নেটওয়ার্ক-সম্পর্কিত সমস্যাগুলি পরিচালনা করার ক্ষেত্রে পাইথনের সরলতা এটিকে সংযোগ পরীক্ষা করার জন্য একটি ভাল পছন্দ করে তোলে, বিশেষ করে এমন পরিবেশে যেখানে অন্যান্য সরঞ্জামগুলি অনুপলব্ধ বা ব্যবহার করা কষ্টকর। একসাথে, এই স্ক্রিপ্টগুলি সমাধান করার জন্য একটি ব্যাপক পদ্ধতির প্রস্তাব করে ত্রুটি এবং SQL সার্ভার দৃষ্টান্তগুলির মধ্যে মসৃণ যোগাযোগ নিশ্চিত করা।
সমাধান 1: SQL সার্ভার ডেটাবেস মিররিং-এ ত্রুটি 1418 ফিক্সিং (T-SQL অ্যাপ্রোচ)
এই সমাধানটি ট্রানজ্যাক্ট-এসকিউএল (টি-এসকিউএল) ব্যবহার করে ডাটাবেস মিররিং সমস্যাগুলিকে শেষ পয়েন্ট কনফিগার করে, সংযোগ প্রমাণীকরণ করে এবং সার্ভারের ঠিকানা যাচাই করে।
-- Enable server to listen on the specified portsALTER ENDPOINT [Mirroring]STATE = STARTED;GO-- Ensure both databases are in FULL recovery modeALTER DATABASE YourDatabaseNameSET RECOVERY FULL;GO-- Create mirroring endpoints on both serversCREATE ENDPOINT [Mirroring_Endpoint]STATE = STARTEDAS TCP (LISTENER_PORT = 5022)FOR DATABASE_MIRRORING (ROLE = PARTNER);GO-- Grant CONNECT permissions to the login accountGRANT CONNECT ON ENDPOINT::[Mirroring_Endpoint]TO [DOMAIN\UserAccount];GO-- Set up mirroring using T-SQL commandALTER DATABASE YourDatabaseNameSET PARTNER = 'TCP://192.168.0.85:5022';GO-- Verify the status of the mirroring configurationSELECT * FROM sys.database_mirroring;GO
সমাধান 2: SQL সার্ভার পোর্ট অ্যাক্সেসিবিলিটি পরীক্ষা করার জন্য পাওয়ারশেল স্ক্রিপ্ট
এই সমাধানটি সার্ভারের মধ্যে পোর্ট সংযোগ পরীক্ষা করার জন্য PowerShell ব্যবহার করে, প্রয়োজনীয় পোর্টগুলি খোলা এবং শোনার বিষয়টি নিশ্চিত করে।
# Define server IPs and ports$server1 = "192.168.0.80"$server2 = "192.168.0.85"$port = 5022# Function to test port connectivityfunction Test-Port {param([string]$server, [int]$port)try {$tcpClient = New-Object System.Net.Sockets.TcpClient($server, $port)Write-Host "$server on port $port is reachable."$tcpClient.Close()} catch {Write-Host "$server on port $port is not reachable."}}# Test both serversTest-Port -server $server1 -port $portTest-Port -server $server2 -port $port
সমাধান 3: SQL সার্ভার ত্রুটি 1418 ফিক্স (ফায়ারওয়াল কনফিগারেশন)
এই পদ্ধতিটি ফায়ারওয়াল কনফিগারেশন পরীক্ষা করার জন্য উইন্ডোজ কমান্ড প্রম্পট ব্যবহার করে, নিশ্চিত করে যে প্রয়োজনীয় পোর্ট (1433, 5022) উভয় সার্ভারে খোলা আছে।
-- Check if SQL Server and mirroring ports are opennetsh advfirewall firewall add rule name="SQLPort" dir=in action=allow protocol=TCP localport=1433netsh advfirewall firewall add rule name="MirrorPort" dir=in action=allow protocol=TCP localport=5022-- Disable firewall temporarily for testing purposesnetsh advfirewall set allprofiles state off-- Enable firewall again after testingnetsh advfirewall set allprofiles state on
সমাধান 4: সার্ভারের মধ্যে TCP সংযোগ যাচাই করতে পাইথন স্ক্রিপ্ট
এসকিউএল সার্ভার দৃষ্টান্তগুলি TCP সংযোগ পরীক্ষা করে নেটওয়ার্কে যোগাযোগ করতে পারে কিনা তা যাচাই করতে এই সমাধানটি পাইথন ব্যবহার করে।
import socket# Define server IPs and portserver1 = '192.168.0.80'server2 = '192.168.0.85'port = 5022# Function to check connectivitydef check_connection(server, port):try:sock = socket.create_connection((server, port), timeout=5)print(f'Connection successful to {server}:{port}')sock.close()except socket.error:print(f'Cannot connect to {server}:{port}')# Check both serverscheck_connection(server1, port)check_connection(server2, port)
সমাধান 5: SQL সার্ভার ম্যানেজমেন্ট স্টুডিও (SSMS) GUI কনফিগারেশন
এই সমাধানটি ব্যবহারকারীদের জন্য SSMS GUI ব্যবহার করে মিররিং সেট আপ করে যারা কমান্ড-লাইন ইন্টারফেস ব্যবহার করতে পছন্দ করে না।
1. Open SQL Server Management Studio (SSMS).2. Right-click your database -> Tasks -> Mirror...3. Click Configure Security and follow the wizard.4. Ensure both Principal and Mirror servers are correct.5. Set the port for the mirroring endpoints to 5022.6. Complete the configuration and click Start Mirroring.7. Verify the mirroring status by checking the "Database Properties" window.
SQL সার্ভার মিররিং-এ নেটওয়ার্ক এবং নিরাপত্তা চ্যালেঞ্জগুলি অন্বেষণ করা
সেট আপ করার সময় , নেটওয়ার্ক কনফিগারেশন এবং নিরাপত্তা সেটিংসের ভূমিকা প্রায়ই উপেক্ষা করা একটি দিক। ত্রুটি 1418, নির্দেশ করে যে সার্ভার নেটওয়ার্ক ঠিকানায় পৌঁছানো যাবে না, প্রায়শই অন্তর্নিহিত নেটওয়ার্ক সমস্যার কারণে হয়। এমনকি যখন সঠিক পোর্টগুলি (1433 এবং 5022) খোলা হয় এবং ফায়ারওয়ালগুলি অক্ষম করা হয়, অন্যান্য নেটওয়ার্ক উপাদান যেমন রাউটিং এবং DNS কনফিগারেশন যোগাযোগের ব্যর্থতার কারণ হতে পারে। এটি নিশ্চিত করা গুরুত্বপূর্ণ যে উভয় সার্ভার একে অপরের আইপি ঠিকানাগুলি সঠিকভাবে সমাধান করে, বিশেষ করে মাল্টি-সাবনেট পরিবেশে।
আরেকটি চ্যালেঞ্জ জড়িত মিররিং সেটআপের সময় সেটিংস। ডেটাবেস মিররিং এর জন্য প্রিন্সিপাল এবং মিরর সার্ভার উভয়ই সার্টিফিকেট বা ডোমেন-ভিত্তিক প্রমাণীকরণ (Kerberos) এর মাধ্যমে একে অপরকে প্রমাণীকরণ করতে হবে। যদি এই সেটআপটি সঠিকভাবে কনফিগার করা না হয়, বা দুটি সার্ভারের মধ্যে নিরাপত্তা প্রোটোকলের মধ্যে কোনো মিল না থাকলে, ত্রুটি 1418 ঘটতে পারে। অতিরিক্তভাবে, SQL সার্ভার পরিষেবা অ্যাকাউন্টের উভয় মেশিনেই সঠিক অনুমতি থাকতে হবে, বিশেষ করে মিররিং এন্ডপয়েন্টগুলিতে অ্যাক্সেস।
অবশেষে, অপারেটিং সিস্টেমের পছন্দও মিররিং কীভাবে আচরণ করে তা প্রভাবিত করতে পারে। বিভিন্ন উইন্ডোজ সংস্করণ টিসিপি সংযোগগুলিকে ভিন্নভাবে পরিচালনা করতে পারে, বিশেষ করে কীভাবে তারা ফায়ারওয়াল নিয়ম এবং নেটওয়ার্ক ট্র্যাফিক রাউটিং পরিচালনা করে। যেকোনো সার্ভারের অপারেটিং সিস্টেমে পুরানো বা অমিলযুক্ত নেটওয়ার্ক ড্রাইভার থাকলে, সার্ভারের মধ্যে যোগাযোগ ব্যর্থ হতে পারে। অত্যাধুনিক প্যাচগুলির সাথে OS আপ টু ডেট আছে এবং যথাযথ পরিষেবাগুলি চলমান রয়েছে তা নিশ্চিত করা ত্রুটি 1418-এর মতো সংযোগ সমস্যাগুলি সমাধানের জন্য অত্যন্ত গুরুত্বপূর্ণ৷
- SQL সার্ভার মিররিং এ ত্রুটি 1418 এর কারণ কি?
- ত্রুটি 1418 সাধারণত দুটি সার্ভারের মধ্যে যোগাযোগের ব্যর্থতার কারণে ঘটে। এটি ফায়ারওয়াল সেটিংসের কারণে হতে পারে, ভুল , বা নেটওয়ার্ক সংযোগ সমস্যা।
- আমার পোর্টগুলি SQL সার্ভার মিররিংয়ের জন্য খোলা আছে কিনা তা আমি কীভাবে পরীক্ষা করতে পারি?
- ব্যবহার করুন কমান্ড বা একটি স্ক্রিপ্ট যেমন পোর্ট 1433 এবং 5022 খোলা আছে কিনা তা পরীক্ষা করার জন্য পাওয়ারশেলে।
- মিরর করার জন্য উভয় সার্ভার একই ডোমেনে থাকা দরকার?
- না, তবে ডোমেন প্রমাণীকরণ প্রক্রিয়াটিকে সহজ করতে পারে। অন্যথায়, আপনাকে সুরক্ষিত করার জন্য সার্টিফিকেট-ভিত্তিক প্রমাণীকরণ ব্যবহার করতে হবে .
- ডাটাবেস মিররিং এ এন্ডপয়েন্টের ভূমিকা কি?
- দ কমান্ড নেটওয়ার্ক ইন্টারফেস তৈরি করে যা এসকিউএল সার্ভার দৃষ্টান্তগুলিকে মিররিংয়ের সময় যোগাযোগ করতে দেয়। প্রতিটি সার্ভারের একটি কার্যকরী মিররিং এন্ডপয়েন্ট থাকতে হবে।
- আমি বিভিন্ন SQL সার্ভার সংস্করণে ডাটাবেস মিরর করতে পারি?
- না, ডাটাবেস মিররিংয়ের জন্য SQL সার্ভারের উভয় দৃষ্টান্তই একই সংস্করণ এবং সংস্করণে সঠিকভাবে কাজ করতে হবে।
ডাটাবেস মিররিং এরর যেমন Error 1418 প্রায়ই সার্ভারের মধ্যে নেটওয়ার্কিং সমস্যার কারণে হয়। সঠিক পোর্টগুলি খোলা আছে, ফায়ারওয়ালগুলি কনফিগার করা হয়েছে এবং এন্ডপয়েন্টগুলি সঠিকভাবে সেট আপ করা হয়েছে তা নিশ্চিত করা এই সমস্যার সমাধান করতে পারে।
উপরন্তু, PowerShell-এর মতো টুলগুলির মাধ্যমে নেটওয়ার্ক অ্যাক্সেস যাচাই করা এবং সার্ভারের মধ্যে প্রমাণীকরণ প্রোটোকলগুলি সামঞ্জস্যপূর্ণ নিশ্চিত করা আপনার সাফল্যের সম্ভাবনাকে উন্নত করবে। এই পদক্ষেপগুলি অনুসরণ করা উচ্চ-কর্মক্ষমতা ক্রিয়াকলাপের জন্য নির্ভরযোগ্য SQL সার্ভার মিররিং অর্জনে সহায়তা করতে পারে।
- এসকিউএল সার্ভার মিররিং কনফিগারেশন এবং সমস্যা সমাধানের বিশদ বিবরণ, এরর 1418 এবং এন্ডপয়েন্ট সেটিংস সহ এখানে পাওয়া যাবে মাইক্রোসফ্ট এসকিউএল ডকুমেন্টেশন .
- SQL সার্ভার মিররিংয়ের জন্য ফায়ারওয়াল নিয়ম এবং নেটওয়ার্ক সমস্যা সমাধান কনফিগার করার জন্য একটি বিস্তৃত নির্দেশিকা এখানে অ্যাক্সেস করা যেতে পারে উইন্ডোজ ফায়ারওয়াল কনফিগারেশন .
- SQL সার্ভার দৃষ্টান্তগুলির মধ্যে পোর্ট টেস্টিং এবং নেটওয়ার্ক যাচাইকরণের জন্য PowerShell স্ক্রিপ্ট পাওয়া যায় পাওয়ারশেল ডকুমেন্টেশন .
- সার্ভার সংযোগ পরীক্ষায় ব্যবহৃত পাইথন সকেট প্রোগ্রামিং কৌশলগুলির জন্য, দেখুন পাইথন সকেট মডিউল .