Spec-Zone .ru
спецификации, руководства, описания, API
|
Этот раздел описывает параметры сервера и системные переменные, которые можно использовать на главных серверах
репликации. Можно определить опции или на командной
строке или в файле
опции. Можно определить системное использование значений переменных SET
.
На ведущем устройстве и каждом ведомом устройстве, следует использовать server-id
опция, чтобы установить уникальный ID репликации. Для каждого сервера
следует выбрать уникальное положительное целое число в диапазоне от 1 до 232 – 1, и каждый ID должен
отличаться от любого ID в использовании любым другим ведущим устройством репликации или ведомым устройством.
Пример: server-id=3
.
Для опций, используемых на ведущем устройстве для того, чтобы управлять двоичным журналированием, см. Раздел 16.1.4.4, "Двоичные Опции Журнала и Переменные".
Системные переменные используются на ведущих устройствах репликации. Следующие системные переменные используются в управлении ведущими устройствами репликации:
Системное Имя переменной | auto_increment_increment
|
||
Переменный Контекст | Глобальная переменная, Сеанс | ||
Динамическая Переменная | Да | ||
Разрешенные Значения | |||
Ввести | numeric |
||
Значение по умолчанию | 1 |
||
Диапазон | 1 .. 65535 |
auto_increment_increment
и auto_increment_offset
предназначаются для использования с репликацией от ведущего устройства к ведущему устройству, и
может использоваться, чтобы управлять работой AUTO_INCREMENT
столбцы. У
обеих переменных есть глобальная переменная и значения сеанса, и каждый может принять целочисленное
значение между 1 и 65 535 включительно. Установка значения любой из этих двух переменных к 0
причинам его значение, которое будет установлено в 1 вместо этого. Попытка установить значение любой
из этих двух переменных к целому числу, больше чем 65 535 или меньше чем 0 причин его значение,
которое будет установлено в 65 535 вместо этого. Попытка установить значение auto_increment_increment
или auto_increment_offset
к нецелому числу значение дает начало
ошибке, и фактическое значение переменной остается неизменным.
auto_increment_increment
предназначается для использования с
MySQL Cluster, который в настоящий момент не поддерживается в MySQL 5.7.
Эти две переменные влияют AUTO_INCREMENT
поведение столбца следующим
образом:
auto_increment_increment
управляет интервалом между
последовательными значениями столбцов. Например:
mysql>SHOW VARIABLES LIKE 'auto_inc%';
+--------------------------+-------+| Variable_name | Value |+--------------------------+-------+| auto_increment_increment | 1 || auto_increment_offset | 1 |+--------------------------+-------+2 rows in set (0.00 sec)mysql>CREATE TABLE autoinc1
->(col INT NOT NULL AUTO_INCREMENT PRIMARY KEY);
Query OK, 0 rows affected (0.04 sec)mysql>SET @@auto_increment_increment=10;
Query OK, 0 rows affected (0.00 sec)mysql>SHOW VARIABLES LIKE 'auto_inc%';
+--------------------------+-------+| Variable_name | Value |+--------------------------+-------+| auto_increment_increment | 10 || auto_increment_offset | 1 |+--------------------------+-------+2 rows in set (0.01 sec)mysql>INSERT INTO autoinc1 VALUES (NULL), (NULL), (NULL), (NULL);
Query OK, 4 rows affected (0.00 sec)Records: 4 Duplicates: 0 Warnings: 0mysql>SELECT col FROM autoinc1;
+-----+| col |+-----+| 1 || 11 || 21 || 31 |+-----+4 rows in set (0.00 sec)
auto_increment_offset
определяет начальную точку для AUTO_INCREMENT
значение столбца. Рассмотрите следующий,
предполагая, что эти операторы выполняются во время того же самого сеанса как пример, данный
в описании для auto_increment_increment
:
mysql>SET @@auto_increment_offset=5;
Query OK, 0 rows affected (0.00 sec)mysql>SHOW VARIABLES LIKE 'auto_inc%';
+--------------------------+-------+| Variable_name | Value |+--------------------------+-------+| auto_increment_increment | 10 || auto_increment_offset | 5 |+--------------------------+-------+2 rows in set (0.00 sec)mysql>CREATE TABLE autoinc2
->(col INT NOT NULL AUTO_INCREMENT PRIMARY KEY);
Query OK, 0 rows affected (0.06 sec)mysql>INSERT INTO autoinc2 VALUES (NULL), (NULL), (NULL), (NULL);
Query OK, 4 rows affected (0.00 sec)Records: 4 Duplicates: 0 Warnings: 0mysql>SELECT col FROM autoinc2;
+-----+| col |+-----+| 5 || 15 || 25 || 35 |+-----+4 rows in set (0.02 sec)
Если значение auto_increment_offset
больше чем тот из auto_increment_increment
, значение auto_increment_offset
игнорируется.
Если один или обе из этих переменных изменяются и затем новые строки, вставленные в таблицу,
содержащую AUTO_INCREMENT
столбец, результаты могут казаться
парадоксальными потому что серия AUTO_INCREMENT
значения вычисляются
без отношения к любым значениям, уже существующим в столбце, и следующее вставленное значение
является наименьшим количеством значения в ряду, который больше чем максимальное существующее
значение в AUTO_INCREMENT
столбец. Другими словами ряд вычисляется как
так:
auto_increment_offset
+ N
×
auto_increment_increment
где N
положительное целочисленное значение в ряду [1, 2,
3...]. Например:
mysql>SHOW VARIABLES LIKE 'auto_inc%';
+--------------------------+-------+| Variable_name | Value |+--------------------------+-------+| auto_increment_increment | 10 || auto_increment_offset | 5 |+--------------------------+-------+2 rows in set (0.00 sec)mysql>SELECT col FROM autoinc1;
+-----+| col |+-----+| 1 || 11 || 21 || 31 |+-----+4 rows in set (0.00 sec)mysql>INSERT INTO autoinc1 VALUES (NULL), (NULL), (NULL), (NULL);
Query OK, 4 rows affected (0.00 sec)Records: 4 Duplicates: 0 Warnings: 0mysql>SELECT col FROM autoinc1;
+-----+| col |+-----+| 1 || 11 || 21 || 31 || 35 || 45 || 55 || 65 |+-----+8 rows in set (0.00 sec)
Значения, показанные для auto_increment_increment
и auto_increment_offset
генерируйте серию 5 + N
× 10, то есть, [5, 15, 25, 35, 45...]. Самое большое
значение, существующее в col
столбец до INSERT
31, и следующее доступное значение в AUTO_INCREMENT
ряд 35, таким образом, вставленные значения для col
начните в той точке, и результаты как показано для SELECT
запрос.
Не возможно ограничить эффекты этих двух переменных к единственной таблице, и таким образом они не
берут место последовательностей, предлагаемых некоторыми другими системами управления базами данных;
эти переменные управляют поведением всех AUTO_INCREMENT
столбцы во
всех таблицах на сервере MySQL. Если глобальное значение или
переменной устанавливается, ее эффекты сохраняются, пока глобальное значение не изменяется или
переопределяется, устанавливая значение сеанса, или пока mysqld перезапускается. Если локальное значение
устанавливается, новое значение влияет AUTO_INCREMENT
столбцы для всех
таблиц, в которые новые строки вставляются текущим пользователем для продолжительности сеанса, если
значения не изменяются во время того сеанса.
Значение по умолчанию auto_increment_increment
1. См. Раздел
16.4.1.1, "Репликация и AUTO_INCREMENT
".
Системное Имя переменной | auto_increment_offset
|
||
Переменный Контекст | Глобальная переменная, Сеанс | ||
Динамическая Переменная | Да | ||
Разрешенные Значения | |||
Ввести | numeric |
||
Значение по умолчанию | 1 |
||
Диапазон | 1 .. 65535 |
У этой переменной есть значение по умолчанию 1. Для подробных сведений см. описание для auto_increment_increment
.
auto_increment_offset
предназначается для использования с MySQL
Cluster, который в настоящий момент не поддерживается в MySQL 5.7.