关于我们

质量为本、客户为根、勇于拼搏、务实创新

< 返回新闻公共列表

MySQL主从报错解决:Table ‘mysql.gtid_slave_pos’ doesn’t exist

发布时间:2022-11-05 13:17:36
1491984010112764.jpg

给内部一个数据库做异地热备,热备部分采用了 MariaDB 的 galera 集群模式。然后挑选其中一台作为 Slave 和深圳主集群做主从同步。

主集群是老环境,用的版本还是是 MySQL 5.5.13。用常规办法创建主从同步

MariaDB [(none)]>change master to master_host='192.168.1.100',master_user='rpl',master_password='rpl@201809',master_log_file='mysql-bin.001091',MASTER_LOG_POS=137962110,master_connect_retry=30;MariaDB [(none)]>start slave;

结果有如下报错:

MariaDB [(none)]> show slave status\G*************************** 1. row ***************************Slave_IO_State: Waiting for master to send eventMaster_Host: 192.168.1.100Master_User: rplMaster_Port: 3306Connect_Retry: 30Master_Log_File: mysql-bin.001093Read_Master_Log_Pos: 77139171Relay_Log_File: udb158-relay-bin.000002Relay_Log_Pos: 237764027Relay_Master_Log_File: mysql-bin.001091Slave_IO_Running: YesSlave_SQL_Running: YesReplicate_Do_DB: Replicate_Ignore_DB: Replicate_Do_Table: Replicate_Ignore_Table: Replicate_Wild_Do_Table: Replicate_Wild_Ignore_Table: Last_Errno: 1146Last_Error: Unable to load replication GTID slave state from mysql.gtid_slave_pos: Table 'mysql.gtid_slave_pos' doesn't existSkip_Counter: 0Exec_Master_Log_Pos: 375725743Relay_Log_Space: 2086663884Until_Condition: NoneUntil_Log_File: Until_Log_Pos: 0Master_SSL_Allowed: NoMaster_SSL_CA_File: Master_SSL_CA_Path: Master_SSL_Cert: Master_SSL_Cipher: Master_SSL_Key: Seconds_Behind_Master: 105914Master_SSL_Verify_Server_Cert: NoLast_IO_Errno: 0Last_IO_Error: Last_SQL_Errno: 1146Last_SQL_Error: Unable to load replication GTID slave state from mysql.gtid_slave_pos: Table 'mysql.gtid_slave_pos' doesn't existReplicate_Ignore_Server_Ids: Master_Server_Id: 15410Master_SSL_Crl: Master_SSL_Crlpath: Using_Gtid: NoGtid_IO_Pos: 1 row in set (0.00 sec)

错误信息为:Last_SQL_Error: Unable to load replication GTID slave state from mysql.gtid_slave_pos: Table 'mysql.gtid_slave_pos' doesn't exist

搜了下资料,大部分说是没有执行 mysql_upgrade 导致的,不过我们这边的 MariaDB 是 Docker 跑的,而且用了很长时间了,理论上应该是没问题的才对。

既然提示没有这个表:Table 'mysql.gtid_slave_pos' doesn't exist,那我就创建一个吧!

从网上找到这个建表语句:

CREATE TABLE `gtid_slave_pos` (`domain_id` int(10) unsigned NOT NULL,`sub_id` bigint(20) unsigned NOT NULL,`server_id` int(10) unsigned NOT NULL,`seq_no` bigint(20) unsigned NOT NULL,PRIMARY KEY (`domain_id`,`sub_id`)) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='Replication slave GTID state';

在作为 Slave 的 MariaDB 上执行,然后重启 slave 后问题解决,过程如下:

