Mysql主从复制搭建

1.给两台服务器安装好Mysql,安装详情请看下面链接。

https://www.cnblogs.com/jtfr/p/10325571.html
https://www.cnblogs.com/jtfr/p/10533065.html

2.master主服务器配置

(1).修改配置文件

1.编辑文件
vim /etc/my.cnf (如果找不到文件,使用"find / name my.cnf"查找文件)
2.在[mysqld]中添加:
# server-id 服务器唯一标识,不要和其他服务器server-id冲突了。
server-id = 1
# log_bin 启动MySQL二进制日志
log_bin = master-bin
binlog_do_db = jtfr
# binlog_ignore_db 指定不记录二进制日志的数据库,指定多个,用逗号隔开。
binlog_ignore_db = "mysql,sys,information_schema,performance_schema"

service mysqld restart

(2).master主服务器执行命令,创建一个用户给 slave从服务器 使用

grant replication slave on *.* to '用户名' @'ip地址' identified by '密码';

 

(3).重启 master主服务器

service mysqld restart

(4).登录 master主服务器查看状态

show master status;

3. slave 从服务器的配置

(1).修改配置文件

1.编辑文件
vi /etc/my.cnf (如果找不到文件,使用"find / name my.cnf"查找文件)
2.在[mysqld]中添加:
server-id = 2
relay-log = slave-relay-bin

(2).重启 slave主服务器

service mysqld restart

 

(3).登录 slave从服务器,连接 master主服务器

master_host对应主服务器的IP地址
master_port对应主服务器的端口,注意没有单引号
master_log_file对应show master status显示的File列master-bin.000001
master_log_pos对应show master status显示的Position列,注意没有单引号
change master to master_host='主服务器的IP地址',master_port=主服务器的端口,master_user='slaveUser',master_password='Ckm1542@',master_log_file='show master status显示的File列',master_log_pos=show master status显示的Position列;

 

(4).在slave从服务器,登录状态下,启动Slave数据同步。

start slave;

(5).查看是否连接成功

show slave status\G 注意:末尾没有 分号,\G 表示了带分号

问题

1.Last_IO_Errno: 2003

解决方式:防火墙不通,可以在本机远程登录看是否可行,不可行说明连接不上。docker注意关闭宿主机的防火墙

2.Last_IO_Errno: 1045

原因:帐号不给在这个ip登录,我这里是docker之间走了内网,ip配置不对

 

3.Last_IO_Errno: 1597

解决:

slave开启了记录日志,master以为是级联复制,需要添加 log_slave_updates=1 到my.cnf配置文件中

帐号有问题,后面用的root帐号才解决的

posted @ 2019-03-14 21:51  钧天府人  阅读(432)  评论(0)    收藏  举报