Commit graph

90 commits

Author SHA1 Message Date
Elena Stepanova
31031a52da MDEV-11870 Message "MariaDB Galera and flashback does not support"
Fixed the typo, updated result file and suppression in the test
file which did not work anyway
2017-01-23 01:06:31 +02:00
Monty
d75d8631ed [MDEV-10570] Add Flashback support
==== Description ====

Flashback can rollback the instances/databases/tables to an old snapshot.
It's implement on Server-Level by full image format binary logs (--binlog-row-image=FULL), so it supports all engines.
Currently, it’s a feature inside mysqlbinlog tool (with --flashback arguments).

Because the flashback binlog events will store in the memory, you should check if there is enough memory in your machine.

==== New Arguments to mysqlbinlog ====

--flashback (-B)
It will let mysqlbinlog to work on FLASHBACK mode.

==== New Arguments to mysqld ====

--flashback

Setup the server to use flashback. This enables binary log in row mode
and will enable extra logging for DDL's needed by flashback feature

==== Example ====

I have a table "t" in database "test", we can compare the output with "--flashback" and without.

#client/mysqlbinlog /data/mysqldata_10.0/binlog/mysql-bin.000001 -vv -d test -T t --start-datetime="2013-03-27 14:54:00" > /tmp/1.sql
#client/mysqlbinlog /data/mysqldata_10.0/binlog/mysql-bin.000001 -vv -d test -T t --start-datetime="2013-03-27 14:54:00" -B > /tmp/2.sql

Then, importing the output flashback file (/tmp/2.log), it can flashback your database/table to the special time (--start-datetime).
And if you know the exact postion, "--start-postion" is also works, mysqlbinlog will output the flashback logs that can flashback to "--start-postion" position.

==== Implement ====

1. As we know, if binlog_format is ROW (binlog-row-image=FULL in 10.1 and later), all columns value are store in the row event, so we can get the data before mis-operation.

2. Just do following things:

  2.1 Change Event Type, INSERT->DELETE, DELETE->INSERT.
  For example:
    INSERT INTO t VALUES (...)  ---> DELETE FROM t WHERE ...
    DELETE FROM t ... ---> INSERT INTO t VALUES (...)

  2.2 For Update_Event, swapping the SET part and WHERE part.
  For example:
    UPDATE t SET cols1 = vals1 WHERE cols2 = vals2
    --->
    UPDATE t SET cols2 = vals2 WHERE cols1 = vals1

  2.3 For Multi-Rows Event, reverse the rows sequence, from the last row to the first row.
  For example:
    DELETE FROM t WHERE id=1; DELETE FROM t WHERE id=2; ...; DELETE FROM t WHERE id=n;
    --->
    DELETE FROM t WHERE id=n; ...; DELETE FROM t WHERE id=2; DELETE FROM t WHERE id=1;

  2.4 Output those events from the last one to the first one which mis-operation happened.
  For example:
2017-01-20 15:33:28 +02:00
Sergei Golubchik
4a5d25c338 Merge branch '10.1' into 10.2 2016-12-29 13:23:18 +01:00
Nirbhay Choubey
2c734e7be3 MDEV-10993: wsrep.mdev_10186 result depends on location of
... galera library

