现象:slave 设置master信息后,无法正常同步,status 显示:Slave_IO_Running: No
MariaDB [(none)]> show slave status\G
*************************** 1. row ***************************
Slave_IO_State:
Master_Host: 192.168.10.135
Master_User: jfedu-cong2
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: jfedu-zhu2.000001
Read_Master_Log_Pos: 483
Relay_Log_File: mariadb-relay-bin.000001
Relay_Log_Pos: 4
Relay_Master_Log_File: jfedu-zhu2.000001
Slave_IO_Running: No
Slave_SQL_Running: No
去查看日志信息
/var/log/mariadb/mariadb.log 警告信息如下:
[Warning] Neither --relay-log nor --relay-log-index were used; so replication may break when this MySQL server acts as a slave and has his hostname changed!! Please use ‘–log-basename=#’ or ‘–relay-log=mariadb-relay-bin’ to avoid this problem.
意思就是relay-log 和relay-log-index 都没有用到,那么当这台server被用作slave时并且hostname被修改时 同步的操作会被中断,解决这个问题的办法是设置log-basename=#或者relay-log=mariadb-relay-bin
解决方法:
编辑my.cnf,增加relay-log=mariadb-relay-bin的配置
[root@node1 etc]# cat /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd
log-bin=jfedu-bin
server-id=1
relay-log=mariadb-relay-bin
重启mariadb,恢复正常,正常同步主库数据了:
日志:
[root@node1 mariadb]# tail mariadb.log
210403 11:59:45 [Note] Server socket created on IP: '0.0.0.0'.
210403 11:59:45 [Note] Slave SQL thread initialized, starting replication in log 'jfedu-zhu2.000001' at position 483, relay log './mariadb-relay-bin.000001' position: 4
210403 11:59:45 [Note] Event Scheduler: Loaded 0 events
210403 11:59:45 [Note] /usr/libexec/mysqld: ready for connections.
Version: '5.5.68-MariaDB' socket: '/var/lib/mysql/mysql.sock' port: 3306 MariaDB Server
210403 11:59:45 [Note] Slave I/O thread: connected to master 'jfedu-cong2@192.168.10.135:3306',replication started in log 'jfedu-zhu2.000001' at position 483
再次查看slave状态:Slave_IO_Running: Yes
MariaDB [(none)]> show slave status\G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.10.135
Master_User: jfedu-cong2
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: jfedu-zhu2.000001
Read_Master_Log_Pos: 1119
Relay_Log_File: mariadb-relay-bin.000003
Relay_Log_Pos: 1166
Relay_Master_Log_File: jfedu-zhu2.000001
Slave_IO_Running: Yes
Slave_SQL_Running: Yes