非标准端口的 MySQL 复制 (3306)

Ahm*_*sna 5 mysql replication

我想在MS Windows 2008 R2下使用MySQL 5.6.14进行MySQL复制,Master和Slave的端口应该是1000(PC1上的主库,PC2上安装的从库)。

我为 master 添加了以下参数 My.ini

[mysqld]
server-id=1
log-bin=black-bin.log
datadir=d:\mysql\master\
innodb_flush_log_at_trx_commit=1
sync_binlog=1
Run Code Online (Sandbox Code Playgroud)

然后我编辑从My.ini添加以下参数:

[mysqld]
server-id=2
relay-log-index=slave-relay-bin.index
relay-log=slave-relay-bin
datadir=d:\mysql\slave
Run Code Online (Sandbox Code Playgroud)

之后,我使用 root 用户登录到 Master 数据库并执行以下命令

CREATE USER repl_user@slave_ip;
GRANT REPLICATION SLAVE ON *.* TO repl_user@slave_ip IDENTIFIED BY 'password';
Run Code Online (Sandbox Code Playgroud)

为了初始化复制,我登录到从数据库并执行以下命令:

CHANGE MASTER TO MASTER_HOST='maset_ip',
 -> MASTER_USER='repl_user',
 -> MASTER_PASSWORD='password';
start slave;
Run Code Online (Sandbox Code Playgroud)

如果 master 的端口是 3306,则复制工作正常,但如果端口更改,则它不再工作。我的问题是:如何让从设备连接到端口 1000?我尝试将以下参数添加到从属my.ini master-port=1000然后重新启动从属 SID 但它不起作用(服务未启动,错误消息:未知参数主端口)。请指教,谢谢。

Rol*_*DBA 4

您需要将 Master 的端口添加到 my.ini

[mysqld]
server-id=1
port=1000
log-bin=black-bin.log
datadir=d:\mysql\master\
innodb_flush_log_at_trx_commit=1
sync_binlog=1
Run Code Online (Sandbox Code Playgroud)

并重新启动mysql

首先运行这个

STOP SLAVE;
SHOW SLAVE STATUS\G
Run Code Online (Sandbox Code Playgroud)

从输出来看

  • 使用 Relay_Master_Log_File 作为CurrentLogFile
  • 使用 Exec_Master_Pos 作为CurrentLogPosition

正如评论中提到的CHANGE MASTER TO,像这样在 Slave 上运行

CHANGE MASTER To
MASTER_HOST='ipaddrofmaster',
MASTER_PORT=1000,
MASTER_USER='repl_user',
MASTER_PASSWORD='password'
MASTER_LOG_FILE='CurrentLogFile',
MASTER_LOG_POS=CurrentLogPosition;
START SLAVE;
Run Code Online (Sandbox Code Playgroud)

试一试 !!!