MySQL রিপ্লিকেশনে বাইনারি লগ ফরম্যাট (binlog_format) سه প্রকার হতে পারে: ROW, STATEMENT, বা MIXED। বর্তমান সেটিং চেক ও পরিবর্তন করতে SHOW VARIABLES ব্যবহার করুন।
বর্তমান রিপ্লিকেশন টাইপ চেক করুন
SHOW GLOBAL VARIABLES LIKE 'binlog_format';
নমুনা আউটপুট
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| binlog_format | ROW |
+---------------+-------+
রিপ্লিকেশন টাইপ পরিবর্তন করা
গ্লোবালি পরিবর্তন (সার্ভার রিস্টার্ট পর্যন্ত টিকবে)
SET GLOBAL binlog_format = 'STATEMENT';
সেশন স্তরে পরিবর্তন (শুধু বর্তমান কানেকশনের জন্য)
SET SESSION binlog_format = 'ROW';
স্থায়ী পরিবর্তন (my.cnf / my.ini)
[mysqld]
binlog_format = ROW
তিনটি ফরম্যাটের পার্থক্য
| ফরম্যাট | বর্ণনা | ফायदা | অপসাদন |
|---|---|---|---|
| ROW | প্রতিটি সারি পরিবর্তন লগ করে | সর্বাধিক নিরাপদ, ডেটা কনসিস্টেন্সি নিশ্চিত | লগ আকার বড়, পারফরম্যান্স প্রভাবিত হতে পারে |
| STATEMENT | SQL স্টেটমেন্ট লগ করে | লগ আকার ছোট, পারফরম্যান্স ভালো | Non-deterministic ক্যোয়ারির জন্য অননিরাপদ |
| MIXED | প্রয়োজন অনুযায়ী ROW/STATEMENT স্যুইচ করে | স متعادل সমাধান | কয়েকশন জটিল লজিকের কারণে বাগ হতে পারে |
সুপারিশ
MySQL 5.7+ এবং 8.0-এ ডিফল্ট ROW। অধিকাংশ প্রোডাকশন পরিবেশে ROW বা MIXED ব্যবহার করা উচিত ডেটা ইন্টিগ্রিটির জন্য।
সেশন পরিবর্তন যাচাই
SET SESSION binlog_format = 'ROW';
SHOW VARIABLES LIKE 'binlog_format';
আউটপুট
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| binlog_format | ROW |
+---------------+-------+