我尝试设置从从服务器到主服务器的复制。
CHANGE MASTER TO
MASTER_HOST = 'master',
MASTER_PORT = 3306,
MASTER_USER = 'repl',
MASTER_PASSWORD = 'xxx';
Run Code Online (Sandbox Code Playgroud)
而且我确实向 master 上的用户授予了权限。我可以用mysql命令从slave机器连接到master
mysql -h master -u repl -p
mysql> show grants;
GRANT RELOAD, SUPER, REPLICATION SLAVE, CREATE USER ON *.* TO 'repl'@'xxx' IDENTIFIED BY PASSWORD 'xxx'
mysql> select 1;
+---+
| 1 |
+---+
| 1 |
+---+
1 row in set (0.04 sec)
Run Code Online (Sandbox Code Playgroud)
如您所见,权限正确,连接正常,但是复制到 master 的连接总是失败。
mysql> show slave status\G
*************************** 1. row ***************************
Slave_IO_State: Connecting to master
Master_Host: master
Master_User: repl …Run Code Online (Sandbox Code Playgroud) 我尝试将一些表从一个 MySQL 数据库迁移到另一个数据库,但遇到错误:
ERROR 1062 (23000) at line 108: Duplicate entry 'außer' for key 'PRIMARY'
Run Code Online (Sandbox Code Playgroud)
我试图找出为什么,在目标数据库中,我跑了
mysql> select 'außer' = 'auser';
+--------------------+
| 'außer' = 'auser' |
+--------------------+
| 1 |
+--------------------+
1 row in set (0.07 sec)
Run Code Online (Sandbox Code Playgroud)
如你所见,MySQL认为它们是相同的,我检查了配置变量
mysql> show variables like 'coll%';
+----------------------+-----------------+
| Variable_name | Value |
+----------------------+-----------------+
| collation_connection | utf8_general_ci |
| collation_database | utf8_general_ci |
| collation_server | utf8_general_ci |
+----------------------+-----------------+
mysql> show variables like 'character%';
+--------------------------+------------------------------------------+
| Variable_name | Value |
+--------------------------+------------------------------------------+
| …Run Code Online (Sandbox Code Playgroud)