Mariadb配置主从复制遇到的坑

准备工作:

主数据库所在服务器IP:172.16.41.1

从数据库所在服务器IP:172.16.41.2

mariadb的配置文件的位置:/etc/my.conf

一、主数据库配置:

找到[mysqld] 标签,在下面配置:

server-id=1  #这是数据库服务器id主从数据库不能重复,在所有mysql数据库中唯一

log-bin=xxxxx  #二进制文件保存的位置,网上很多人说不配置就默认与datadir相同,实测不能缺省


创建用户:

 CREATE USER 'terry'@'172.16.41.2' IDENTIFIED BY '123456';

授权:

grant file,select,replication slave on *.* to [email protected] identified by '123456';

(此处有坑) grant replication .....只给replication是不正确的写法,一定要写全file,select,replication

二、从数据库配置

server-id = 2

#log-bin = /mydata/mysql-bin   //注释不会影响从库,打开也可以

relay-log = /mydata/relaylogs/relay-bin  //这项设置是必须的


然后依次执行:

stop slave;

CHANGE MASTER TO MASTER_HOST='172.16.41.1', MASTER_USER='terry', MASTER_PASSWORD='123456', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=328;

start salve;

然后通过下面的  show slave status\G; 查看是否成功。

参考: https://blog.51cto.com/aimax/2123440

https://www.cnblogs.com/hanson1/articles/7101456.html


坑:

1. 报错:

Failed to open the relay log './mariadb-relay-bin.000001' (relay_log_pos 4)

190311 23:21:37 [ERROR] Could not find target log during relay log initialization

分析应该是由于mysql-relay-bin.index中仍然保存着旧relay日志文件的路径,而这些路径下又找不到合适的文件,因此报错。

对于这类问题解决起来是比较简单的,重置slave的参照即可,执行命令如下:

mysql> reset slave;

你可能感兴趣的:(Mariadb配置主从复制遇到的坑)