Commit Graph

9494 Commits

Author SHA1 Message Date
0bc439641a Add helper function for reading values by field name
The helper function provides map-like access to row values. This is used
to retrieve the values for all MariaDB 10.0+ versions as there are
differences in the returned results between 10.1 and 10.2.
2017-10-27 15:31:46 +03:00
2d1e5f46fa Remove use of timestamps in failover code
Using timestamps to detect whether MaxScale was active or passive can
cause problems if multiple events happen at the same time. This can be
avoided by separating events into actively observed and passively observed
events. This clarifies the logic by removing the ambiguity of timestamps.

As the monitoring threads are separate from the worker threads, it is
prudent to use atomic operations to modify and read the state of the
MaxScale. This will impose an happens-before relation between MaxScale
being set into passive mode and events being classified as being passively
observed.
2017-10-27 15:31:46 +03:00
37e64bad90 MXS-1493: Add master failure verification test 2017-10-27 15:31:46 +03:00
52473c379b Extract Gtid_Slave_Pos in mysqlmon
The string form value of Gtid_Slave_Pos is extracted into different
integer components.
2017-10-27 15:31:46 +03:00
0be39b8545 MXS-1493: Improve master failure detection
The master failure can now be verified by checking when the slaves are
connected to the master. If the slaves do not receive any events from the
master, the connections are considered as down after a configurable limit.

Added two parameters for controlling whether the check is done and for how
long the monitor waits before doing the failover.
2017-10-27 15:31:18 +03:00
26b47d0b90 MXS-1493: Collect slave heartbeats
The slave heartbeat count and period are collected from the SHOW ALL
SLAVES STATUS output. This, in addition to the relay log position, is used
to calculate the point in time when a slave has last interacted with the
master.

By using this timestamp, the monitor can enforce a minimum "timeout" for
the master before a failover is performed.
2017-10-27 15:30:38 +03:00
d9bd977c35 MXS-1499: Add missing fields to SHOW ALL SLAVES STATUS
Now SHOW ALL SLAVES STATUS reports new fields:

Retried_transactions;
Max_relay_log_size,
Executed_log_entries,
Slave_received_heartbeats,
Slave_heartbeat_period,
Gtid_Slave_Pos"
2017-10-27 14:07:53 +02:00
48a15368d0 MXS-1490-1492: First version of failover script
Works in ideal situations and can be tested. Does not consider
relay log and only checks that commands were received by a backend.
Work in progress.
2017-10-27 10:54:50 +03:00
96c3f0dda3 Build explicit version of Jansson in build scripts
As the Avro C API depends on the Jansson library, the build scripts must
build it. This is not optimal as the Jansson version needs to be updated
in two places.
2017-10-26 21:57:46 +03:00
114ea49e10 MXS-1494: Add missing replication credentials parameters
The parameters weren't added to the list of module parameters.
2017-10-26 17:37:02 +03:00
f805716700 MXS-1497: Don't skip events with LOG_EVENT_IGNORABLE_F flag
Currently binlog server doesn't send to slaves these event types:
- MARIADB10_START_ENCRYPTION_EVENT
- IGNORABLE_EVENT

It also skips events with LOG_EVENT_IGNORABLE_F flag.

This modification allows sending events with that flag.
2017-10-26 11:32:06 +02:00
b1f62ec1af MXS-1488: Added SHOW STATUS LIKE 'slave_received_heartbeats'
Add support for show status like 'slave_received_heartbeats' in
binlogserver.
2017-10-25 15:11:07 +02:00
de800766ef Build the replicaton-manager test
The test wasn't built as it is not a part of the test suite. The
executable should be built but it should not be added to the test suite.

Changed the management script to only add the configuration and added a
call to it at the start of the test.
2017-10-25 14:53:40 +03:00
63c7550196 MXS-1490 Prepare for failover functionality addition
Moved mon_process_failover() from monitor.cc to mysql_mon.cc. Renamed
some functions and variables related to previous failover functionality
to avoid confusion.
2017-10-25 12:24:29 +03:00
94c066ff65 Update 2.2.1 release notes
Update 2.2.1 release notes, added changed features for Binlog server
2017-10-25 08:13:05 +02:00
554ae642d7 MXS-1495: Add failover sanity check
The sanity check disables the failover functionality if a server is
configured to replicate from more than one source.
2017-10-24 23:45:23 +03:00
c3ff2aa1e9 MXS-1495: Move the MYSQL_SERVER_INFO extraction into a function
The get_server_info function takes the monitor handle and a database and
returns the corresponding MYSQL_SERVER_INFO struct. This hides a part of
the actual implementation of the info struct from the monitor code,
allowing future refactoring to be done. It also makes the code a bit more
readable.
2017-10-24 23:44:59 +03:00
95ac9d501c MXS-1494: Add replication credentials to mysqlmon
The credentials used for slave servers can now be controlled with the
replication_user and replication_password parameters.
2017-10-24 23:44:46 +03:00
75a2e190b2 Add function for updating the MYSQL_SERVER_INFO struct
The values in the MYSQL_SERVER_INFO struct can now be updated with the
update_slave_status function.

