Bug #89634 Upgrading from MySQL 5.0 to MariDB 10.2.8 - Start replication -> core dump
Submitted: 12 Feb 2018 23:13 Modified: 13 Feb 2018 16:00
Reporter: Mike Tutor Email Updates:
Status: Unsupported Impact on me:
None 
Category:MySQL Server: Replication Severity:S2 (Serious)
Version:10.2.8 OS:CentOS (7)
Assigned to: CPU Architecture:Any
Tags: replication, upgrade

[12 Feb 2018 23:13] Mike Tutor
Description:
We are in the process of upgrading many MySQL 5.0.90 database servers to MariaDB 10.2.8. Our process has been working: Copy the data from MySQL 5.0 to the maraidb server, upgrade -> 5.1 -> 5.5 -> MariaDB. We then run replication from MySQL 5.0 to MariaDB using statement based replcation for a period of time before moving the processing over to MariaDB. The more detailed process goes as follows: Stop the slave on the source (MySQL 5.0.90) server. Rsync the entire data dir to the target (maria 10.2.8) server. Start MySQL 5.0 on the target server and get replication caught up. Stop MySQL 5.0 on the target and start MySQL 5.1. Run mysql_upgrade. Stop MySQL 5.1. Start replication and let it catch up. Run MySQL 5.5 and perform upgrade. start replication and let it catch up. Stop MySQL 5.5. Run MariaDB 10.2.8 and perform upgrade. Start replication and let it catch up.

This has worked numerous times. However The latest attempt core dumps on the last step (replication from 5.0 to 10.2) before replication even catches up.If I use mysqldump to move the data, it works fine, but it is so slow it is impractical for large data sets.

Here is our config files:
| => cat enable_encryption.preset 
[mariadb]
aria-encrypt-tables
encrypt-binlog
encrypt-tmp-disk-tables
encrypt-tmp-files
loose-innodb-encrypt-log
loose-innodb-encrypt-tables

| => cat server.cnf 
[mysqld]
innodb_buffer_pool_size = 1G
innodb_data_file_path = ibdata1:1024M:autoextend
innodb_flush_log_at_trx_commit = 0
innodb_log_file_size = 256M
innodb_log_files_in_group = 4
innodb_max_dirty_pages_pct = 90
innodb_lock_wait_timeout = 1500
innodb_thread_concurrency = 0
innodb_strict_mode = 0

log_bin = mysqld-bin
expire_logs_days = 7
binlog_format = mixed
relay-log=mysqld-relay-bin

skip_name_resolve
sync_frm = 0
wait_timeout = 60
back_log = 1024
max_connections = 4096
default_storage_engine = MYISAM
event_scheduler = ON
connect_timeout = 5
max_connect_errors = 9999999
table_open_cache = 4096
max_allowed_packet = 32M
max_heap_table_size = 64M
sort_buffer_size = 8M
join_buffer_size = 8M
thread_cache_size = 0
query_cache_size = 32M
query_cache_limit = 2M
thread_stack = 192K
tmp_table_size = 64M
tmpdir = /raid/tmpmysql/
key_buffer_size = 1152M
read_buffer_size = 2M
read_rnd_buffer_size = 16M
bulk_insert_buffer_size = 64M
myisam_max_sort_file_size = 10G
myisam_recover_options = force,backup
log_error =
log_warnings = 0

slow_query_log = 1
long_query_time = 5

secure-auth=0

log_slave_updates = 1

thread_handling = pool-of-threads
extra_port = 3307
extra_max_connections = 25
thread_pool_idle_timeout = 60
thread_pool_max_threads = 1000
thread_pool_oversubscribe = 3
thread_pool_size = 24
thread_pool_stall_limit = 500
thread_pool_prio_kickup_timer = 1000
thread_pool_priority = auto

[mysql]
no_auto_rehash

[myisamchk]
key_buffer_size = 512M
sort_buffer_size = 512M
read_buffer_size = 8M
write_buffer_size = 8M

[embedded]

[mariadb]
log_basename=mysqld
old_mode = NO_DUP_KEY_WARNINGS_WITH_IGNORE,ZERO_DATE_TIME_CAST
sql_mode = NO_UNSIGNED_SUBTRACTION

| => cat specific_to_cluster.cnf 
# configuration options specific to cluster - change as needed - goes in /etc/my.cnf.d/
[mysqld]
innodb_thread_concurrency=16
max_connections=10240
max_allowed_packet=64M

| => cat zzRemoveAfterValidation.cnf 
[mysqld]
# Turn off binlog checksumming until after the upgrade
binlog_checksum = 0
slave_sql_verify_checksum = 0
binlog_format = statement

| => cat zz_repl_ignore_do.cnf 
[mysqld]
#replicate-ignore-db designates which databases to NOT replicate
replicate-ignore-db=data_warehouse

How to repeat:
I don't know if you can specifically. Like I stated above, this has worked numerous times, but fails in this case.
[13 Feb 2018 15:10] Mike Tutor
Note of clarification. I said that I used mysqldump to move the data and it worked. I mysqldumped all the data from the MySQL 5.0 platform and then imported it directly into MariaDB 10.2.8. I imported logins, fixed views that had no VIEW_DEFINITION in INFORMATION_SCHEMA.VIEWS, and changed the definer on objects owned by non-existent logins. I started replication (5.0->10.2) and it has been working flawlessly ever since.
[13 Feb 2018 15:21] MySQL Verification Team
Hi!

Kindly report MariaDB crashes on their bug tracker site:
https://jira.mariadb.org/projects/MDEV/issues

You should include the stack trace from the crash there.
[13 Feb 2018 15:21] MySQL Verification Team
Thank you for the bug report but this system bug db is for MySQL product.
[13 Feb 2018 16:00] Mike Tutor
D'oh, sorry about that.Thanks for your understanding!