遷移計劃如下:
1.備份MySQL 5.5的數據庫,對指定庫進行備份。
2.還原到Mariadb,然後建立復制。
3.然後就可以願意啥時候切換就啥時候切換。
遇到的問題:
因為一般都是innodb,所以我想用xtrabackup工具備份。備份後發現還原需要依賴innodb的表空間切換。
1.表空間切換,必須要打開innodb_file_per_table。也就是說所有的表都要有獨立的文件。有一些表雖然是innodb但是存在ibdata下面。
幸好可以申請維護窗口,簡單粗暴的重建了。
2.從MySQL 5.5到Mariadb,在import tablespace的時候發生錯誤,說表結構比匹配,然後根據字段發現都是一些 date,datetime,timestamp類型。
碰到這個問題,還在找有啥解決方法,找了一圈也沒找到,對報錯的表使用了mysqldump,然後導入,其實mysqldump速度不慢。
3.因為xtrabackup備份和mysqldump已經有一段時間了,所以肯定會有一些數據已經存在,所以在創建主從復制的時候肯定會報主鍵錯誤。
直接開slave_skip_errors =1062,提過主鍵沖突。發現落下的貌似有點多,那麼mariadb這個版本已經支持了多線程復制。
關於參數mariadb官網可以看,開起來:
slave_parallel_mode=optimistic
slave_parallel_threads=6
set global innodb_flush_log_at_trx_commit=0; --追不上把這個也開了
MariaDB [(none)]> show processlist;
+----+-------------+-----------+------+---------+------+----------------------------------+------------------+----------+
| Id | User | Host | db | Command | Time | State | Info | Progress |
+----+-------------+-----------+------+---------+------+----------------------------------+------------------+----------+
| 5 | root | localhost | NULL | Query | 0 | init | show processlist | 0.000 |
| 23 | system user | | NULL | Connect | 1197 | Waiting for master to send event | NULL | 0.000 |
| 24 | system user | | NULL | Connect | 1197 | Waiting for work from SQL thread | NULL | 0.000 |
| 25 | system user | | NULL | Connect | 1197 | Waiting for work from SQL thread | NULL | 0.000 |
| 26 | system user | | NULL | Connect | 1197 | Waiting for work from SQL thread | NULL | 0.000 |
| 27 | system user | | NULL | Connect | 1197 | Waiting for work from SQL thread | NULL | 0.000 |
| 28 | system user | | NULL | Connect | 1197 | Waiting for work from SQL thread | NULL | 0.000 |
| 29 | system user | | NULL | Connect | 1197 | Waiting for work from SQL thread | NULL | 0.000 |
| 30 | system user | | NULL | Connect | 0 | apply log event | NULL | 0.000 |
+----+-------------+-----------+------+---------+------+----------------------------------+------------------+----------+
9 rows in set (0.00 sec)