暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Replicating from MySQL 8.0 to MySQL 5.7

数据库实用技能 2021-04-19
1357

正常来讲复制仅在连续的主要MySQL版本之间支持,并且仅从较低版本主机到较高版本从机支持。比如5.7 master - > 8.0 slave

但是相反则不受支持,比如8.0 master - > 5.7 slave。这里我测试如何将8.0 master 同步到5.7 slave 。

环境架构:

Master (10.139.17.101)

Slave (10.142.33.220)

mysql> select @@version;

+-----------+

| @@version |

+-----------+

| 8.0.11 |

+-----------+

1 row in set (0.00 sec)

mysql> select @@version;

+---------------+

| @@version |

+---------------+

| 5.7.19-17-log |

+---------------+

1 row in set (0.00 sec)

如果不做任何初始化,去建立主从复制将会无法同步,出现如下错误:

1、MySQL 8.0上的默认character_set 和collation规则变化。

2、MySQL 8.0用户验证方式将默认的Authentication Plugin更改为maching_sha2_password,MySQL 5.7不支持。如果尝试使用caching_sha2_password  插件执行CHANGE MASTER命令  ,将收到以下错误消息:

Last_IO_Errno: 2059

Last_IO_Error: error connecting to master 'root@10.149.17.101:8888' - retry-time: 60 retries: 1

Mysql 8.0操作:

修改mysql 8.0 master character-set-server和collation-server为utf8:

[root@mgr1 ~]# vi data/mydata/my8888/my8888.cnf

character_set_server = utf8

collation-server = utf8_unicode_ci

重启动数据库。在重新启动之后,您必须使用mysql_native_password创建复制用户  。

使用mysql_native_password创建用户   :

mysql> CREATE USER 'repadm'@'10.%' IDENTIFIED WITH mysql_native_password BY 'go20mysqlrep!';

mysql> GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'repadm'@'10.%';

Mysql 5.7操作,建立复制slave:

mysql> CHANGE MASTER TO MASTER_HOST='10.139.17.101',

-> MASTER_USER='repadm',

-> MASTER_PASSWORD='go20mysqlrep!',

-> MASTER_PORT=8888,

-> MASTER_AUTO_POSITION = 1;

Query OK, 0 rows affected, 2 warnings (0.01 sec)

mysql> start slave;

Query OK, 0 rows affected (0.03 sec)

mysql> show slave status\G;

*************************** 1. row ***************************

Slave_IO_State: Waiting for master to send event

Master_Host: 10.139.17.101

Master_User: repadm

Master_Port: 8888

Connect_Retry: 60

Master_Log_File: mysql-bin.000001

Read_Master_Log_Pos: 501

Relay_Log_File: relay-bin.000002

Relay_Log_Pos: 706

Relay_Master_Log_File: mysql-bin.000001

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

Replicate_Do_DB:

Replicate_Ignore_DB:

Replicate_Do_Table:

Replicate_Ignore_Table:

Replicate_Wild_Do_Table:

Replicate_Wild_Ignore_Table:

Last_Errno: 0

Last_Error:

Skip_Counter: 0

Exec_Master_Log_Pos: 501

Relay_Log_Space: 899

Until_Condition: None

Until_Log_File:

Until_Log_Pos: 0

Master_SSL_Allowed: No

Master_SSL_CA_File:

Master_SSL_CA_Path:

Master_SSL_Cert:

Master_SSL_Cipher:

Master_SSL_Key:

Seconds_Behind_Master: 0

Master_SSL_Verify_Server_Cert: No

Last_IO_Errno: 0

Last_IO_Error:

Last_SQL_Errno: 0

Last_SQL_Error:

Replicate_Ignore_Server_Ids:

Master_Server_Id: 171018888

Master_UUID: 003681fb-8a5e-11e8-b3c3-6c0b8482fd32

Master_Info_File: mysql.slave_master_info

SQL_Delay: 0

SQL_Remaining_Delay: NULL

Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates

Master_Retry_Count: 86400

Master_Bind:

Last_IO_Error_Timestamp:

Last_SQL_Error_Timestamp:

Master_SSL_Crl:

Master_SSL_Crlpath:

Retrieved_Gtid_Set: 003681fb-8a5e-11e8-b3c3-6c0b8482fd32:1

Executed_Gtid_Set: 003681fb-8a5e-11e8-b3c3-6c0b8482fd32:1

Auto_Position: 1

Replicate_Rewrite_DB:

Channel_Name:

Master_TLS_Version:

1 row in set (0.00 sec)

ERROR:

No query specified

mysql>

  

        注意:任何试图使用MySQL 8中的新功能(如角色不可见索引或  caching_sha2_password)的尝试  都会使复制停止并出现错误。


文章转载自数据库实用技能,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论