Also moved the number of configured and running slave configurations into
the info struct. This removes the need to pass output parameters.
2017-10-24 15:43:03 +03:00
efeaecaef2 MXS-1486 When there is fresh data, update the cache entry
If something is SELECTed that should be cached for some, but not
for the current user, the cached entry it nevertheless updated.
That way the cached data will always be the last fetched value
and it is also possible to use this behaviour for explicitly
updating the cache entry.
2017-10-24 15:31:08 +03:00
3cefb53e1d Split server state and info processing into two
The MYSQL_SERVER_INFO struct is updated first and then the server status
is updated. This allows the function to be called without it affecting the
server state.
2017-10-24 15:27:36 +03:00
555aa6d2c8 Fix test crash in sync_slaves
The crash happens if the slave is not configured for replication or the
connection is broken when results are read. Adding missing return value
checks will fix it.
2017-10-24 11:06:14 +03:00
7df5b3d24a Install git in test_maxctrl
Git was not installed in the test. This should not be done in tests but it
is an acceptable short-term workaround.

Also run the script as root.
2017-10-24 11:06:14 +03:00
00b78e1f0f Update 2.2.1 release notes
Added note about new REST API endpoints.
2017-10-24 11:06:14 +03:00
9d35c705f3 Update 2.1.10 release notes 2017-10-24 10:31:51 +03:00
d6812b91a0 MXS-1485: MariaDB 10 GTID is always on for slave connections
MariaDB 10 GTID is always on for slave connections.
Remove mariadb10_slave_gtid option
2017-10-24 08:42:43 +02:00
0bfe89b86b Update REST API documentation
Added relationships endpoint documentation.
2017-10-23 19:37:24 +03:00
cd9a84d762 Add tests for direct relationship updating
The tests check that direct updates to the relationships endpoints work.
2017-10-23 19:37:24 +03:00
6918842585 Add direct relationship updating to REST API
The JSON API specification states that all resources must support direct
modification of resource relationships by providing only the definition
for a particular relationship type to a /:type/:id/relationships/:type
endpoint.

The relevant part of the JSON API specification:

    http://jsonapi.org/format/#crud-updating-to-many-relationships
2017-10-23 19:37:24 +03:00
7111724851 Fix REST API monitor relationship test
The test did not properly move the relationships from the old monitor to
the new one. The test to passed as the relationship modification was not
really tested.
2017-10-23 19:37:24 +03:00
b7b50959ac Update REST API tests
Extended the relationship checks in the REST API tests to actually verify
that the returned objects represent what is expected.
2017-10-23 19:37:24 +03:00
582a65f77c Do not return empty relationships
If no relationships of a particular type are defined for a resource, the
key for that relationship should not be defined.
2017-10-23 19:37:24 +03:00
d371ecb30f Only remove explicitly deleted relationships
Only when a relationship is defined as a null JSON value, it should be
deleted. If it is missing, it should be ignored.
2017-10-23 19:37:24 +03:00
284cd50412 Bind REST API to localhost by default
Binding to localhost by default is more secure than binding to all
interfaces.
2017-10-23 19:37:21 +03:00
0b1e2ae0a5 Improve error messages for service parameter changes
Made the error messages clearer when an attempt to change service
parameters that cannot be altered at runtime is made.
2017-10-23 17:34:11 +03:00
b223fc9482 Fix REST API main document title
The title still stated that it was design documentation on the API instead
of being the authoritative documentation of it.
2017-10-23 17:34:11 +03:00
65dc9e0d30 MXS-1484: set binlog storage to TREE mode
When mariadb10_master_gtid is on the storage of binlog file is
automatically set to TREE mode.
2017-10-23 13:57:56 +02:00
aa3764db3c Let MaxScale build the Jansson library
The CMake files in MaxScale automatically download the correct version of
the Jansson library when it is configured. The build scripts used the
default branch which can change.
2017-10-23 13:29:52 +03:00
ee635f59f3 Update MaxScale manpage
The manpage now only links to the relevant online documentation.
2017-10-21 15:08:03 +03:00
ff8916046c Add link to documentation in --help output
The link points to the MaxScale 2.1 documentation root.
2017-10-21 14:55:56 +03:00
37c804e0d3 MXS-1327 Warn if debug priority enabled in release mode
Turning debug on has no effect if MaxScale has been built in
release mode. A warning will now be displayed to the user if
that is attempted.
2017-10-19 12:56:12 +03:00
501c35d7b2 Correct typo in cache documentation 2017-10-19 11:40:21 +03:00
6618049c24 Add note about PL/SQL support 2017-10-19 11:40:21 +03:00
f0d16e3ac5 Typo fixed
Typo fixed
2017-10-13 16:20:05 +02:00
9cec8fa0fb MXS-1464 Update ChangeLog and release notes 2017-10-12 14:56:09 +03:00
d1df1837a4 MXS-1464 When pre-parsing, only check maxscale section
When pre-parsing the configuration file, the existence of environment
variables is only done for the [maxscale] section. For other sections
a nicer error message is obtained if the comlplaint is made when the
configuration file is actually loaded.

Mechanism for providing custom error message from the pre-parsing
function added.
2017-10-12 14:56:09 +03:00
22f4b02b44 MXS-1464 Substitute environment variables
If 'substitute_variables' has been set to true, then the value of
a parameter like `some_param=$SOME_VAR' is replaced with the value
of the environment variable 'SOME_VAR'.

It is a fatal error to refer to a variable that does not exist.
2017-10-12 14:56:09 +03:00
1666c9f0b6 MXS-1464 Add config 'substitute_variables'
With this variables set to true, if $VAR is used as a value in the
configuration file, then `$VAR` will be replaced with the value of
the environment variable VAR.
2017-10-12 14:56:09 +03:00
2534c9b824 Update replication-manager test
The test now checks whether replication-manager launched by a script
works. This is closer to how one of the original blog posts define the
setup.
2017-10-12 13:16:12 +03:00
938484a73e Allow remote server to be used for maxctrl test suite
The test suite now works with remote servers and is now fully integrated
to the regression test suite.
2017-10-12 13:16:12 +03:00