Browse Source
MDEV-6247: Merge 10.0-galera to 10.1.
MDEV-6247: Merge 10.0-galera to 10.1.
Merged lp:maria/maria-10.0-galera up to revision 3880.
Added a new functions to handler API to forcefully abort_transaction,
producing fake_trx_id, get_checkpoint and set_checkpoint for XA. These
were added for future possiblity to add more storage engines that
could use galera replication.
pull/9/head
330 changed files with 28124 additions and 318 deletions
-
1.bzrignore
-
2BUILD/SETUP.sh
-
11BUILD/compile-amd64-debug-wsrep
-
9BUILD/compile-amd64-wsrep
-
12BUILD/compile-pentium-debug-wsrep
-
11BUILD/compile-pentium-wsrep
-
28BUILD/compile-pentium64-wsrep
-
11CMakeLists.txt
-
488Docs/README-wsrep
-
1client/client_priv.h
-
5client/mysql_upgrade.c
-
6client/mysqlcheck.c
-
49client/mysqldump.c
-
7cmake/cpack_rpm.cmake
-
22cmake/plugin.cmake
-
76cmake/wsrep.cmake
-
2debian/dist/Debian/control
-
2debian/dist/Ubuntu/control
-
2include/mysql/service_logger.h
-
3include/mysqld_default_groups.h
-
13include/thr_lock.h
-
58include/wsrep.h
-
9mysql-test/extra/binlog_tests/binlog.test
-
10mysql-test/include/galera_cluster.inc
-
45mysql-test/include/galera_connect.inc
-
100mysql-test/include/galera_diff.inc
-
25mysql-test/include/galera_end.inc
-
26mysql-test/include/galera_init.inc
-
6mysql-test/include/have_innodb_disallow_writes.inc
-
8mysql-test/include/have_wsrep.inc
-
9mysql-test/include/have_wsrep_enabled.inc
-
1mysql-test/include/mtr_check.sql
-
8mysql-test/include/mtr_warnings.sql
-
7mysql-test/include/not_wsrep.inc
-
3mysql-test/include/write_result_to_file.inc
-
3mysql-test/lib/My/ConfigFactory.pm
-
3mysql-test/lib/mtr_cases.pm
-
58mysql-test/mysql-test-run.pl
-
2mysql-test/r/have_wsrep.require
-
1mysql-test/r/mysql_tzinfo_to_sql_symlink.result
-
125mysql-test/r/mysqld--help.result
-
2mysql-test/r/not_wsrep.require
-
12mysql-test/suite/binlog/r/binlog_row_binlog.result
-
12mysql-test/suite/binlog/r/binlog_stm_binlog.result
-
28mysql-test/suite/galera/galera_2nodes.cnf
-
1mysql-test/suite/galera/my.cnf
-
30mysql-test/suite/galera/r/basic.result
-
24mysql-test/suite/galera/r/galera_sst_mode.result
-
17mysql-test/suite/galera/r/grant.result
-
23mysql-test/suite/galera/r/partition.result
-
47mysql-test/suite/galera/r/unique_key.result
-
26mysql-test/suite/galera/t/basic.test
-
43mysql-test/suite/galera/t/galera_sst_mode.test
-
25mysql-test/suite/galera/t/grant.test
-
31mysql-test/suite/galera/t/partition.test
-
54mysql-test/suite/galera/t/unique_key.test
-
44mysql-test/suite/innodb/r/innodb-autoinc.result
-
44mysql-test/suite/innodb/t/innodb-autoinc.test
-
2mysql-test/suite/parts/r/partition_exch_qa_10.result
-
2mysql-test/suite/parts/t/partition_exch_qa_10.test
-
2mysql-test/suite/percona/innodb_sys_index.result
-
3mysql-test/suite/percona/innodb_sys_index.test
-
6mysql-test/suite/perfschema/r/rpl_statements.result
-
4mysql-test/suite/perfschema/t/rpl_statements.test
-
45mysql-test/suite/sys_vars/r/innodb_disallow_writes_basic.result
-
8mysql-test/suite/sys_vars/r/wsrep_auto_increment_control_basic.result
-
8mysql-test/suite/sys_vars/r/wsrep_causal_reads_basic.result
-
8mysql-test/suite/sys_vars/r/wsrep_certify_nonpk_basic.result
-
45mysql-test/suite/sys_vars/r/wsrep_cluster_address_basic.result
-
7mysql-test/suite/sys_vars/r/wsrep_cluster_name_basic.result
-
8mysql-test/suite/sys_vars/r/wsrep_convert_lock_to_trx_basic.result
-
48mysql-test/suite/sys_vars/r/wsrep_data_home_dir_basic.result
-
6mysql-test/suite/sys_vars/r/wsrep_dbug_option_basic.result
-
8mysql-test/suite/sys_vars/r/wsrep_debug_basic.result
-
3mysql-test/suite/sys_vars/r/wsrep_desync_basic.result
-
8mysql-test/suite/sys_vars/r/wsrep_drupal_282555_workaround_basic.result
-
8mysql-test/suite/sys_vars/r/wsrep_forced_binlog_format_basic.result
-
8mysql-test/suite/sys_vars/r/wsrep_load_data_splitting_basic.result
-
8mysql-test/suite/sys_vars/r/wsrep_log_conflicts_basic.result
-
17mysql-test/suite/sys_vars/r/wsrep_max_ws_rows_basic.result
-
17mysql-test/suite/sys_vars/r/wsrep_max_ws_size_basic.result
-
18mysql-test/suite/sys_vars/r/wsrep_mysql_replication_bundle_basic.result
-
45mysql-test/suite/sys_vars/r/wsrep_node_address_basic.result
-
45mysql-test/suite/sys_vars/r/wsrep_node_incoming_address_basic.result
-
6mysql-test/suite/sys_vars/r/wsrep_node_name_basic.result
-
6mysql-test/suite/sys_vars/r/wsrep_notify_cmd_basic.result
-
8mysql-test/suite/sys_vars/r/wsrep_on_basic.result
-
12mysql-test/suite/sys_vars/r/wsrep_osu_method_basic.result
-
4mysql-test/suite/sys_vars/r/wsrep_provider_basic.result
-
4mysql-test/suite/sys_vars/r/wsrep_provider_options_basic.result
-
49mysql-test/suite/sys_vars/r/wsrep_recover_basic.result
-
8mysql-test/suite/sys_vars/r/wsrep_replicate_myisam_basic.result
-
8mysql-test/suite/sys_vars/r/wsrep_restart_slave_basic.result
-
8mysql-test/suite/sys_vars/r/wsrep_retry_autocommit_basic.result
-
45mysql-test/suite/sys_vars/r/wsrep_slave_fk_checks_basic.result
-
20mysql-test/suite/sys_vars/r/wsrep_slave_threads_basic.result
-
45mysql-test/suite/sys_vars/r/wsrep_slave_uk_checks_basic.result
-
3mysql-test/suite/sys_vars/r/wsrep_sst_auth_basic.result
-
10mysql-test/suite/sys_vars/r/wsrep_sst_donor_basic.result
-
8mysql-test/suite/sys_vars/r/wsrep_sst_donor_rejects_queries_basic.result
@ -0,0 +1,11 @@ |
|||
#! /bin/sh |
|||
|
|||
path=`dirname $0` |
|||
. "$path/SETUP.sh" |
|||
|
|||
extra_flags="$amd64_cflags $debug_cflags -g -O0 $wsrep_cflags" |
|||
c_warnings="$c_warnings $debug_extra_warnings" |
|||
cxx_warnings="$cxx_warnings $debug_extra_warnings" |
|||
extra_configs="$amd64_configs $debug_configs $wsrep_configs --with-wsrep" |
|||
|
|||
. "$path/FINISH.sh" |
|||
@ -0,0 +1,9 @@ |
|||
#! /bin/sh |
|||
|
|||
path=`dirname $0` |
|||
. "$path/SETUP.sh" |
|||
|
|||
extra_flags="$amd64_cflags $fast_cflags -g $wsrep_cflags" |
|||
extra_configs="$amd64_configs $wsrep_configs --with-wsrep" |
|||
|
|||
. "$path/FINISH.sh" |
|||
@ -0,0 +1,12 @@ |
|||
#! /bin/sh -x |
|||
|
|||
path=`dirname $0` |
|||
set -- "$@" --with-debug=full |
|||
. "$path/SETUP.sh" |
|||
|
|||
extra_flags="$pentium_cflags $debug_cflags -g -O0 $wsrep_cflags" |
|||
c_warnings="$c_warnings $debug_extra_warnings" |
|||
cxx_warnings="$cxx_warnings $debug_extra_warnings" |
|||
extra_configs="$pentium_configs $debug_configs $wsrep_configs --with-wsrep" |
|||
|
|||
. "$path/FINISH.sh" |
|||
@ -0,0 +1,11 @@ |
|||
#! /bin/sh |
|||
|
|||
path=`dirname $0` |
|||
. "$path/SETUP.sh" |
|||
|
|||
extra_flags="$pentium_cflags $fast_cflags $wsrep_cflags" |
|||
extra_configs="$pentium_configs $wsrep_configs --with-wsrep" |
|||
|
|||
#strip=yes |
|||
|
|||
. "$path/FINISH.sh" |
|||
@ -0,0 +1,28 @@ |
|||
#! /bin/sh |
|||
|
|||
# Copyright (C) 2006, 2007 MySQL AB |
|||
# |
|||
# This program is free software; you can redistribute it and/or |
|||
# modify it under the terms of the GNU Library General Public |
|||
# License as published by the Free Software Foundation; version 2 |
|||
# of the License. |
|||
# |
|||
# This program is distributed in the hope that it will be useful, |
|||
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
|||
# Library General Public License for more details. |
|||
# |
|||
# You should have received a copy of the GNU Library General Public |
|||
# License along with this library; if not, write to the Free |
|||
# Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, |
|||
# MA 02111-1307, USA |
|||
|
|||
path=`dirname $0` |
|||
. "$path/SETUP.sh" |
|||
|
|||
extra_flags="$pentium64_cflags $fast_cflags -g $wsrep_cflags" |
|||
extra_configs="$pentium_configs $static_link $wsrep_configs --with-wsrep" |
|||
CC="$CC --pipe" |
|||
strip=yes |
|||
|
|||
. "$path/FINISH.sh" |
|||
@ -0,0 +1,488 @@ |
|||
Codership Oy |
|||
http://www.codership.com |
|||
<info@codership.com> |
|||
|
|||
DISCLAIMER |
|||
|
|||
THIS SOFTWARE PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER |
|||
EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
|||
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. |
|||
IN NO EVENT SHALL CODERSHIP OY BE HELD LIABLE TO ANY PARTY FOR ANY DAMAGES |
|||
RESULTING DIRECTLY OR INDIRECTLY FROM THE USE OF THIS SOFTWARE. |
|||
|
|||
Trademark Information. |
|||
|
|||
MySQL is a trademark or registered trademark of Oracle and/or its affiliates. |
|||
Other trademarks are the property of their respective owners. |
|||
|
|||
Licensing Information. |
|||
|
|||
Please see file COPYING that came with this distribution |
|||
|
|||
Source code can be found at |
|||
wsrep API: https://launchpad.net/wsrep |
|||
MySQL patch: https://launchpad.net/codership-mysql |
|||
|
|||
|
|||
ABOUT THIS DOCUMENT |
|||
|
|||
This document covers installation and configuration issues specific to this |
|||
wsrep-patched MySQL distribution by Codership. It does not cover the use or |
|||
administration of MySQL server per se. The reader is assumed to know how to |
|||
install, configure, administer and use standard MySQL server version 5.1.xx. |
|||
|
|||
|
|||
MYSQL-5.5.x/wsrep-23.x |
|||
|
|||
CONTENTS: |
|||
========= |
|||
1. WHAT IS WSREP PATCH FOR MYSQL |
|||
2. INSTALLATION |
|||
3. FIRST TIME SETUP |
|||
3.1 CONFIGURATION FILES |
|||
3.2 DATABASE PRIVILEGES |
|||
3.3 CHECK AND CORRECT FIREWALL SETTINGS |
|||
3.4 SELINUX |
|||
3.5 APPARMOR |
|||
3.6 CONNECT TO CLUSTER |
|||
4. UPGRADING FROM MySQL 5.1.x |
|||
5. CONFIGURATION OPTIONS |
|||
5.1 MANDATORY MYSQL OPTIONS |
|||
5.2 WSREP OPTIONS |
|||
6. ONLINE SCHEMA UPGRADE |
|||
6.1 TOTAL ORDER ISOLATION (TOI) |
|||
6.2 ROLLING SCHEMA UPGRADE (RSU) |
|||
7. LIMITATIONS |
|||
|
|||
|
|||
1. WHAT IS WSREP PATCH FOR MYSQL/INNODB |
|||
|
|||
Wsrep API developed by Codership Oy is a modern generic (database-agnostic) |
|||
replication API for transactional databases with a goal to make database |
|||
replication/logging subsystem completely modular and pluggable. It is developed |
|||
with flexibility and completeness in mind to satisfy broad range of modern |
|||
replication scenarios. It is equally suitable for synchronous and asynchronous, |
|||
master-slave and multi-master replication. |
|||
|
|||
wsrep stands for Write Set REPlication. |
|||
|
|||
Wsrep patch for MySQL/InnoDB allows MySQL server to load and use various wsrep |
|||
API implementations ("wsrep providers") with different qualities of service. |
|||
Without wsrep provider MySQL-wsrep server will function like a regular |
|||
standalone server. |
|||
|
|||
|
|||
2. INSTALLATION |
|||
|
|||
In the examples below mysql authentication options are omitted for brevity. |
|||
|
|||
2.1 Download and install mysql-wsrep package. |
|||
|
|||
Download binary package for your Linux distribution from |
|||
https://launchpad.net/codership-mysql/ |
|||
|
|||
2.1.1 On Debian and Debian-derived distributions. |
|||
|
|||
Upgrade from mysql-server-5.0 to mysql-wsrep is not supported yet, please |
|||
upgrade to mysql-server-5.1 first. |
|||
|
|||
If you're installing over an existing mysql installation, mysql-server-wsrep |
|||
will conflict with mysql-server-5.1 package, so remove it first: |
|||
|
|||
$ sudo apt-get remove mysql-server-5.1 mysql-server-core-5.1 |
|||
|
|||
mysql-server-wsrep requires psmisc and mysql-client-5.1.47 (or later). |
|||
MySQL 5.1 packages can be found from backports repositories. |
|||
For further information about configuring and using Debian or Ubuntu |
|||
backports, see: |
|||
|
|||
* http://backports.debian.org |
|||
|
|||
* https://help.ubuntu.com/community/UbuntuBackports |
|||
|
|||
For example, installation of required packages on Debian Lenny: |
|||
|
|||
$ sudo apt-get install psmisc |
|||
$ sudo apt-get -t lenny-backports install mysql-client-5.1 |
|||
|
|||
Now you should be able to install mysql-wsrep package: |
|||
|
|||
$ sudo dpkg -i <mysql-server-wsrep DEB> |
|||
|
|||
2.1.2 On CentOS and similar RPM-based distributions. |
|||
|
|||
If you're migrating from existing MySQL installation, there are two variants: |
|||
|
|||
a) If you're already using official MySQL-server-community 5.1.x RPM from |
|||
Oracle: |
|||
|
|||
# rpm -e mysql-server |
|||
|
|||
b) If you're upgrading from the stock mysql-5.0.77 on CentOS: |
|||
|
|||
1) Make sure that the following packages are not installed: |
|||
# rpm --nodeps --allmatches -e mysql-server mysql-test mysql-bench |
|||
|
|||
2) Install *official* MySQL-shared-compat-5.1.x from |
|||
http://dev.mysql.com/downloads/mysql/5.1.html |
|||
|
|||
Actual installation: |
|||
|
|||
# rpm -Uvh <MySQL-server-wsrep RPM> |
|||
|
|||
If this fails due to unsatisfied dependencies, install missing packages |
|||
(e.g. yum install perl-DBI) and retry. |
|||
|
|||
Additional packages to consider (if not yet installed): |
|||
* galera (multi-master replication provider, https://launchpad.net/galera) |
|||
* MySQL-client-community (for connecting to server and mysqldump-based SST) |
|||
* rsync (for rsync-based SST) |
|||
* xtrabackup and nc (for xtrabackup-based SST) |
|||
|
|||
2.2 Upgrade system tables. |
|||
|
|||
If you're upgrading a previous MySQL installation, it might be advisable to |
|||
upgrade system tables. To do that start mysqld and run mysql_upgrade command. |
|||
Consult MySQL documentation in case of errors. Normally they are not critical |
|||
and can be ignored unless specific functionality is needed. |
|||
|
|||
|
|||
3. FIRST TIME SETUP |
|||
|
|||
Unless you're upgrading an already installed mysql-wsrep package, you will need |
|||
to set up a few things to prepare server for operation. |
|||
|
|||
3.1 CONFIGURATION FILES |
|||
|
|||
* Make sure system-wide my.cnf does not bind mysqld to 127.0.0.1. That is, if |
|||
you have the following line in [mysqld] section, comment it out: |
|||
|
|||
#bind-address = 127.0.0.1 |
|||
|
|||
* Make sure system-wide my.cnf contains "!includedir /etc/mysql/conf.d/" line. |
|||
|
|||
* Edit /etc/mysql/conf.d/wsrep.cnf and set wsrep_provider option by specifying |
|||
a path to provider library. If you don't have a provider, leave it as it is. |
|||
|
|||
* When a new node joins the cluster it'll have to receive a state snapshot from |
|||
one of the peers. This requires a privileged MySQL account with access from |
|||
the rest of the cluster. Edit /etc/mysql/conf.d/wsrep.cnf and set mysql |
|||
login/password pair for SST, for example: |
|||
|
|||
wsrep_sst_auth=wsrep_sst:wspass |
|||
|
|||
* See CONFIGURATION section below about other configuration parameters that you |
|||
might want to change at this point. |
|||
|
|||
3.2 DATABASE PRIVILEGES |
|||
|
|||
Restart MySQL server and connect to it as root to grant privileges to SST |
|||
account (empty users confuse MySQL authentication matching rules, we need to |
|||
delete them too): |
|||
|
|||
$ mysql -e "SET wsrep_on=OFF; DELETE FROM mysql.user WHERE user='';" |
|||
$ mysql -e "SET wsrep_on=OFF; GRANT ALL ON *.* TO wsrep_sst@'%' IDENTIFIED BY 'wspass'"; |
|||
|
|||
3.3 CHECK AND CORRECT FIREWALL SETTINGS. |
|||
|
|||
MySQL-wsrep server needs to be accessible from other cluster members through |
|||
its client listening socket and through wsrep provider socket. See your |
|||
distribution and wsrep provider documentation for details. For example on |
|||
CentOS you might need to do something along these lines: |
|||
|
|||
# iptables --insert RH-Firewall-1-INPUT 1 --proto tcp --source <my IP>/24 --destination <my IP>/32 --dport 3306 -j ACCEPT |
|||
# iptables --insert RH-Firewall-1-INPUT 1 --proto tcp --source <my IP>/24 --destination <my IP>/32 --dport 4567 -j ACCEPT |
|||
|
|||
If there is a NAT firewall between the nodes, it must be configured to allow |
|||
direct connections between the nodes (e.g. via port forwarding). |
|||
|
|||
3.4 SELINUX |
|||
|
|||
If you have SELinux enabled, it may block mysqld from doing required operations. |
|||
You'll need to either disable it or configure to allow mysqld to run external |
|||
programs and open listen sockets at unprivileged ports (i.e. things that |
|||
an unprivileged user can do). See SELinux documentation about it. |
|||
|
|||
To quickly disable SELinux: |
|||
1) run 'setenforce 0' as root. |
|||
2) set 'SELINUX=permissive' in /etc/selinux/config |
|||
|
|||
3.5 APPARMOR |
|||
|
|||
AppArmor automatically comes with Ubuntu and may also prevent mysqld to from |
|||
opening additional ports or run scripts. See AppArmor documentation about its |
|||
configuration. To disable AppArmor for mysqld: |
|||
|
|||
$ cd /etc/apparmor.d/disable/ |
|||
$ sudo ln -s /etc/apparmor.d/usr.sbin.mysqld |
|||
$ sudo service apparmor restart |
|||
|
|||
|
|||
3.6 CONNECT TO CLUSTER |
|||
|
|||
Now you're ready to connect to cluster by setting wsrep_cluster_address variable |
|||
and monitor status of wsrep provider: |
|||
|
|||
mysql> SET GLOBAL wsrep_cluster_address='<cluster address string>'; |
|||
mysql> SHOW STATUS LIKE 'wsrep%'; |
|||
|
|||
|
|||
4 UPGRADING FROM MySQL 5.1.x |
|||
|
|||
!!! THESE INSTRUCTIONS ARE PRELIMINARY AND INCOMPLETE !!! |
|||
|
|||
1) BEFORE UPGRADE (while running 5.1.x): |
|||
- comment out 'wsrep_provider' setting from configuration files |
|||
(my.cnf and/or wsrep.cnf) |
|||
- If performing a rolling upgrade on a running cluster, set |
|||
wsrep_sst_method=mysqldump. |
|||
You might also need to configure wsrep_sst_receive_address and |
|||
wsrep_sst_auth appropriately. mysqldump is the only way to transfer data |
|||
from 5.1.x to 5.5.x reliably. |
|||
- remove innodb_plugin settings from configuration files. |
|||
|
|||
2) Perform upgrade as usual: |
|||
http://dev.mysql.com/doc/refman/5.5/en/upgrading-from-previous-series.html |
|||
Don't forget to run 'mysql_upgrade' command. |
|||
|
|||
3) AFTER UPGRADING individual node: |
|||
- uncomment 'wsrep_provider' line in configuration file. |
|||
- restart the server and join the cluster. |
|||
|
|||
4) AFTER UPGRADING the whole cluster: |
|||
- revert to usual wsrep SST settings if not 'mysqldump'. |
|||
|
|||
|
|||
5. CONFIGURATION OPTIONS |
|||
|
|||
5.1 MANDATORY MYSQL OPTIONS |
|||
|
|||
binlog_format=ROW |
|||
This option is required to use row-level replication as opposed to |
|||
statement-level. For performance and consistency considerations don't change |
|||
that. As a side effect, binlog, if turned on, can be ROW only. In future this |
|||
option won't have special meaning. |
|||
|
|||
innodb_autoinc_lock_mode=2 |
|||
This is a required parameter. Without it INSERTs into tables with |
|||
AUTO_INCREMENT column may fail. |
|||
autoinc lock modes 0 and 1 can cause unresolved deadlock, and make |
|||
system unresponsive. |
|||
|
|||
innodb_locks_unsafe_for_binlog=1 |
|||
This option is required for parallel applying. |
|||
|
|||
5.2 WSREP OPTIONS |
|||
|
|||
All options are optional except for wsrep_provider, wsrep_cluster_address, and |
|||
wsrep_sst_auth. |
|||
|
|||
wsrep_provider=none |
|||
A full path to the library that implements WSREP interface. If none is |
|||
specified, the server behaves like a regular mysqld. |
|||
|
|||
wsrep_provider_options= |
|||
Provider-specific option string. Check wsrep provider documentation or |
|||
http://www.codership.com/wiki |
|||
|
|||
wsrep_cluster_address= |
|||
Provider-specific cluster address string. This is used to connect a node to |
|||
the desired cluster. This option can be given either on mysqld startup or set |
|||
during runtime. See wsrep provider documentation for possible values. |
|||
|
|||
wsrep_cluster_name="my_wsrep_cluster" |
|||
Logical cluster name, must be the same for all nodes of the cluster. |
|||
|
|||
wsrep_node_address= |
|||
An option to explicitly specify the network address of the node in the form |
|||
<address>[:port] if autoguessing for some reason does not produce desirable |
|||
results (multiple network interfaces, NAT, etc.) |
|||
If not explicitly overridden by wsrep_sst_receive_address, the <address> part |
|||
will be used to listen for SST (see below). And the whole <address>[:port] |
|||
will be passed to wsrep provider to be used as a base address in its |
|||
communications. |
|||
|
|||
wsrep_node_name= |
|||
Human readable node name (for easier log reading only). Defaults to hostname. |
|||
|
|||
wsrep_slave_threads=1 |
|||
Number of threads dedicated to processing of writesets from other nodes. |
|||
For best performance should be few per CPU core. |
|||
|
|||
wsrep_dbug_option |
|||
Options for the built-in DBUG library (independent from what MySQL uses). |
|||
Empty by default. Not currently in use. |
|||
|
|||
wsrep_debug=0 |
|||
Enable debug-level logging. |
|||
|
|||
wsrep_convert_LOCK_to_trx=0 |
|||
Implicitly convert locking sessions into transactions inside mysqld. By |
|||
itself it does not mean support for locking sessions, but it prevents the |
|||
database from going into logically inconsistent state. Note however, that |
|||
loading large database dump with LOCK statements might result in abnormally |
|||
large transactions and cause an out-of-memory condition |
|||
|
|||
wsrep_retry_autocommit=1 |
|||
Retry autocommit queries and single statement transactions should they fail |
|||
certification test. This is analogous to rescheduling an autocommit query |
|||
should it go into deadlock with other transactions in the database lock |
|||
manager. |
|||
|
|||
wsrep_auto_increment_control=1 |
|||
Automatically adjust auto_increment_increment and auto_increment_offset |
|||
variables based on the number of nodes in the cluster. Significantly reduces |
|||
certification conflict rate for INSERTS. |
|||
|
|||
wsrep_drupal_282555_workaround=1 |
|||
MySQL seems to have an obscure bug when INSERT into table with |
|||
AUTO_INCREMENT column with NULL value for that column can fail with a |
|||
duplicate key error. When this option is on, it retries such INSERTs. |
|||
Required for stable Drupal operation. Documented at: |
|||
http://bugs.mysql.com/bug.php?id=41984 |
|||
http://drupal.org/node/282555 |
|||
|
|||
wsrep_causal_reads=0 |
|||
Enforce strict READ COMMITTED semantics on reads and transactions. May |
|||
result in additional latencies. It is a session variable. |
|||
|
|||
wsrep_OSU_method=TOI |
|||
Online Schema Upgrade (OSU) can be performed with two alternative methods: |
|||
Total Order Isolation (TOI) runs DDL statement in all cluster nodes in |
|||
same total order sequence locking the affected table for the duration of the |
|||
operation. This may result in the whole cluster being blocked for the |
|||
duration of the operation. |
|||
Rolling Schema Upgrade (RSU) executes the DDL statement only locally, thus |
|||
blocking only one cluster node. During the DDL processing, the node |
|||
is not replicating and may be unable to process replication events (due to |
|||
table lock). Once DDL operation is complete, the node will catch up and sync |
|||
with the cluster to become fully operational again. The DDL statement or |
|||
its effects are not replicated, so it is user's responsibility to manually |
|||
perform this operation on each of the nodes. |
|||
|
|||
wsrep_forced_binlog_format=none |
|||
Force every transaction to use given binlog format. When this variable is |
|||
set to something else than NONE, all transactions will use the given forced |
|||
format, regardless of what the client session has specified in binlog_format. |
|||
Valid choices for wsrep_forced_binlog_format are: ROW, STATEMENT, MIXED and |
|||
special value NONE, meaning that there is no forced binlog format in effect. |
|||
This variable was intruduced to support STATEMENT format replication during |
|||
rolling schema upgrade processing. However, in most cases ROW replication |
|||
is valid for asymmetrict schema replication. |
|||
|
|||
State snapshot transfer options. |
|||
|
|||
When a new node joins the cluster it has to synchronize its initial state with |
|||
the other cluster members by transferring state snapshot from one of them. |
|||
The options below govern how this happens and should be set up before attempting |
|||
to join or start a cluster. |
|||
|
|||
wsrep_sst_method=rsync |
|||
What method to use to copy database state to a newly joined node. Supported |
|||
methods: |
|||
- mysqldump: slow (except for small datasets) but allows for upgrade |
|||
between major MySQL versions or InnoDB features. |
|||
- rsync: much faster on large datasets (default). |
|||
- rsync_wan: same as rsync but with deltaxfer to minimize network traffic. |
|||
- xtrabackup: very fast and practically non-blocking SST method based on |
|||
Percona's xtrabackup tool. |
|||
|
|||
(for xtrabackup to work the following settings must be present in my.cnf |
|||
on all nodes: |
|||
[mysqld] |
|||
wsrep_sst_auth=root:<root password> |
|||
datadir=<path to data dir> |
|||
[client] |
|||
socket=<path to socket> |
|||
) |
|||
|
|||
wsrep_sst_receive_address= |
|||
Address (hostname:port) at which this node wants to receive state snapshot. |
|||
Defaults to mysqld bind address, and if that is not specified (0.0.0.0) - |
|||
to the first IP of eth0 + mysqld bind port. |
|||
NOTE: check that your firewall allows connections to this address from other |
|||
cluster nodes. |
|||
|
|||
wsrep_sst_auth= |
|||
Authentication information needed for state transfer. Depends on the state |
|||
transfer method. For mysqldump-based SST it is |
|||
<mysql_root_user>:<mysql_root_password> |
|||
and should be the same on all nodes - it is used to authenticate with both |
|||
state snapshot receiver and state snapshot donor. |
|||
|
|||
wsrep_sst_donor= |
|||
A name of the node which should serve as state snapshot donor. This allows |
|||
to control which node will serve state snapshot request. By default the |
|||
most suitable node is chosen by wsrep provider. This is the same as given in |
|||
wsrep_node_name. |
|||
|
|||
|
|||
6. ONLINE SCHEMA UPGRADE |
|||
|
|||
Schema upgrades mean any data definition statements (DDL statemnents) run |
|||
for the database. They change the database structure and are non- |
|||
transactional. |
|||
|
|||
Release 22.3 brings a new method for performing schema upgrades. User can |
|||
now choose whether to use the traditional total order isolation or new |
|||
rolling schema upgrade method. The OSU method choice is done by global |
|||
parameter: 'wsrep_OSU_method'. |
|||
|
|||
6.1 Total Order Isolation (TOI) |
|||
|
|||
With earlier releases, DDL processing happened always by Total Order |
|||
Isolation (TOI) method. With TOI, the DDL was scheduled to be processed in |
|||
same transaction seqeuncing 'slot' in each cluster node. |
|||
The processing is secured by locking the affected table from any other use. |
|||
With TOI method, the whole cluster has part of the database locked for the |
|||
duration of the DDL processing. |
|||
|
|||
6.2 Rolling Schema Upgrade (RSU) |
|||
|
|||
Rolling schema upgrade is new DDL processing method, where DDL will be |
|||
processed locally for the node. The node is disconnected of the replication |
|||
for the duration of the DDL processing, so that there is only DDL statement |
|||
processing in the node and it does not block the rest of the cluster. When |
|||
the DDL processing is complete, the node applies delayed replication events |
|||
and synchronizes back with the cluster. |
|||
The DDL can then be executed cluster-wide by running the same DDL statement |
|||
for each node in turn. When this rolling schema upgrade proceeds, part of |
|||
the cluster will have old schema structure and part of the cluster will have |
|||
new schema structure. |
|||
|
|||
|
|||
7. LIMITATIONS |
|||
|
|||
1) Currently replication works only with InnoDB storage engine. Any writes to |
|||
tables of other types, including system (mysql.*) tables are not replicated. |
|||
However, DDL statements are replicated in statement level, and changes |
|||
to mysql.* tables will get replicated that way. |
|||
So, you can safely issue: CREATE USER..., |
|||
but issuing: INSERT INTO mysql.user..., will not be replicated. |
|||
|
|||
2) DELETE operation is unsupported on tables without primary key. Also rows in |
|||
tables without primary key may appear in different order on different nodes. |
|||
As a result SELECT...LIMIT... may return slightly different sets. |
|||
|
|||
3) Unsupported queries: |
|||
* LOCK/UNLOCK TABLES cannot be supported in multi-master setups. |
|||
* lock functions (GET_LOCK(), RELEASE_LOCK()... ) |
|||
|
|||
4) Query log cannot be directed to table. If you enable query logging, |
|||
you must forward the log to a file: |
|||
log_output = FILE |
|||
Use general_log and general_log_file to choose query logging and the |
|||
log file name |
|||
|
|||
5) Maximum allowed transaction size is defined by wsrep_max_ws_rows and |
|||
wsrep_max_ws_size. Anything bigger (e.g. huge LOAD DATA) will be rejected. |
|||
|
|||
6) Due to cluster level optimistic concurrency control, transaction issuing |
|||
COMMIT may still be aborted at that stage. There can be two transactions. |
|||
writing to same rows and committing in separate cluster nodes, and only one |
|||
of the them can successfully commit. The failing one will be aborted. |
|||
For cluster level aborts, MySQL/galera cluster gives back deadlock error. |
|||
code (Error: 1213 SQLSTATE: 40001 (ER_LOCK_DEADLOCK)). |
|||
|
|||
7) XA transactions can not be supported due to possible rollback on commit. |
|||
|
|||
@ -0,0 +1,76 @@ |
|||
# Copyright (c) 2011, Codership Oy <info@codership.com>. |
|||
# Copyright (c) 2013, Monty Program Ab. |
|||
# |
|||
# This program is free software; you can redistribute it and/or modify |
|||
# it under the terms of the GNU General Public License as published by |
|||
# the Free Software Foundation; version 2 of the License. |
|||
# |
|||
# This program is distributed in the hope that it will be useful, |
|||
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
# GNU General Public License for more details. |
|||
# |
|||
# You should have received a copy of the GNU General Public License |
|||
# along with this program; if not, write to the Free Software |
|||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA |
|||
|
|||
# We need to generate a proper spec file even without --with-wsrep flag, |
|||
# so WSREP_VERSION is produced regardless |
|||
|
|||
# Set the patch version |
|||
SET(WSREP_PATCH_VERSION "10") |
|||
|
|||
# MariaDB addition: Revision number of the last revision merged from |
|||
# codership branch visible in @@visible_comment. |
|||
# Branch : codership-mysql/5.6 |
|||
SET(WSREP_PATCH_REVNO "4123") # Should be updated on every merge. |
|||
|
|||
# MariaDB addition: Revision number of the last revision merged from |
|||
# Branch : lp:maria/maria-10.0-galera |
|||
SET(WSREP_PATCH_REVNO2 "3867") # Should be updated on every merge. |
|||
|
|||
# MariaDB: Obtain patch revision number: |
|||
# Update WSREP_PATCH_REVNO if WSREP_REV environment variable is set. |
|||
IF (DEFINED ENV{WSREP_REV}) |
|||
SET(WSREP_PATCH_REVNO $ENV{WSREP_REV}) |
|||
ENDIF() |
|||
|
|||
# Obtain wsrep API version |
|||
EXECUTE_PROCESS( |
|||
COMMAND sh -c "grep WSREP_INTERFACE_VERSION ${MySQL_SOURCE_DIR}/wsrep/wsrep_api.h | cut -d '\"' -f 2" |
|||
OUTPUT_VARIABLE WSREP_API_VERSION |
|||
RESULT_VARIABLE RESULT |
|||
) |
|||
#FILE(WRITE "wsrep_config" "Debug: WSREP_API_VERSION result: ${RESULT}\n") |
|||
STRING(REGEX REPLACE "(\r?\n)+$" "" WSREP_API_VERSION "${WSREP_API_VERSION}") |
|||
|
|||
IF(NOT WSREP_PATCH_REVNO) |
|||
MESSAGE(WARNING "Could not determine bzr revision number, WSREP_VERSION will " |
|||
"not contain the revision number.") |
|||
SET(WSREP_VERSION |
|||
"${WSREP_API_VERSION}.${WSREP_PATCH_VERSION}" |
|||
) |
|||
ELSE() |
|||
SET(WSREP_VERSION |
|||
"${WSREP_API_VERSION}.${WSREP_PATCH_VERSION}.r${WSREP_PATCH_REVNO}" |
|||
) |
|||
ENDIF() |
|||
|
|||
# |
|||
# Galera library does not compile with windows and solaris |
|||
# |
|||
IF(UNIX) |
|||
OPTION(WITH_WSREP "WSREP replication API (to use, e.g. Galera Replication library)" ON) |
|||
ELSE() |
|||
OPTION(WITH_WSREP "WSREP replication API (to use, e.g. Galera Replication library)" OFF) |
|||
ENDIF() |
|||
|
|||
MACRO (BUILD_WITH_WSREP) |
|||
SET(WSREP_C_FLAGS "-DWITH_WSREP -DWSREP_PROC_INFO -DMYSQL_MAX_VARIABLE_VALUE_LEN=2048") |
|||
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${WSREP_C_FLAGS}") |
|||
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${WSREP_C_FLAGS}") |
|||
SET(COMPILATION_COMMENT "${COMPILATION_COMMENT}, wsrep_${WSREP_VERSION}") |
|||
#SET(WITH_EMBEDDED_SERVER OFF CACHE INTERNAL "" FORCE) |
|||
ENDMACRO() |
|||
|
|||
# |
|||
@ -0,0 +1,58 @@ |
|||
/* Copyright 2014 Codership Oy <http://www.codership.com> & SkySQL Ab |
|||
|
|||
This program is free software; you can redistribute it and/or modify |
|||
it under the terms of the GNU General Public License as published by |
|||
the Free Software Foundation; version 2 of the License. |
|||
|
|||
This program is distributed in the hope that it will be useful, |
|||
but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
GNU General Public License for more details. |
|||
|
|||
You should have received a copy of the GNU General Public License |
|||
along with this program; if not, write to the Free Software |
|||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ |
|||
|
|||
#ifndef WSREP_INCLUDED |
|||
#define WSERP_INCLUDED |
|||
|
|||
#ifdef WITH_WSREP |
|||
#define IF_WSREP(A,B) A |
|||
#define DBUG_ASSERT_IF_WSREP(A) DBUG_ASSERT(A) |
|||
|
|||
#if !defined(EMBEDDED_LIBRARY) |
|||
#define WSREP_FORMAT(my_format) \ |
|||
((wsrep_forced_binlog_format != BINLOG_FORMAT_UNSPEC) ? \ |
|||
wsrep_forced_binlog_format : my_format) |
|||
#else |
|||
#define WSREP_FORMAT(my_format) my_format |
|||
#endif /* && !EMBEDDED_LIBRARY */ |
|||
|
|||
#define WSREP_MYSQL_DB (char *)"mysql" |
|||
#define WSREP_TO_ISOLATION_BEGIN(db_, table_, table_list_) \ |
|||
if (WSREP_ON && WSREP(thd) && wsrep_to_isolation_begin(thd, db_, table_, table_list_)) \ |
|||
goto error; |
|||
|
|||
#define WSREP_TO_ISOLATION_END \ |
|||
if (WSREP_ON && (WSREP(thd) || (thd && thd->wsrep_exec_mode==TOTAL_ORDER))) \ |
|||
wsrep_to_isolation_end(thd); |
|||
|
|||
#define WSREP_DEBUG(...) \ |
|||
if (wsrep_debug) WSREP_LOG(sql_print_information, ##__VA_ARGS__) |
|||
#define WSREP_INFO(...) WSREP_LOG(sql_print_information, ##__VA_ARGS__) |
|||
#define WSREP_WARN(...) WSREP_LOG(sql_print_warning, ##__VA_ARGS__) |
|||
#define WSREP_ERROR(...) WSREP_LOG(sql_print_error, ##__VA_ARGS__) |
|||
|
|||
#else |
|||
#define IF_WSREP(A,B) B |
|||
#define DBUG_ASSERT_IF_WSREP(A) |
|||
#define WSREP_DEBUG(...) |
|||
#define WSREP_INFO(...) |
|||
#define WSREP_WARN(...) |
|||
#define WSREP_ERROR(...) |
|||
#define WSREP_FORMAT(my_format) my_format |
|||
#define WSREP_TO_ISOLATION_BEGIN(db_, table_, table_list_) |
|||
#define WSREP_TO_ISOLATION_END |
|||
#endif |
|||
|
|||
#endif /* WSERP_INCLUDED */ |
|||
@ -0,0 +1,10 @@ |
|||
# galera_cluster.inc |
|||
# ================== |
|||
# |
|||
# Description |
|||
# ----------- |
|||
# Configure galera cluster with 2 nodes. |
|||
# |
|||
|
|||
--let $galera_cluster_size = 2 |
|||
--source include/galera_init.inc |
|||
@ -0,0 +1,45 @@ |
|||
# galera_connect.inc |
|||
# ================== |
|||
# |
|||
# Description |
|||
# ----------- |
|||
# Open a connection to the specified server number ($galera_server_number). |
|||
# The connection itself would be identified by $galera_connection_name. |
|||
# |
|||
# Parameters |
|||
# ---------- |
|||
# $galera_connection_name |
|||
# Name of the resulting connection. |
|||
# |
|||
# $galera_server_number |
|||
# Sequence number of the node in the galera cluster. |
|||
# |
|||
# $galera_debug |
|||
# Print debug information. |
|||
# |
|||
|
|||
if (!$galera_connection_name) |
|||
{ |
|||
--die ERROR IN TEST: $galera_connection_name must be set before sourcing include/galera_connect.inc |
|||
} |
|||
|
|||
if (!$galera_server_number) |
|||
{ |
|||
--die ERROR IN TEST: $galera_server_number must be set before sourcing include/galera_connect.inc |
|||
} |
|||
|
|||
--let $_galera_port= \$NODE_MYPORT_$galera_server_number |
|||
if (!$_galera_port) |
|||
{ |
|||
--echo Bug in test case: '\$NODE_MYPORT_$galera_server_number' not initialized. Check the test's .cfg file. |
|||
--die Not all NODE_MYPORT_* environment variables are setup correctly. |
|||
} |
|||
|
|||
if ($galera_debug) |
|||
{ |
|||
--echo connect($galera_connection_name,127.0.0.1,root,,test,$_galera_port,) |
|||
} |
|||
|
|||
# Open a connection |
|||
--connect($galera_connection_name,127.0.0.1,root,,test,$_galera_port,) |
|||
|
|||
@ -0,0 +1,100 @@ |
|||
# galera_diff.inc |
|||
# =============== |
|||
# |
|||
# Description |
|||
# ----------- |
|||
# Compare the output of the given statement on all the nodes of the cluster. |
|||
# |
|||
# Parameters |
|||
# ---------- |
|||
# $galera_diff_statement |
|||
# Statement for which the output would be compared. |
|||
# |
|||
# $galera_diff_database |
|||
# Database against which the above statement would be executed. |
|||
# (Default : test) |
|||
# |
|||
# $galera_diff_servers |
|||
# Comma separated list of servers to executed the diff statement on. If not |
|||
# set, a list of servers will be generated based on $galera_cluster_size. |
|||
# |
|||
# $galerra_debug |
|||
# Print debug information. |
|||
# |
|||
|
|||
if (!$galera_diff_statement) |
|||
{ |
|||
--die ERROR IN TEST: $galera_diff_statement must be set before sourcing include/galera_diff.inc |
|||
} |
|||
|
|||
--let $_galera_diff_database = $galera_diff_database |
|||
if (!$_galera_diff_database) |
|||
{ |
|||
--let $_galera_diff_database = test |
|||
} |
|||
|
|||
--let $_galera_diff_servers= $galera_diff_servers |
|||
if (!$_galera_diff_servers) |
|||
{ |
|||
--let $_i= $galera_cluster_size |
|||
--let $_galera_diff_servers= |
|||
while ($_i) |
|||
{ |
|||
--let $_galera_diff_servers= $_i,$_galera_diff_servers |
|||
--dec $_i |
|||
} |
|||
} |
|||
if ($galera_debug) |
|||
{ |
|||
--echo \$galera_diff_servers= '$_galera_diff_servers' |
|||
} |
|||
|
|||
if (!$galera_debug) |
|||
{ |
|||
--disable_query_log |
|||
} |
|||
|
|||
# Generate file containing $galera_diff_statement. We don't pass the |
|||
# statement on the command line, because it would be subject to shell |
|||
# substitutions. |
|||
--let $write_to_file= GENERATE |
|||
--let $write_var= $galera_diff_statement |
|||
--source include/write_var_to_file.inc |
|||
--let $_galera_diff_statement_file= $write_to_file |
|||
|
|||
if (!$galera_debug) |
|||
{ |
|||
--enable_query_log |
|||
} |
|||
|
|||
# Compare all servers. |
|||
--let $_galera_diff_first= 1 |
|||
while ($_galera_diff_servers) |
|||
{ |
|||
# Set $_galera_diff_server_i to the first number in the list |
|||
--let $_galera_diff_server_i= `SELECT SUBSTRING_INDEX('$_galera_diff_servers', ',', 1)` |
|||
# Remove $_galera_diff_server_i from the list |
|||
--let $_galera_diff_servers= `SELECT SUBSTRING('$_galera_diff_servers', LENGTH('$_galera_diff_server_i') + 2)` |
|||
|
|||
# Execute statement |
|||
--let $_galera_diff_file= $MYSQLTEST_VARDIR/tmp/_galera_diff_server-$_galera_diff_server_i.tmp |
|||
--exec $MYSQL --defaults-group-suffix=.$_galera_diff_server_i $_galera_diff_database < $_galera_diff_statement_file > $_galera_diff_file |
|||
|
|||
# Compare |
|||
if (!$_galera_diff_first) |
|||
{ |
|||
if ($galera_debug) |
|||
{ |
|||
--echo diffing $_galera_diff_file and $_galera_diff_prev_file |
|||
} |
|||
--diff_files $_galera_diff_file $_galera_diff_prev_file |
|||
--remove_file $_galera_diff_prev_file |
|||
} |
|||
--let $_galera_diff_prev_file= $_galera_diff_file |
|||
--let $_galera_diff_first= 0 |
|||
} |
|||
|
|||
# Cleanup |
|||
--remove_file $_galera_diff_prev_file |
|||
--remove_file $_galera_diff_statement_file |
|||
|
|||
@ -0,0 +1,25 @@ |
|||
# galera_end.inc |
|||
# ============== |
|||
# |
|||
# Description |
|||
# ----------- |
|||
# Closes the connections opened via include/galera_init.inc |
|||
# |
|||
# Parameters |
|||
# ---------- |
|||
# $galera_cluster_size |
|||
# Number of nodes in the cluster. |
|||
# |
|||
|
|||
--let $_galera_node= $galera_cluster_size |
|||
|
|||
while ($_galera_node) |
|||
{ |
|||
if ($galera_debug) |
|||
{ |
|||
--echo Disconnecting node_$_galera_node |
|||
} |
|||
--disconnect node_$_galera_node |
|||
--dec $_galera_node |
|||
} |
|||
|
|||
@ -0,0 +1,26 @@ |
|||
# galera_init.inc |
|||
# =============== |
|||
# |
|||
# Description |
|||
# ----------- |
|||
# Set up a Galera cluster with $wsrep_cluster_size nodes. |
|||
# |
|||
# Parameters |
|||
# ---------- |
|||
# $galera_cluster_size |
|||
# Number of nodes in the cluster. |
|||
# |
|||
|
|||
--source include/have_wsrep_enabled.inc |
|||
|
|||
--let $_galera_node= $galera_cluster_size |
|||
|
|||
while ($_galera_node) |
|||
{ |
|||
--let $galera_connection_name= node_$_galera_node |
|||
--let $galera_server_number= $_galera_node |
|||
--source include/galera_connect.inc |
|||
|
|||
--dec $_galera_node |
|||
} |
|||
|
|||
@ -0,0 +1,6 @@ |
|||
--source include/have_innodb.inc |
|||
|
|||
if (`SELECT COUNT(*) = 0 from INFORMATION_SCHEMA.GLOBAL_VARIABLES |
|||
WHERE VARIABLE_NAME = 'INNODB_DISALLOW_WRITES'`) { |
|||
--skip Test requires 'innodb_disallow_writes' |
|||
} |
|||
@ -0,0 +1,8 @@ |
|||
# To be used in a test which requires server to be compiled with wsrep support |
|||
# (-DWITH_WSREP=ON) and wsrep plugin is ACTIVE. |
|||
|
|||
if (`SELECT COUNT(*)=0 FROM INFORMATION_SCHEMA.PLUGINS WHERE PLUGIN_NAME = 'wsrep' AND PLUGIN_STATUS='ACTIVE'`) |
|||
{ |
|||
--skip Test requires wsrep plugin. |
|||
} |
|||
|
|||
@ -0,0 +1,9 @@ |
|||
# To be used in a test which requires wsrep plugin to be ACTIVE and enabled |
|||
# (i.e. wsrep_on=ON). It includes have_wsrep.inc. |
|||
|
|||
--source include/have_wsrep.inc |
|||
|
|||
--require r/have_wsrep.require |
|||
disable_query_log; |
|||
SHOW VARIABLES LIKE 'wsrep_on'; |
|||
enable_query_log; |
|||
@ -0,0 +1,7 @@ |
|||
# To be used in a test which should be skipped if server is compiled with wsrep |
|||
# support (-DWITH_WSREP=ON) and wsrep plugin is ACTIVE. |
|||
|
|||
-- require r/not_wsrep.require |
|||
disable_query_log; |
|||
SELECT VERSION() LIKE '%wsrep%' AS 'HAVE_WSREP'; |
|||
enable_query_log; |
|||
@ -0,0 +1,2 @@ |
|||
Variable_name Value |
|||
wsrep_on ON |
|||
@ -0,0 +1,2 @@ |
|||
HAVE_WSREP |
|||
0 |
|||
@ -0,0 +1,28 @@ |
|||
# Use default setting for mysqld processes |
|||
!include include/default_mysqld.cnf |
|||
|
|||
[mysqld.1] |
|||
binlog-format=row |
|||
wsrep_provider=@ENV.WSREP_PROVIDER |
|||
wsrep_cluster_address='gcomm://' |
|||
wsrep_provider_options='base_port=@mysqld.1.#galera_port' |
|||
wsrep_sst_receive_address='127.0.0.1:@mysqld.1.#sst_port' |
|||
# enforce read-committed characteristics across the cluster |
|||
wsrep_causal_reads=ON |
|||
|
|||
[mysqld.2] |
|||
binlog-format=row |
|||
wsrep_provider=@ENV.WSREP_PROVIDER |
|||
wsrep_cluster_address='gcomm://127.0.0.1:@mysqld.1.#galera_port' |
|||
wsrep_provider_options='base_port=@mysqld.2.#galera_port' |
|||
wsrep_sst_receive_address='127.0.0.1:@mysqld.2.#sst_port' |
|||
# enforce read-committed characteristics across the cluster |
|||
wsrep_causal_reads=ON |
|||
|
|||
[ENV] |
|||
NODE_MYPORT_1= @mysqld.1.port |
|||
NODE_MYSOCK_1= @mysqld.1.socket |
|||
|
|||
NODE_MYPORT_2= @mysqld.2.port |
|||
NODE_MYSOCK_2= @mysqld.2.socket |
|||
|
|||
@ -0,0 +1 @@ |
|||
!include galera_2nodes.cnf |
|||
@ -0,0 +1,30 @@ |
|||
USE test; |
|||
CREATE TABLE t1(c1 INT PRIMARY KEY) ENGINE=INNODB; |
|||
INSERT INTO t1 VALUES (1), (2), (3), (4), (5); |
|||
SELECT * FROM t1; |
|||
c1 |
|||
1 |
|||
2 |
|||
3 |
|||
4 |
|||
5 |
|||
|
|||
# On node_1 |
|||
SELECT * FROM test.t1; |
|||
c1 |
|||
1 |
|||
2 |
|||
3 |
|||
4 |
|||
5 |
|||
|
|||
# On node_2 |
|||
SELECT * FROM test.t1; |
|||
c1 |
|||
1 |
|||
2 |
|||
3 |
|||
4 |
|||
5 |
|||
DROP TABLE t1; |
|||
# End of test |
|||
@ -0,0 +1,24 @@ |
|||
# |
|||
# Test for mysqldump's galera-sst-mode option |
|||
# |
|||
# |
|||
# MDEV-6490: mysqldump unknown option --galera-sst-mode |
|||
# |
|||
CREATE DATABASE bug6490; |
|||
USE bug6490; |
|||
CREATE TABLE t1(c1 INT); |
|||
INSERT INTO t1 values (1); |
|||
INSERT INTO t1 values (2); |
|||
# Save the current gtid_binlog_state. |
|||
# Take a dump of bug6490 database |
|||
DROP TABLE t1; |
|||
# Load the dump |
|||
RESET MASTER; |
|||
SELECT * from t1; |
|||
c1 |
|||
1 |
|||
2 |
|||
# Compare the two gtid_binlog_state's |
|||
# Cleanup |
|||
DROP DATABASE bug6490; |
|||
# End of test |
|||
@ -0,0 +1,17 @@ |
|||
# |
|||
# MDEV#6266: Changing password fails on galera cluster |
|||
# |
|||
|
|||
# On node_1 |
|||
GRANT SELECT ON *.* TO 'user_6266'@'localhost' IDENTIFIED BY 'pass'; |
|||
|
|||
# Now, try changing password for 'user_6266'. This command should also |
|||
# execute successfully on the other node. |
|||
SET PASSWORD FOR 'user_6266'@'localhost' = PASSWORD('newpass'); |
|||
|
|||
# On node_2 |
|||
SELECT user FROM mysql.user WHERE user='user_6266'; |
|||
user |
|||
user_6266 |
|||
DROP USER 'user_6266'@'localhost'; |
|||
# End of test |
|||
@ -0,0 +1,23 @@ |
|||
# |
|||
# MDEV#4953 Galera: DELETE from a partitioned table is not replicated |
|||
# |
|||
USE test; |
|||
CREATE TABLE t1 (pk INT PRIMARY KEY, i INT) ENGINE=INNODB PARTITION BY HASH(pk) PARTITIONS 2; |
|||
INSERT INTO t1 VALUES (1,100), (2,200); |
|||
SELECT * FROM t1; |
|||
pk i |
|||
2 200 |
|||
1 100 |
|||
DELETE FROM t1; |
|||
SELECT * FROM t1; |
|||
pk i |
|||
|
|||
# On node_1 |
|||
SELECT * FROM t1; |
|||
pk i |
|||
|
|||
# On node_2 |
|||
SELECT * FROM t1; |
|||
pk i |
|||
DROP TABLE t1; |
|||
# End of test |
|||
@ -0,0 +1,47 @@ |
|||
# |
|||
# MDEV#5552 Deadlock when inserting NULL column value in column with |
|||
# UNIQUE index |
|||
# |
|||
USE test; |
|||
|
|||
# On node_1 |
|||
CREATE TABLE t1(c1 INT DEFAULT NULL, UNIQUE KEY c1(c1)) ENGINE=INNODB; |
|||
INSERT INTO t1 VALUES (NULL); |
|||
INSERT INTO t1 VALUES (NULL); |
|||
SELECT * FROM test.t1; |
|||
c1 |
|||
NULL |
|||
NULL |
|||
|
|||
# On node_2 |
|||
SELECT * FROM test.t1; |
|||
c1 |
|||
NULL |
|||
NULL |
|||
|
|||
# On node_1 |
|||
INSERT INTO t1 VALUES (1); |
|||
UPDATE t1 SET c1=NULL WHERE c1=1; |
|||
SELECT * FROM test.t1; |
|||
c1 |
|||
NULL |
|||
NULL |
|||
NULL |
|||
|
|||
# On node_2 |
|||
SELECT * FROM test.t1; |
|||
c1 |
|||
NULL |
|||
NULL |
|||
NULL |
|||
|
|||
# On node_1 |
|||
DELETE FROM t1 WHERE c1<=>NULL; |
|||
SELECT * FROM test.t1; |
|||
c1 |
|||
|
|||
# On node_2 |
|||
SELECT * FROM test.t1; |
|||
c1 |
|||
DROP TABLE t1; |
|||
# End of test |
|||
@ -0,0 +1,26 @@ |
|||
--source include/galera_cluster.inc |
|||
--source include/have_innodb.inc |
|||
|
|||
USE test; |
|||
CREATE TABLE t1(c1 INT PRIMARY KEY) ENGINE=INNODB; |
|||
INSERT INTO t1 VALUES (1), (2), (3), (4), (5); |
|||
SELECT * FROM t1; |
|||
|
|||
--echo |
|||
--echo # On node_1 |
|||
--connection node_1 |
|||
SELECT * FROM test.t1; |
|||
|
|||
--echo |
|||
--echo # On node_2 |
|||
--connection node_2 |
|||
SELECT * FROM test.t1; |
|||
|
|||
--let $galera_diff_statement = SELECT * FROM t1 |
|||
--source include/galera_diff.inc |
|||
|
|||
# Cleanup |
|||
DROP TABLE t1; |
|||
|
|||
--source include/galera_end.inc |
|||
--echo # End of test |
|||
@ -0,0 +1,43 @@ |
|||
# Embedded server doesn't support external clients |
|||
--source include/not_embedded.inc |
|||
# Binlog is required |
|||
--source include/have_log_bin.inc |
|||
|
|||
--echo # |
|||
--echo # Test for mysqldump's galera-sst-mode option |
|||
--echo # |
|||
|
|||
--echo # |
|||
--echo # MDEV-6490: mysqldump unknown option --galera-sst-mode |
|||
--echo # |
|||
CREATE DATABASE bug6490; |
|||
USE bug6490; |
|||
CREATE TABLE t1(c1 INT); |
|||
INSERT INTO t1 values (1); |
|||
INSERT INTO t1 values (2); |
|||
|
|||
--echo # Save the current gtid_binlog_state. |
|||
--let $before= `SELECT @@global.gtid_binlog_state` |
|||
|
|||
--echo # Take a dump of bug6490 database |
|||
--exec $MYSQL_DUMP --galera-sst-mode bug6490 > $MYSQLTEST_VARDIR/tmp/bug6490.sql |
|||
DROP TABLE t1; |
|||
|
|||
--echo # Load the dump |
|||
RESET MASTER; |
|||
--exec $MYSQL -uroot bug6490 < $MYSQLTEST_VARDIR/tmp/bug6490.sql |
|||
|
|||
SELECT * from t1; |
|||
|
|||
--echo # Compare the two gtid_binlog_state's |
|||
--let $after= `SELECT @@global.gtid_binlog_state` |
|||
if (`SELECT STRCMP($before, $after)`) |
|||
{ |
|||
--die ERROR: The two gtid_binlog_state's did not match. |
|||
} |
|||
|
|||
--echo # Cleanup |
|||
--remove_file $MYSQLTEST_VARDIR/tmp/bug6490.sql |
|||
DROP DATABASE bug6490; |
|||
|
|||
--echo # End of test |
|||
@ -0,0 +1,25 @@ |
|||
--source include/galera_cluster.inc |
|||
--source include/have_innodb.inc |
|||
|
|||
--echo # |
|||
--echo # MDEV#6266: Changing password fails on galera cluster |
|||
--echo # |
|||
|
|||
--echo |
|||
--echo # On node_1 |
|||
--connection node_1 |
|||
GRANT SELECT ON *.* TO 'user_6266'@'localhost' IDENTIFIED BY 'pass'; |
|||
--echo |
|||
--echo # Now, try changing password for 'user_6266'. This command should also |
|||
--echo # execute successfully on the other node. |
|||
SET PASSWORD FOR 'user_6266'@'localhost' = PASSWORD('newpass'); |
|||
|
|||
--echo |
|||
--echo # On node_2 |
|||
--connection node_2 |
|||
SELECT user FROM mysql.user WHERE user='user_6266'; |
|||
# cleanup |
|||
DROP USER 'user_6266'@'localhost'; |
|||
|
|||
--source include/galera_end.inc |
|||
--echo # End of test |
|||
@ -0,0 +1,31 @@ |
|||
--source include/galera_cluster.inc |
|||
--source include/have_innodb.inc |
|||
--source include/have_partition.inc |
|||
|
|||
--echo # |
|||
--echo # MDEV#4953 Galera: DELETE from a partitioned table is not replicated |
|||
--echo # |
|||
|
|||
USE test; |
|||
CREATE TABLE t1 (pk INT PRIMARY KEY, i INT) ENGINE=INNODB PARTITION BY HASH(pk) PARTITIONS 2; |
|||
INSERT INTO t1 VALUES (1,100), (2,200); |
|||
SELECT * FROM t1; |
|||
|
|||
DELETE FROM t1; |
|||
SELECT * FROM t1; |
|||
|
|||
--echo |
|||
--echo # On node_1 |
|||
--connection node_1 |
|||
SELECT * FROM t1; |
|||
|
|||
--echo |
|||
--echo # On node_2 |
|||
--connection node_2 |
|||
SELECT * FROM t1; |
|||
|
|||
# Cleanup |
|||
DROP TABLE t1; |
|||
|
|||
--source include/galera_end.inc |
|||
--echo # End of test |
|||
@ -0,0 +1,54 @@ |
|||
--source include/galera_cluster.inc |
|||
--source include/have_innodb.inc |
|||
|
|||
--echo # |
|||
--echo # MDEV#5552 Deadlock when inserting NULL column value in column with |
|||
--echo # UNIQUE index |
|||
--echo # |
|||
|
|||
USE test; |
|||
--echo |
|||
--echo # On node_1 |
|||
--connection node_1 |
|||
CREATE TABLE t1(c1 INT DEFAULT NULL, UNIQUE KEY c1(c1)) ENGINE=INNODB; |
|||
INSERT INTO t1 VALUES (NULL); |
|||
INSERT INTO t1 VALUES (NULL); |
|||
SELECT * FROM test.t1; |
|||
|
|||
--echo |
|||
--echo # On node_2 |
|||
--connection node_2 |
|||
SELECT * FROM test.t1; |
|||
|
|||
|
|||
--echo |
|||
--echo # On node_1 |
|||
--connection node_1 |
|||
INSERT INTO t1 VALUES (1); |
|||
UPDATE t1 SET c1=NULL WHERE c1=1; |
|||
SELECT * FROM test.t1; |
|||
|
|||
--echo |
|||
--echo # On node_2 |
|||
--connection node_2 |
|||
SELECT * FROM test.t1; |
|||
|
|||
--echo |
|||
--echo # On node_1 |
|||
--connection node_1 |
|||
DELETE FROM t1 WHERE c1<=>NULL; |
|||
SELECT * FROM test.t1; |
|||
|
|||
--echo |
|||
--echo # On node_2 |
|||
--connection node_2 |
|||
SELECT * FROM test.t1; |
|||
|
|||
--let $galera_diff_statement = SELECT * FROM t1 |
|||
--source include/galera_diff.inc |
|||
|
|||
# Cleanup |
|||
DROP TABLE t1; |
|||
|
|||
--source include/galera_end.inc |
|||
--echo # End of test |
|||
@ -0,0 +1,45 @@ |
|||
# |
|||
# innodb_disallow_writes |
|||
# |
|||
# save the initial value |
|||
SET @innodb_disallow_writes_global_saved = @@global.innodb_disallow_writes; |
|||
# default |
|||
SELECT @@global.innodb_disallow_writes; |
|||
@@global.innodb_disallow_writes |
|||
0 |
|||
|
|||
# scope |
|||
SELECT @@session.innodb_disallow_writes; |
|||
ERROR HY000: Variable 'innodb_disallow_writes' is a GLOBAL variable |
|||
SET @@global.innodb_disallow_writes=OFF; |
|||
SELECT @@global.innodb_disallow_writes; |
|||
@@global.innodb_disallow_writes |
|||
0 |
|||
SET @@global.innodb_disallow_writes=ON; |
|||
SELECT @@global.innodb_disallow_writes; |
|||
@@global.innodb_disallow_writes |
|||
1 |
|||
|
|||
# valid values |
|||
SET @@global.innodb_disallow_writes='OFF'; |
|||
SELECT @@global.innodb_disallow_writes; |
|||
@@global.innodb_disallow_writes |
|||
0 |
|||
SET @@global.innodb_disallow_writes=ON; |
|||
SELECT @@global.innodb_disallow_writes; |
|||
@@global.innodb_disallow_writes |
|||
1 |
|||
SET @@global.innodb_disallow_writes=default; |
|||
SELECT @@global.innodb_disallow_writes; |
|||
@@global.innodb_disallow_writes |
|||
0 |
|||
|
|||
# invalid values |
|||
SET @@global.innodb_disallow_writes=NULL; |
|||
ERROR 42000: Variable 'innodb_disallow_writes' can't be set to the value of 'NULL' |
|||
SET @@global.innodb_disallow_writes='junk'; |
|||
ERROR 42000: Variable 'innodb_disallow_writes' can't be set to the value of 'junk' |
|||
|
|||
# restore the initial value |
|||
SET @@global.innodb_disallow_writes = @innodb_disallow_writes_global_saved; |
|||
# End of test |
|||
@ -0,0 +1,8 @@ |
|||
set @start_value = @@wsrep_auto_increment_control; |
|||
set @@global.wsrep_auto_increment_control=ON; |
|||
set @@global.wsrep_auto_increment_control=OFF; |
|||
set @@global.wsrep_auto_increment_control=1; |
|||
set @@global.wsrep_auto_increment_control=0; |
|||
SET @@global.wsrep_auto_increment_control = -1; |
|||
ERROR 42000: Variable 'wsrep_auto_increment_control' can't be set to the value of '-1' |
|||
set @@global.wsrep_auto_increment_control = @start_value; |
|||
@ -0,0 +1,8 @@ |
|||
set @start_value = @@wsrep_causal_reads; |
|||
set @@global.wsrep_causal_reads=ON; |
|||
set @@global.wsrep_causal_reads=OFF; |
|||
set @@global.wsrep_causal_reads=1; |
|||
set @@global.wsrep_causal_reads=0; |
|||
SET @@global.wsrep_causal_reads = -1; |
|||
ERROR 42000: Variable 'wsrep_causal_reads' can't be set to the value of '-1' |
|||
set @@global.wsrep_causal_reads = @start_value; |
|||
@ -0,0 +1,8 @@ |
|||
set @start_value = @@wsrep_certify_nonpk; |
|||
set @@global.wsrep_certify_nonpk=ON; |
|||
set @@global.wsrep_certify_nonpk=OFF; |
|||
set @@global.wsrep_certify_nonpk=1; |
|||
set @@global.wsrep_certify_nonpk=0; |
|||
SET @@global.wsrep_certify_nonpk = -1; |
|||
ERROR 42000: Variable 'wsrep_certify_nonPK' can't be set to the value of '-1' |
|||
set @@global.wsrep_certify_nonpk = @start_value; |
|||
@ -0,0 +1,45 @@ |
|||
SELECT COUNT(@@GLOBAL.wsrep_cluster_address); |
|||
COUNT(@@GLOBAL.wsrep_cluster_address) |
|||
1 |
|||
1 Expected |
|||
SELECT COUNT(@@GLOBAL.wsrep_cluster_address); |
|||
COUNT(@@GLOBAL.wsrep_cluster_address) |
|||
1 |
|||
1 Expected |
|||
SELECT @@GLOBAL.wsrep_cluster_address = VARIABLE_VALUE |
|||
FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES |
|||
WHERE VARIABLE_NAME='wsrep_cluster_address'; |
|||
@@GLOBAL.wsrep_cluster_address = VARIABLE_VALUE |
|||
1 |
|||
1 Expected |
|||
SELECT COUNT(@@GLOBAL.wsrep_cluster_address); |
|||
COUNT(@@GLOBAL.wsrep_cluster_address) |
|||
1 |
|||
1 Expected |
|||
SELECT COUNT(VARIABLE_VALUE) |
|||
FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES |
|||
WHERE VARIABLE_NAME='wsrep_cluster_address'; |
|||
COUNT(VARIABLE_VALUE) |
|||
1 |
|||
1 Expected |
|||
SELECT @@wsrep_cluster_address = @@GLOBAL.wsrep_cluster_address; |
|||
@@wsrep_cluster_address = @@GLOBAL.wsrep_cluster_address |
|||
1 |
|||
1 Expected |
|||
SELECT COUNT(@@wsrep_cluster_address); |
|||
COUNT(@@wsrep_cluster_address) |
|||
1 |
|||
1 Expected |
|||
SELECT COUNT(@@local.wsrep_cluster_address); |
|||
ERROR HY000: Variable 'wsrep_cluster_address' is a GLOBAL variable |
|||
Expected error 'Variable is a GLOBAL variable' |
|||
SELECT COUNT(@@SESSION.wsrep_cluster_address); |
|||
ERROR HY000: Variable 'wsrep_cluster_address' is a GLOBAL variable |
|||
Expected error 'Variable is a GLOBAL variable' |
|||
SELECT COUNT(@@GLOBAL.wsrep_cluster_address); |
|||
COUNT(@@GLOBAL.wsrep_cluster_address) |
|||
1 |
|||
1 Expected |
|||
SELECT wsrep_cluster_address = @@SESSION.wsrep_cluster_address; |
|||
ERROR 42S22: Unknown column 'wsrep_cluster_address' in 'field list' |
|||
Expected error 'Readonly variable' |
|||
@ -0,0 +1,7 @@ |
|||
set @start_value = @@wsrep_cluster_name; |
|||
set @@global.wsrep_cluster_name='test'; |
|||
set @@global.wsrep_cluster_name=NULL; |
|||
ERROR 42000: Variable 'wsrep_cluster_name' can't be set to the value of 'NULL' |
|||
SET @@global.wsrep_cluster_name = 1; |
|||
ERROR 42000: Incorrect argument type to variable 'wsrep_cluster_name' |
|||
set @@global.wsrep_cluster_name = @start_value; |
|||
@ -0,0 +1,8 @@ |
|||
set @start_value = @@wsrep_convert_lock_to_trx; |
|||
set @@global.wsrep_convert_lock_to_trx=ON; |
|||
set @@global.wsrep_convert_lock_to_trx=OFF; |
|||
set @@global.wsrep_convert_lock_to_trx=1; |
|||
set @@global.wsrep_convert_lock_to_trx=0; |
|||
SET @@global.wsrep_convert_lock_to_trx = -1; |
|||
ERROR 42000: Variable 'wsrep_convert_LOCK_to_trx' can't be set to the value of '-1' |
|||
set @@global.wsrep_convert_lock_to_trx = @start_value; |
|||
@ -0,0 +1,48 @@ |
|||
SELECT COUNT(@@GLOBAL.wsrep_data_home_dir); |
|||
COUNT(@@GLOBAL.wsrep_data_home_dir) |
|||
1 |
|||
1 Expected |
|||
SET @@GLOBAL.wsrep_data_home_dir=1; |
|||
ERROR HY000: Variable 'wsrep_data_home_dir' is a read only variable |
|||
Expected error 'Read only variable' |
|||
SELECT COUNT(@@GLOBAL.wsrep_data_home_dir); |
|||
COUNT(@@GLOBAL.wsrep_data_home_dir) |
|||
1 |
|||
1 Expected |
|||
SELECT @@GLOBAL.wsrep_data_home_dir = VARIABLE_VALUE |
|||
FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES |
|||
WHERE VARIABLE_NAME='wsrep_data_home_dir'; |
|||
@@GLOBAL.wsrep_data_home_dir = VARIABLE_VALUE |
|||
1 |
|||
1 Expected |
|||
SELECT COUNT(@@GLOBAL.wsrep_data_home_dir); |
|||
COUNT(@@GLOBAL.wsrep_data_home_dir) |
|||
1 |
|||
1 Expected |
|||
SELECT COUNT(VARIABLE_VALUE) |
|||
FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES |
|||
WHERE VARIABLE_NAME='wsrep_data_home_dir'; |
|||
COUNT(VARIABLE_VALUE) |
|||
1 |
|||
1 Expected |
|||
SELECT @@wsrep_data_home_dir = @@GLOBAL.wsrep_data_home_dir; |
|||
@@wsrep_data_home_dir = @@GLOBAL.wsrep_data_home_dir |
|||
1 |
|||
1 Expected |
|||
SELECT COUNT(@@wsrep_data_home_dir); |
|||
COUNT(@@wsrep_data_home_dir) |
|||
1 |
|||
1 Expected |
|||
SELECT COUNT(@@local.wsrep_data_home_dir); |
|||
ERROR HY000: Variable 'wsrep_data_home_dir' is a GLOBAL variable |
|||
Expected error 'Variable is a GLOBAL variable' |
|||
SELECT COUNT(@@SESSION.wsrep_data_home_dir); |
|||
ERROR HY000: Variable 'wsrep_data_home_dir' is a GLOBAL variable |
|||
Expected error 'Variable is a GLOBAL variable' |
|||
SELECT COUNT(@@GLOBAL.wsrep_data_home_dir); |
|||
COUNT(@@GLOBAL.wsrep_data_home_dir) |
|||
1 |
|||
1 Expected |
|||
SELECT wsrep_data_home_dir = @@SESSION.wsrep_data_home_dir; |
|||
ERROR 42S22: Unknown column 'wsrep_data_home_dir' in 'field list' |
|||
Expected error 'Readonly variable' |
|||
@ -0,0 +1,6 @@ |
|||
set @start_value = @@wsrep_dbug_option; |
|||
set @@global.wsrep_dbug_option='foo:bar'; |
|||
set @@global.wsrep_dbug_option=NULL; |
|||
SET @@global.wsrep_dbug_option = -1; |
|||
ERROR 42000: Incorrect argument type to variable 'wsrep_dbug_option' |
|||
set @@global.wsrep_dbug_option = @start_value; |
|||
@ -0,0 +1,8 @@ |
|||
set @start_value = @@wsrep_debug; |
|||
set @@global.wsrep_debug=ON; |
|||
set @@global.wsrep_debug=OFF; |
|||
set @@global.wsrep_debug=1; |
|||
set @@global.wsrep_debug=0; |
|||
SET @@global.wsrep_debug = -1; |
|||
ERROR 42000: Variable 'wsrep_debug' can't be set to the value of '-1' |
|||
set @@global.wsrep_debug = @start_value; |
|||
@ -0,0 +1,3 @@ |
|||
select @@global.wsrep_desync; |
|||
@@global.wsrep_desync |
|||
0 |
|||
@ -0,0 +1,8 @@ |
|||
set @start_value = @@wsrep_drupal_282555_workaround; |
|||
set @@global.wsrep_drupal_282555_workaround=ON; |
|||
set @@global.wsrep_drupal_282555_workaround=OFF; |
|||
set @@global.wsrep_drupal_282555_workaround=1; |
|||
set @@global.wsrep_drupal_282555_workaround=0; |
|||
SET @@global.wsrep_drupal_282555_workaround = -1; |
|||
ERROR 42000: Variable 'wsrep_drupal_282555_workaround' can't be set to the value of '-1' |
|||
set @@global.wsrep_drupal_282555_workaround = @start_value; |
|||
@ -0,0 +1,8 @@ |
|||
set @start_value = @@wsrep_forced_binlog_format; |
|||
set @@global.wsrep_forced_binlog_format = ROW; |
|||
set @@global.wsrep_forced_binlog_format = MIXED; |
|||
set @@global.wsrep_forced_binlog_format = STATEMENT; |
|||
set @@global.wsrep_forced_binlog_format = NONE; |
|||
set @@global.wsrep_forced_binlog_format = FOO; |
|||
ERROR 42000: Variable 'wsrep_forced_binlog_format' can't be set to the value of 'FOO' |
|||
set @@global.wsrep_forced_binlog_format = @start_value; |
|||
@ -0,0 +1,8 @@ |
|||
set @start_value = @@wsrep_load_data_splitting; |
|||
set @@global.wsrep_load_data_splitting=ON; |
|||
set @@global.wsrep_load_data_splitting=OFF; |
|||
set @@global.wsrep_load_data_splitting=1; |
|||
set @@global.wsrep_load_data_splitting=0; |
|||
SET @@global.wsrep_load_data_splitting = -1; |
|||
ERROR 42000: Variable 'wsrep_load_data_splitting' can't be set to the value of '-1' |
|||
set @@global.wsrep_load_data_splitting = @start_value; |
|||
@ -0,0 +1,8 @@ |
|||
set @start_value = @@wsrep_log_conflicts; |
|||
set @@global.wsrep_log_conflicts=ON; |
|||
set @@global.wsrep_log_conflicts=OFF; |
|||
set @@global.wsrep_log_conflicts=1; |
|||
set @@global.wsrep_log_conflicts=0; |
|||
SET @@global.wsrep_log_conflicts = -1; |
|||
ERROR 42000: Variable 'wsrep_log_conflicts' can't be set to the value of '-1' |
|||
set @@global.wsrep_log_conflicts = @start_value; |
|||
@ -0,0 +1,17 @@ |
|||
set @start_value = @@wsrep_max_ws_rows; |
|||
set @@global.wsrep_max_ws_rows=256000; |
|||
set @@global.wsrep_max_ws_rows=0; |
|||
Warnings: |
|||
Warning 1292 Truncated incorrect wsrep_max_ws_rows value: '0' |
|||
show warnings; |
|||
Level Code Message |
|||
Warning 1292 Truncated incorrect wsrep_max_ws_rows value: '0' |
|||
set @@global.wsrep_max_ws_rows=-1; |
|||
Warnings: |
|||
Warning 1292 Truncated incorrect wsrep_max_ws_rows value: '-1' |
|||
show warnings; |
|||
Level Code Message |
|||
Warning 1292 Truncated incorrect wsrep_max_ws_rows value: '-1' |
|||
SET @@global.wsrep_max_ws_rows = r; |
|||
ERROR 42000: Incorrect argument type to variable 'wsrep_max_ws_rows' |
|||
set @@global.wsrep_max_ws_rows = @start_value; |
|||
@ -0,0 +1,17 @@ |
|||
set @start_value = @@wsrep_max_ws_size; |
|||
set @@global.wsrep_max_ws_size=256000; |
|||
set @@global.wsrep_max_ws_size=0; |
|||
Warnings: |
|||
Warning 1292 Truncated incorrect wsrep_max_ws_size value: '0' |
|||
show warnings; |
|||
Level Code Message |
|||
Warning 1292 Truncated incorrect wsrep_max_ws_size value: '0' |
|||
set @@global.wsrep_max_ws_size=-1; |
|||
Warnings: |
|||
Warning 1292 Truncated incorrect wsrep_max_ws_size value: '-1' |
|||
show warnings; |
|||
Level Code Message |
|||
Warning 1292 Truncated incorrect wsrep_max_ws_size value: '-1' |
|||
SET @@global.wsrep_max_ws_size = r; |
|||
ERROR 42000: Incorrect argument type to variable 'wsrep_max_ws_size' |
|||
set @@global.wsrep_max_ws_size = @start_value; |
|||
@ -0,0 +1,18 @@ |
|||
set @start_value = @@wsrep_mysql_replication_bundle; |
|||
set @@global.wsrep_mysql_replication_bundle=0; |
|||
set @@global.wsrep_mysql_replication_bundle=1000; |
|||
set @@global.wsrep_mysql_replication_bundle=-1; |
|||
Warnings: |
|||
Warning 1292 Truncated incorrect wsrep_mysql_replication_bundle value: '-1' |
|||
show warnings; |
|||
Level Code Message |
|||
Warning 1292 Truncated incorrect wsrep_mysql_replication_bundle value: '-1' |
|||
set @@global.wsrep_mysql_replication_bundle=1001; |
|||
Warnings: |
|||
Warning 1292 Truncated incorrect wsrep_mysql_replication_bundle value: '1001' |
|||
show warnings; |
|||
Level Code Message |
|||
Warning 1292 Truncated incorrect wsrep_mysql_replication_bundle value: '1001' |
|||
SET @@global.wsrep_mysql_replication_bundle = r; |
|||
ERROR 42000: Incorrect argument type to variable 'wsrep_mysql_replication_bundle' |
|||
set @@global.wsrep_mysql_replication_bundle = @start_value; |
|||
@ -0,0 +1,45 @@ |
|||
SELECT COUNT(@@GLOBAL.wsrep_node_address); |
|||
COUNT(@@GLOBAL.wsrep_node_address) |
|||
1 |
|||
1 Expected |
|||
SET @@GLOBAL.wsrep_node_address=1; |
|||
ERROR 42000: Incorrect argument type to variable 'wsrep_node_address' |
|||
Expected error 'Read only variable' |
|||
SELECT COUNT(@@GLOBAL.wsrep_node_address); |
|||
COUNT(@@GLOBAL.wsrep_node_address) |
|||
1 |
|||
1 Expected |
|||
SELECT @@GLOBAL.wsrep_node_address = VARIABLE_VALUE |
|||
FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES |
|||
WHERE VARIABLE_NAME='wsrep_node_address'; |
|||
@@GLOBAL.wsrep_node_address = VARIABLE_VALUE |
|||
1 |
|||
1 Expected |
|||
SELECT COUNT(@@GLOBAL.wsrep_node_address); |
|||
COUNT(@@GLOBAL.wsrep_node_address) |
|||
1 |
|||
1 Expected |
|||
SELECT COUNT(VARIABLE_VALUE) |
|||
FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES |
|||
WHERE VARIABLE_NAME='wsrep_node_address'; |
|||
COUNT(VARIABLE_VALUE) |
|||
1 |
|||
1 Expected |
|||
SELECT @@wsrep_node_address = @@GLOBAL.wsrep_node_address; |
|||
@@wsrep_node_address = @@GLOBAL.wsrep_node_address |
|||
1 |
|||
1 Expected |
|||
SELECT COUNT(@@wsrep_node_address); |
|||
COUNT(@@wsrep_node_address) |
|||
1 |
|||
1 Expected |
|||
SELECT COUNT(@@local.wsrep_node_address); |
|||
ERROR HY000: Variable 'wsrep_node_address' is a GLOBAL variable |
|||
Expected error 'Variable is a GLOBAL variable' |
|||
SELECT COUNT(@@SESSION.wsrep_node_address); |
|||
ERROR HY000: Variable 'wsrep_node_address' is a GLOBAL variable |
|||
Expected error 'Variable is a GLOBAL variable' |
|||
SELECT COUNT(@@GLOBAL.wsrep_node_address); |
|||
COUNT(@@GLOBAL.wsrep_node_address) |
|||
1 |
|||
1 Expected |
|||
@ -0,0 +1,45 @@ |
|||
SELECT COUNT(@@GLOBAL.wsrep_node_incoming_address); |
|||
COUNT(@@GLOBAL.wsrep_node_incoming_address) |
|||
1 |
|||
1 Expected |
|||
SET @@GLOBAL.wsrep_node_incoming_address=1; |
|||
ERROR 42000: Incorrect argument type to variable 'wsrep_node_incoming_address' |
|||
Expected error 'Read only variable' |
|||
SELECT COUNT(@@GLOBAL.wsrep_node_incoming_address); |
|||
COUNT(@@GLOBAL.wsrep_node_incoming_address) |
|||
1 |
|||
1 Expected |
|||
SELECT @@GLOBAL.wsrep_node_incoming_address = VARIABLE_VALUE |
|||
FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES |
|||
WHERE VARIABLE_NAME='wsrep_node_incoming_address'; |
|||
@@GLOBAL.wsrep_node_incoming_address = VARIABLE_VALUE |
|||
1 |
|||
1 Expected |
|||
SELECT COUNT(@@GLOBAL.wsrep_node_incoming_address); |
|||
COUNT(@@GLOBAL.wsrep_node_incoming_address) |
|||
1 |
|||
1 Expected |
|||
SELECT COUNT(VARIABLE_VALUE) |
|||
FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES |
|||
WHERE VARIABLE_NAME='wsrep_node_incoming_address'; |
|||
COUNT(VARIABLE_VALUE) |
|||
1 |
|||
1 Expected |
|||
SELECT @@wsrep_node_incoming_address = @@GLOBAL.wsrep_node_incoming_address; |
|||
@@wsrep_node_incoming_address = @@GLOBAL.wsrep_node_incoming_address |
|||
1 |
|||
1 Expected |
|||
SELECT COUNT(@@wsrep_node_incoming_address); |
|||
COUNT(@@wsrep_node_incoming_address) |
|||
1 |
|||
1 Expected |
|||
SELECT COUNT(@@local.wsrep_node_incoming_address); |
|||
ERROR HY000: Variable 'wsrep_node_incoming_address' is a GLOBAL variable |
|||
Expected error 'Variable is a GLOBAL variable' |
|||
SELECT COUNT(@@SESSION.wsrep_node_incoming_address); |
|||
ERROR HY000: Variable 'wsrep_node_incoming_address' is a GLOBAL variable |
|||
Expected error 'Variable is a GLOBAL variable' |
|||
SELECT COUNT(@@GLOBAL.wsrep_node_incoming_address); |
|||
COUNT(@@GLOBAL.wsrep_node_incoming_address) |
|||
1 |
|||
1 Expected |
|||
@ -0,0 +1,6 @@ |
|||
set @start_value = @@wsrep_node_name; |
|||
set @@global.wsrep_node_name='test'; |
|||
set @@global.wsrep_node_name=NULL; |
|||
SET @@global.wsrep_node_name = 1; |
|||
ERROR 42000: Incorrect argument type to variable 'wsrep_node_name' |
|||
set @@global.wsrep_node_name = @start_value; |
|||
@ -0,0 +1,6 @@ |
|||
set @start_value = @@wsrep_notify_cmd; |
|||
set @@global.wsrep_notify_cmd='test'; |
|||
set @@global.wsrep_notify_cmd=NULL; |
|||
SET @@global.wsrep_notify_cmd = 1; |
|||
ERROR 42000: Incorrect argument type to variable 'wsrep_notify_cmd' |
|||
set @@global.wsrep_notify_cmd = @start_value; |
|||
@ -0,0 +1,8 @@ |
|||
set @start_value = @@wsrep_on; |
|||
set @@global.wsrep_on=ON; |
|||
set @@global.wsrep_on=OFF; |
|||
set @@global.wsrep_on=1; |
|||
set @@global.wsrep_on=0; |
|||
SET @@global.wsrep_on = -1; |
|||
ERROR 42000: Variable 'wsrep_on' can't be set to the value of '-1' |
|||
set @@global.wsrep_on = @start_value; |
|||
@ -0,0 +1,12 @@ |
|||
set @start_value = @@wsrep_osu_method; |
|||
set @@global.wsrep_osu_method='TOI'; |
|||
set @@global.wsrep_osu_method='RSU'; |
|||
set @@global.wsrep_osu_method=TOI; |
|||
set @@global.wsrep_osu_method=RSU; |
|||
set @@global.wsrep_osu_method=TSU; |
|||
ERROR 42000: Variable 'wsrep_OSU_method' can't be set to the value of 'TSU' |
|||
set @@global.wsrep_osu_method='TSU'; |
|||
ERROR 42000: Variable 'wsrep_OSU_method' can't be set to the value of 'TSU' |
|||
SET @@global.wsrep_on = -1; |
|||
ERROR 42000: Variable 'wsrep_on' can't be set to the value of '-1' |
|||
set @@global.wsrep_osu_method = @start_value; |
|||
@ -0,0 +1,4 @@ |
|||
SELECT COUNT(@@GLOBAL.wsrep_provider); |
|||
COUNT(@@GLOBAL.wsrep_provider) |
|||
1 |
|||
1 Expected |
|||
@ -0,0 +1,4 @@ |
|||
SELECT COUNT(@@GLOBAL.wsrep_provider_options); |
|||
COUNT(@@GLOBAL.wsrep_provider_options) |
|||
1 |
|||
1 Expected |
|||
@ -0,0 +1,49 @@ |
|||
SELECT COUNT(@@GLOBAL.wsrep_recover); |
|||
COUNT(@@GLOBAL.wsrep_recover) |
|||
1 |
|||
1 Expected |
|||
set @@global.wsrep_recover=ON; |
|||
ERROR HY000: Variable 'wsrep_recover' is a read only variable |
|||
Expected error 'Readonly variable' |
|||
set @@global.wsrep_recover=OFF; |
|||
ERROR HY000: Variable 'wsrep_recover' is a read only variable |
|||
Expected error 'Readonly variable' |
|||
SELECT @@GLOBAL.wsrep_recover = VARIABLE_VALUE |
|||
FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES |
|||
WHERE VARIABLE_NAME='wsrep_recover'; |
|||
@@GLOBAL.wsrep_recover = VARIABLE_VALUE |
|||
1 |
|||
Warnings: |
|||
Warning 1292 Truncated incorrect DOUBLE value: 'OFF' |
|||
1 Expected |
|||
SELECT COUNT(@@GLOBAL.wsrep_recover); |
|||
COUNT(@@GLOBAL.wsrep_recover) |
|||
1 |
|||
1 Expected |
|||
SELECT COUNT(VARIABLE_VALUE) |
|||
FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES |
|||
WHERE VARIABLE_NAME='wsrep_recover'; |
|||
COUNT(VARIABLE_VALUE) |
|||
1 |
|||
1 Expected |
|||
SELECT @@wsrep_recover = @@GLOBAL.wsrep_recover; |
|||
@@wsrep_recover = @@GLOBAL.wsrep_recover |
|||
1 |
|||
1 Expected |
|||
SELECT COUNT(@@wsrep_recover); |
|||
COUNT(@@wsrep_recover) |
|||
1 |
|||
1 Expected |
|||
SELECT COUNT(@@local.wsrep_recover); |
|||
ERROR HY000: Variable 'wsrep_recover' is a GLOBAL variable |
|||
Expected error 'Variable is a GLOBAL variable' |
|||
SELECT COUNT(@@SESSION.wsrep_recover); |
|||
ERROR HY000: Variable 'wsrep_recover' is a GLOBAL variable |
|||
Expected error 'Variable is a GLOBAL variable' |
|||
SELECT COUNT(@@GLOBAL.wsrep_recover); |
|||
COUNT(@@GLOBAL.wsrep_recover) |
|||
1 |
|||
1 Expected |
|||
SELECT wsrep_recover = @@SESSION.wsrep_recover; |
|||
ERROR 42S22: Unknown column 'wsrep_recover' in 'field list' |
|||
Expected error 'Readonly variable' |
|||
@ -0,0 +1,8 @@ |
|||
set @start_value = @@wsrep_replicate_myisam; |
|||
set @@global.wsrep_replicate_myisam=ON; |
|||
set @@global.wsrep_replicate_myisam=OFF; |
|||
set @@global.wsrep_replicate_myisam=1; |
|||
set @@global.wsrep_replicate_myisam=0; |
|||
SET @@global.wsrep_replicate_myisam = -1; |
|||
ERROR 42000: Variable 'wsrep_replicate_myisam' can't be set to the value of '-1' |
|||
set @@global.wsrep_replicate_myisam = @start_value; |
|||
@ -0,0 +1,8 @@ |
|||
set @start_value = @@wsrep_restart_slave; |
|||
set @@global.wsrep_restart_slave=ON; |
|||
set @@global.wsrep_restart_slave=OFF; |
|||
set @@global.wsrep_restart_slave=1; |
|||
set @@global.wsrep_restart_slave=0; |
|||
SET @@global.wsrep_restart_slave = -1; |
|||
ERROR 42000: Variable 'wsrep_restart_slave' can't be set to the value of '-1' |
|||
set @@global.wsrep_restart_slave = @start_value; |
|||
@ -0,0 +1,8 @@ |
|||
set @start_value = @@wsrep_restart_slave; |
|||
set @@global.wsrep_restart_slave=ON; |
|||
set @@global.wsrep_restart_slave=OFF; |
|||
set @@global.wsrep_restart_slave=1; |
|||
set @@global.wsrep_restart_slave=0; |
|||
SET @@global.wsrep_restart_slave = -1; |
|||
ERROR 42000: Variable 'wsrep_restart_slave' can't be set to the value of '-1' |
|||
set @@global.wsrep_restart_slave = @start_value; |
|||
@ -0,0 +1,45 @@ |
|||
# |
|||
# wsrep_slave_fk_checks |
|||
# |
|||
# save the initial value |
|||
SET @wsrep_slave_fk_checks_global_saved = @@global.wsrep_slave_fk_checks; |
|||
# default |
|||
SELECT @@global.wsrep_slave_fk_checks; |
|||
@@global.wsrep_slave_fk_checks |
|||
1 |
|||
|
|||
# scope |
|||
SELECT @@session.wsrep_slave_fk_checks; |
|||
ERROR HY000: Variable 'wsrep_slave_FK_checks' is a GLOBAL variable |
|||
SET @@global.wsrep_slave_fk_checks=OFF; |
|||
SELECT @@global.wsrep_slave_fk_checks; |
|||
@@global.wsrep_slave_fk_checks |
|||
0 |
|||
SET @@global.wsrep_slave_fk_checks=ON; |
|||
SELECT @@global.wsrep_slave_fk_checks; |
|||
@@global.wsrep_slave_fk_checks |
|||
1 |
|||
|
|||
# valid values |
|||
SET @@global.wsrep_slave_fk_checks='OFF'; |
|||
SELECT @@global.wsrep_slave_fk_checks; |
|||
@@global.wsrep_slave_fk_checks |
|||
0 |
|||
SET @@global.wsrep_slave_fk_checks=ON; |
|||
SELECT @@global.wsrep_slave_fk_checks; |
|||
@@global.wsrep_slave_fk_checks |
|||
1 |
|||
SET @@global.wsrep_slave_fk_checks=default; |
|||
SELECT @@global.wsrep_slave_fk_checks; |
|||
@@global.wsrep_slave_fk_checks |
|||
1 |
|||
|
|||
# invalid values |
|||
SET @@global.wsrep_slave_fk_checks=NULL; |
|||
ERROR 42000: Variable 'wsrep_slave_FK_checks' can't be set to the value of 'NULL' |
|||
SET @@global.wsrep_slave_fk_checks='junk'; |
|||
ERROR 42000: Variable 'wsrep_slave_FK_checks' can't be set to the value of 'junk' |
|||
|
|||
# restore the initial value |
|||
SET @@global.wsrep_slave_fk_checks = @wsrep_slave_fk_checks_global_saved; |
|||
# End of test |
|||
@ -0,0 +1,20 @@ |
|||
set @start_value = @@wsrep_slave_threads; |
|||
set @@global.wsrep_slave_threads=1; |
|||
set @@global.wsrep_slave_threads=4; |
|||
show warnings; |
|||
Level Code Message |
|||
set @@global.wsrep_slave_threads=0; |
|||
Warnings: |
|||
Warning 1292 Truncated incorrect wsrep_slave_threads value: '0' |
|||
show warnings; |
|||
Level Code Message |
|||
Warning 1292 Truncated incorrect wsrep_slave_threads value: '0' |
|||
set @@global.wsrep_slave_threads=-1; |
|||
Warnings: |
|||
Warning 1292 Truncated incorrect wsrep_slave_threads value: '-1' |
|||
show warnings; |
|||
Level Code Message |
|||
Warning 1292 Truncated incorrect wsrep_slave_threads value: '-1' |
|||
SET @@global.wsrep_slave_threads = r; |
|||
ERROR 42000: Incorrect argument type to variable 'wsrep_slave_threads' |
|||
set @@global.wsrep_slave_threads = @start_value; |
|||
@ -0,0 +1,45 @@ |
|||
# |
|||
# wsrep_slave_uk_checks |
|||
# |
|||
# save the initial value |
|||
SET @wsrep_slave_uk_checks_global_saved = @@global.wsrep_slave_uk_checks; |
|||
# default |
|||
SELECT @@global.wsrep_slave_uk_checks; |
|||
@@global.wsrep_slave_uk_checks |
|||
0 |
|||
|
|||
# scope |
|||
SELECT @@session.wsrep_slave_uk_checks; |
|||
ERROR HY000: Variable 'wsrep_slave_UK_checks' is a GLOBAL variable |
|||
SET @@global.wsrep_slave_uk_checks=OFF; |
|||
SELECT @@global.wsrep_slave_uk_checks; |
|||
@@global.wsrep_slave_uk_checks |
|||
0 |
|||
SET @@global.wsrep_slave_uk_checks=ON; |
|||
SELECT @@global.wsrep_slave_uk_checks; |
|||
@@global.wsrep_slave_uk_checks |
|||
1 |
|||
|
|||
# valid values |
|||
SET @@global.wsrep_slave_uk_checks='OFF'; |
|||
SELECT @@global.wsrep_slave_uk_checks; |
|||
@@global.wsrep_slave_uk_checks |
|||
0 |
|||
SET @@global.wsrep_slave_uk_checks=ON; |
|||
SELECT @@global.wsrep_slave_uk_checks; |
|||
@@global.wsrep_slave_uk_checks |
|||
1 |
|||
SET @@global.wsrep_slave_uk_checks=default; |
|||
SELECT @@global.wsrep_slave_uk_checks; |
|||
@@global.wsrep_slave_uk_checks |
|||
0 |
|||
|
|||
# invalid values |
|||
SET @@global.wsrep_slave_uk_checks=NULL; |
|||
ERROR 42000: Variable 'wsrep_slave_UK_checks' can't be set to the value of 'NULL' |
|||
SET @@global.wsrep_slave_uk_checks='junk'; |
|||
ERROR 42000: Variable 'wsrep_slave_UK_checks' can't be set to the value of 'junk' |
|||
|
|||
# restore the initial value |
|||
SET @@global.wsrep_slave_uk_checks = @wsrep_slave_uk_checks_global_saved; |
|||
# End of test |
|||
@ -0,0 +1,3 @@ |
|||
SELECT COUNT(@@wsrep_sst_auth); |
|||
COUNT(@@wsrep_sst_auth) |
|||
0 |
|||
@ -0,0 +1,10 @@ |
|||
SELECT COUNT(@@wsrep_sst_donor); |
|||
COUNT(@@wsrep_sst_donor) |
|||
1 |
|||
set @start_value = @@wsrep_sst_donor; |
|||
set @@global.wsrep_sst_donor='foo'; |
|||
set @@global.wsrep_sst_donor=NULL; |
|||
set @@global.wsrep_sst_donor=r; |
|||
set @@global.wsrep_sst_donor=1; |
|||
ERROR 42000: Incorrect argument type to variable 'wsrep_sst_donor' |
|||
set @@global.wsrep_sst_donor = @start_value; |
|||
@ -0,0 +1,8 @@ |
|||
set @start_value = @@wsrep_sst_donor_rejects_queries; |
|||
set @@global.wsrep_sst_donor_rejects_queries=ON; |
|||
set @@global.wsrep_sst_donor_rejects_queries=OFF; |
|||
set @@global.wsrep_sst_donor_rejects_queries=1; |
|||
set @@global.wsrep_sst_donor_rejects_queries=0; |
|||
SET @@global.wsrep_sst_donor_rejects_queries = -1; |
|||
ERROR 42000: Variable 'wsrep_sst_donor_rejects_queries' can't be set to the value of '-1' |
|||
set @@global.wsrep_sst_donor_rejects_queries = @start_value; |
|||
Some files were not shown because too many files changed in this diff
Write
Preview
Loading…
Cancel
Save
Reference in new issue