This commit updates all fixed dependencies to their latest version and
mades changes to the default configs to.
1. Increase the defaults for a few key values
2. Move some settings to new files to support MariaDB 10.3
3. Add a sample production configuration to allow easy deployment
Signed-off-by: DK <dk@planetscale.com>
Please refer to #2694 and #2670 for motivation and reasoning for
this change.
I've tried to follow best practice in inserting the copyright
headers. In other open source projects, not all files carry
the notice. For example documentation doesn't. I've followed
similar ground rules.
I did not change the php because there is a separate LICENSE
file there by Pixel Federation. We'll first need to notify
them our intent before changing anything there.
As for the presubmit check, it's going to be non-trivial
because of the number of exceptions, like file types,
directories and generated code. So, it will have to be
a separate project.
- Adding an EventToken structure in query.proto.
- Using it in Binlog Streamer and filtered replication.
- Using it in Update Stream in POS events as well.
Note the main change there is that an EventToken has a replication
position (GTIDSet), not a transaction ID (GTID). Both server and clients
were computing the position individually anyway by accumulating
transaction IDs, might as well just send the position. And it will make
more sense for later use of EventToken.
Also, we don't set the 'Shard' field of the EventToken just yet. I'm
still not sure vttablet should do it, as opposed to vtgate.
The aggregator was not preserving the special error case, now it does,
and has unit tests to prove it.
The integration tests were not fully resetting replication (using 'reset
slave' and not 'reset slave all'). The difference is 'reset slave'
clears the values from 'show slave status', whereas 'reset slave all'
makes the status show nothing (as is the startup case).
Some tests had to be modified to not assume that masters without
replicas will still accept writes. Also, some tests would create tablets
as SPARE without enabling healthcheck. As a result, the tablet has no
way of knowing whether it will eventually be a replica or rdonly, and
hence can't decide whether to enable semi-sync before starting
replication.
Healthcheck is basically required now, and definitely will be once we
fully switch to vtgate discovery mode. So I've removed cases where
tablets were being started SPARE without enabling healthcheck.
This gets rid of the opaque mysql-db-dir.tbz archive, replacing it with
a .sql file. The .sql file approach makes it clear what state the DB is
initialized with, and also makes it easy to customize.
It should match the convention established with "MariaDB".
I looked into making them case-insensitive, but it would be more tricky
than it's worth because flavor IDs are used as part of the protocol
between servers. So an old server that is case-sensitive would choke on
a message from a new one.
When binlog_checksum is enabled, it changes the binlog format in a
backwards-incompatible way. Even though we don't currently verify
checksums, we need to know how to strip them and how to signal that
we understand the new format. Otherwise a server with checksums
enabled will refuse to send us binlogs.