কম্পিউটার টিউটোরিয়াল

MySQL রিপ্লিকেশন: নির্দিষ্ট SQL স্টেটমেন্ট স্লেভে রিপ্লিকেট রোধ করা


sql_log_bin = 0 সেট করুন

সেশন লেভেলে SET sql_log_bin = 0 করলে সেই সেশনের লিখ operação (INSERT/UPDATE/DELETE) বাইনারি লগে লেখা হয় না, ফলে স্লেভে রিপ্লিকেট হয় না। কাজ শেষে SET sql_log_bin = 1 করুন।

সিনট্যাক্স

SET sql_log_bin = 0;
-- আপনার লিখ operation গুলো
SET sql_log_bin = 1;

উদাহরণ

টেবিল তৈরি ও ডেটা

mysql> create table SQLStatementsDemo (
    -> UserId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> UserName varchar(20)
    -> );
Query OK, 0 rows affected (0.79 sec)

mysql> insert into SQLStatementsDemo(UserName) values('John');
Query OK, 1 row affected (0.18 sec)
... (মোট ৬ রো) ...
mysql> insert into SQLStatementsDemo(UserName) values('David');
Query OK, 1 row affected (0.14 sec)

রিপ্লিকেশন বন্ধ করে আপডেট/ইনসার্ট/ডিলিট

mysql> SET sql_log_bin = 0;
Query OK, 0 rows affected (0.00 sec)

mysql> UPDATE SQLStatementsDemo SET UserName = 'Maxwell' WHERE UserId = 6;
Query OK, 1 row affected (0.05 sec)

mysql> INSERT INTO SQLStatementsDemo(UserName) VALUES ('Chris');
Query OK, 1 row affected (0.16 sec)

mysql> DELETE FROM SQLStatementsDemo WHERE UserId = 7;
Query OK, 1 row affected (0.10 sec)

mysql> SET sql_log_bin = 1;
Query OK, 0 rows affected (0.00 sec)

সতর্কতা: এই পদ্ধতি শুধু সেশন-স্কোপড। গ্লোবালি বাইনারি লগিং বন্ধ করতে SET GLOBAL sql_log_bin = OFF (SUPER privilege দরকার)। রিপ্লিকেশন ব্রেক না হয় সেটা নিশ্চিত করুন।

  1. MySQL-এ নির্দিষ্ট তারিখের রেকর্ড গণনা করা (COUNT + DATE)

  2. MySQL-এ নির্দিষ্ট সেলের কন্টেন্ট আপডেট করা

  3. MySQL কমান্ড-লাইন ক্লায়েন্ট

  4. MySQL ক্লায়েন্টে টেক্সট ফাইল থেকে SQL স্টেটমেন্ট এক্সিকিউট করা