Update test case.
2016-12-19 16:12:26 -05:00
Nirbhay Choubey
07918b48b8 MDEV-10993: wsrep.mdev_10186 result depends on location of galera library
Update test case.
2016-11-02 09:45:43 -04:00
Nirbhay Choubey
e1c6f28f0d Merge branch '10.0-galera' into 10.1 2016-09-28 13:20:02 -04:00
Sergei Golubchik
06b7fce9f2 Merge branch '10.1' into 10.2 2016-09-09 08:33:08 +02:00
Nirbhay Choubey
3dd88fbd11 MDEV-10714: Could not execute Delete_rows event on table; wsrep_max_ws_rows exceeded. Error_Code 1180
The wsrep_max_ws_rows related implementation should be skipped
when server is running with wsrep disabled.
2016-09-01 12:59:11 -04:00
Monty
e139d971ec Fixed compiler warning and failing test suite because system dependency 2016-08-29 13:11:34 +03:00
Nirbhay Choubey
3575618237 Post merge fixes. 2016-08-25 21:28:26 -04:00
Nirbhay Choubey
16702ec95f Record wsrep.variables test result (with non-debug galera library). 2016-08-25 21:19:25 -04:00
Nirbhay Choubey
90266e8a0e Merge branch '10.0-galera' into bb-10.1-serg 2016-08-25 15:39:39 -04:00
Nirbhay Choubey
8b998a48cc Update galera version-dependent tests. 2016-08-21 16:17:04 -04:00
Nirbhay Choubey
90f222ea7d MDEV-10235: Deadlock in CREATE TABLE .. AS SELECT .. if result set is empty in Galera
In CTAS, handlers get registered under statement transaction
(st_transactions::stmt), while ha_fake_trx_id(), used by CTAS,
looked under standard transaction (st_transactions::all) for
registered handlers, and thus it failed to grab a fake transaction
ID. As a result, with no valid transaction ID, wsrep commit failed
with an error.

ha_fake_trx_id() now looks for handlers registered under 'stmt'
in case 'all' is empty. Also modified the logic to print warning
only once if none of the registered handlers have fake_trx_id.
2016-06-27 18:21:00 -04:00
Nirbhay Choubey
ad3584bf72 Test cleanup: Remove unnecessary global suppressions 2016-06-27 18:17:03 -04:00
Nirbhay Choubey
48a0a66ffa MDEV-10186: mysqld crash when runtime setting wsrep_cluster_address without wsrep_on=ON
On wsrep_cluster_address update, node restarts the replication
and attempts to connect to the new address. In this process it
makes a call to wsrep provider's connect API, which could lead
to segfault if wsrep provider is not loaded (wsrep_on=OFF).

Fixed by making sure that it proceeds only if a provider is
loaded.
2016-06-27 18:15:47 -04:00
Nirbhay Choubey
f629f53548 Fix memory leak in XtraDB. 2016-06-27 14:44:07 -04:00
Nirbhay Choubey
94a61838fe Fix galera,wsrep tests. 2016-06-26 21:15:36 -04:00
Nirbhay Choubey
bca5894d51 Adjust warning suppression over a recent change in galera library. 2015-09-27 19:20:43 -04:00
Sergei Golubchik
a5b0a32ac3 Merge branch '10.0-galera' into 10.1 2015-09-03 16:32:00 +02:00
Nirbhay Choubey
f533b2b462 Merge branch '5.5-galera' into 10.0-galera 2015-08-25 11:15:45 -04:00
Nirbhay Choubey
98bebad672 Fix for a typo. 2015-08-18 17:03:28 -04:00
Nirbhay Choubey
c6a0cbdac6 Merge branch '5.5-galera' into 10.0-galera 2015-08-14 14:59:43 -04:00
Nirbhay Choubey
fe757e006c Fix for some failing tests. 2015-08-14 13:45:52 -04:00
Nirbhay Choubey
dced5146bd Merge branch '10.0-galera' into 10.1 2015-07-14 16:05:29 -04:00
Nirbhay Choubey
c8ad5b2f12 MDEV-8151 : wsrep.foreign_key, wsrep.pool_of_threads,
.. wsrep.binlog_format, wsrep.mdev_6832 fail in buildbot

Galera-3.9 logs an additional warning in the error log if
it fails to find gvwstate.dat file. Update wsrep/suite.pm.
2015-05-12 17:15:16 -04:00
Nirbhay Choubey
c6c9a69cce Fix for some more test failures. 2015-05-12 16:56:06 -04:00
Nirbhay Choubey
3331d4e07e Merge galera tests from github.com/codership/mysql-wsrep 2015-05-08 17:43:57 -04:00
Nirbhay Choubey
84a4db263a Merge branch '5.5-galera' into 10.0-galera 2015-03-28 17:29:10 -04:00
Nirbhay Choubey
6a204546ef MDEV-7798: mysql.server init script can't stop mysqld when WSREP is turned off
wsrep threads should be always be checked for existence & stopped on
server shutdown.
2015-03-24 16:41:04 -04:00
Nirbhay Choubey
100249be6a Merge branch '5.5-galera' into 10.0-galera
Conflicts:
	storage/innobase/dict/dict0dict.c
	storage/xtradb/dict/dict0dict.c