MariaDB [(none)]> show slave status\G*************************** 1. row ***************************Slave_IO_State: Waiting for master to send eventMaster_Host: 192.168.1.100Master_User: rplMaster_Port: 3306Connect_Retry: 30Master_Log_File: mysql-bin.001093Read_Master_Log_Pos: 77139171Relay_Log_File: udb158-relay-bin.000002Relay_Log_Pos: 237764027Relay_Master_Log_File: mysql-bin.001091Slave_IO_Running: YesSlave_SQL_Running: YesReplicate_Do_DB: Replicate_Ignore_DB: Replicate_Do_Table: Replicate_Ignore_Table: Replicate_Wild_Do_Table: Replicate_Wild_Ignore_Table: Last_Errno: 1146Last_Error: Unable to load replication GTID slave state from mysql.gtid_slave_pos: Table 'mysql.gtid_slave_pos' doesn't existSkip_Counter: 0Exec_Master_Log_Pos: 375725743Relay_Log_Space: 2086663884Until_Condition: NoneUntil_Log_File: Until_Log_Pos: 0Master_SSL_Allowed: NoMaster_SSL_CA_File: Master_SSL_CA_Path: Master_SSL_Cert: Master_SSL_Cipher: Master_SSL_Key: Seconds_Behind_Master: 105914Master_SSL_Verify_Server_Cert: NoLast_IO_Errno: 0Last_IO_Error: Last_SQL_Errno: 1146Last_SQL_Error: Unable to load replication GTID slave state from mysql.gtid_slave_pos: Table 'mysql.gtid_slave_pos' doesn't existReplicate_Ignore_Server_Ids: Master_Server_Id: 15410Master_SSL_Crl: Master_SSL_Crlpath: Using_Gtid: NoGtid_IO_Pos: 1 row in set (0.00 sec)MariaDB [(none)]> use mysql;Reading table information for completion of table and column namesYou can turn off this feature to get a quicker startup with -ADatabase changedMariaDB [mysql]> CREATE TABLE `gtid_slave_pos` (->        `domain_id` int(10) unsigned NOT NULL,->        `sub_id` bigint(20) unsigned NOT NULL,->        `server_id` int(10) unsigned NOT NULL,->        `seq_no` bigint(20) unsigned NOT NULL,->        PRIMARY KEY (`domain_id`,`sub_id`)->      ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='Replication slave GTID state';Query OK, 0 rows affected (0.01 sec)MariaDB [mysql]> stop slave;Query OK, 0 rows affected (0.04 sec)MariaDB [mysql]> start slave;Query OK, 0 rows affected (0.00 sec)MariaDB [mysql]> show slave status\G*************************** 1. row ***************************Slave_IO_State: Queueing master event to the relay logMaster_Host: 192.168.1.100Master_User: rplMaster_Port: 3306Connect_Retry: 30Master_Log_File: mysql-bin.001093Read_Master_Log_Pos: 1059879280Relay_Log_File: udb158-relay-bin.000002Relay_Log_Pos: 390833600Relay_Master_Log_File: mysql-bin.001091Slave_IO_Running: YesSlave_SQL_Running: YesReplicate_Do_DB: Replicate_Ignore_DB: Replicate_Do_Table: Replicate_Ignore_Table: Replicate_Wild_Do_Table: Replicate_Wild_Ignore_Table: Last_Errno: 0Last_Error: Skip_Counter: 0Exec_Master_Log_Pos: 528795316Relay_Log_Space: 3069404437Until_Condition: NoneUntil_Log_File: Until_Log_Pos: 0Master_SSL_Allowed: NoMaster_SSL_CA_File: Master_SSL_CA_Path: Master_SSL_Cert: Master_SSL_Cipher: Master_SSL_Key: Seconds_Behind_Master: 101616Master_SSL_Verify_Server_Cert: NoLast_IO_Errno: 0Last_IO_Error: Last_SQL_Errno: 0Last_SQL_Error: Replicate_Ignore_Server_Ids: Master_Server_Id: 15410Master_SSL_Crl: Master_SSL_Crlpath: Using_Gtid: NoGtid_IO_Pos: 1 row in set (0.00 sec)MariaDB [mysql]>



/template/Home/8a/PC/Static