准备工作:
主数据库所在服务器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 terry@172.16.41.2 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;
网友评论