2015-03-10 09:23:03 -04:00
Nirbhay Choubey
07ff90e99b Reduce gcache size to cut down disk usage 2015-03-09 22:55:54 -04:00
Nirbhay Choubey
4c191de323 MDEV-7560: wsrep* tests depend on the version of galera library
Added an include file to check galera library version.
2015-02-27 22:16:37 -05:00
Nirbhay Choubey
aa2904a7f4 MDEV-7560: wsrep* tests depend on the version of galera library
Added an include file to check galera library version.
2015-02-27 22:13:37 -05:00
Nirbhay Choubey
16c446235e Changes in wsrep_guess_ip()
* Changed loopback detection to be done via ifa->ifa_flags
* Removed unused function wsrep_guess_address()
2015-02-27 19:16:27 -05:00
Nirbhay Choubey
8ee5668033 Changes in wsrep_guess_ip()
* Changed loopback detection to be done via ifa->ifa_flags
* Removed unused function wsrep_guess_address()
2015-02-27 17:43:10 -05:00
Nirbhay Choubey
4fb2f66907 Changes in wsrep_guess_ip()
* Changed loopback detection to be done via ifa->ifa_flags
* Removed unused function wsrep_guess_address()
2015-02-24 21:55:22 -05:00
Nirbhay Choubey
fcc6e12d69 MDEV-7544: Update global_suppressions to include warning related to "gvwstate.dat" 2015-02-18 19:02:00 -05:00
Nirbhay Choubey
a518cc4470 MDEV-7544: Update global_suppressions to include warning related to "gvwstate.dat" 2015-02-18 18:59:01 -05:00
Jan Lindström
36c1982a19 MDEV-7604: wsrep plugin lists its plugin_maturity as Unknown
Changed wsrep plugin from mysql_plugin to maria_plugin to
set up plugin_maturity to Stable.
2015-02-18 15:23:37 +02:00
Sergei Golubchik
8e7649867f Merge 10.0-galera into 10.1 2015-02-06 16:14:23 +01:00
Nirbhay Choubey
950d69610a MDEV-7322: Option to allow setting the binlog_format with Galera
At session scope, allow binlog_format to be changed to
values other than ROW with a warning.
2015-01-27 16:25:18 -05:00
Nirbhay Choubey
5b6f637caa MDEV-7322: Option to allow setting the binlog_format with Galera
At session scope, allow binlog_format to be changed to
values other than ROW with a warning.
2015-01-27 14:17:40 -05:00
Nirbhay Choubey
ea229eb6bb Minor test modifications. 2015-01-26 22:48:02 -05:00
Nirbhay Choubey
248c662cd7 Minor test modifications. 2015-01-26 22:43:46 -05:00
Nirbhay Choubey
53b9f755af MDEV-7374 : Losing connection to MySQL while running ALTER TABLE
Backport from 10.1.
2015-01-24 18:46:48 -05:00
Nirbhay Choubey
fffc9f585d MDEV-7374 : Losing connection to MySQL while running ALTER TABLE
Backport from 10.1.
2015-01-24 18:39:21 -05:00
Nirbhay Choubey
0105bf349a MDEV-7476: Allow SELECT to succeed even when node is not ready
Added a SESSION-only system variable "wsrep_dirty_reads" to allow SELECT
queries to pass even when the node is not prepared to accept queries
(wsrep_ready=OFF). Added a test case.
2015-01-22 18:00:37 -05:00
Nirbhay Choubey
887628acee Test changes (backported from 10.1). 2015-01-16 13:53:23 -05:00
Nirbhay Choubey
bb93d46241 Test changes (backported from 10.1). 2015-01-16 13:52:30 -05:00