Details
-
Bug
-
Status: Closed (View Workflow)
-
Major
-
Resolution: Fixed
-
10.0.5
-
install master/slave replication
Description
When you run this command in a slave
set global slave_parallel_threads=10;
you get a rightful error
ERROR 1198 (HY000): This operation cannot be performed as you have a running slave ''; run STOP SLAVE '' first |
However, if you run the same command in a master, the statement is accepted, and the thread started.
master [localhost] {msandbox} ((none)) > select ID, DB, state, time_ms, memory_used from information_schema .PROCESSLIST where USER='system user'; |
Empty set (0.01 sec) |
|
master [localhost] {msandbox} ((none)) > set global slave_parallel_threads=10; |
Query OK, 0 rows affected (0.00 sec) |
|
master [localhost] {msandbox} ((none)) > select ID, DB, state, time_ms, memory_used from information_schema .PROCESSLIST where USER='system user'; |
+----+------+----------------------------------+----------+-------------+ |
| ID | DB | state | time_ms | memory_used |
|
+----+------+----------------------------------+----------+-------------+ |
| 47 | NULL | Waiting for work from SQL thread | 2207.683 | 34704 | |
| 46 | NULL | Waiting for work from SQL thread | 2207.686 | 34704 | |
| 45 | NULL | Waiting for work from SQL thread | 2207.722 | 34704 | |
| 44 | NULL | Waiting for work from SQL thread | 2207.723 | 34704 | |
| 43 | NULL | Waiting for work from SQL thread | 2207.754 | 34704 | |
| 42 | NULL | Waiting for work from SQL thread | 2207.757 | 34704 | |
| 41 | NULL | Waiting for work from SQL thread | 2207.765 | 34704 | |
| 40 | NULL | Waiting for work from SQL thread | 2207.801 | 34704 | |
| 39 | NULL | Waiting for work from SQL thread | 2207.843 | 34704 | |
| 38 | NULL | Waiting for work from SQL thread | 2207.851 | 34704 | |
+----+------+----------------------------------+----------+-------------+ |
10 rows in set (0.01 sec) |
I agree that MySQL 5.6 behavior is quite different.
What I wanted to stress is that the server should not start any task related to slave role unless it is configured as such.
This, is also how Tungsten Replicator works. You can configure a service to run parallel threads, but the threads are only enabled if the service role changes to 'slave'. When a slave is promoted to master, it shelves its additional threads and resumes working in a single thread.
I would expect the same thing from any server. Tasks that are only valid for a slave should not be enabled by default when the service is running as master.