mysql 主从复制(完整版)

如果我们原库中有很多数据,要提前进行备份复制
可以使用mysqldump进行数据备份并还原到从服务器以实现数据的复制。

mysqldump -uroot -pmysql --all-databases --lock-all-tables > ~/master_db.sql

接下来要导入到从库中。此处省略

主服务器:192.168.130.46

从服务器:192.168.130.48

1.进入主服务器,停止主服务mysql服务: systemctl stop mysqld;

主节点编辑配置文件

vim /etc/my.cnf 的 [mysqld] 下面

添加如下配置:

server-id=1

log-bin=master-bin

log-bin-index=master-bin.index
  1. 进入主节点mysql,创建用户:
create user 'hx_slave'@'%' identified by 'hx123456';

注:ip即允许连接的ip地址,或者直接写%代表所有ip均可以连接。

使配置生效:

flush privileges;

获取主服务器的二进制日志信息

SHOW MASTER STATUS;

记住这里一会要用,File为使用的日志文件名字,Position为使用的文件位置,这两个参数须记下,配置从服务器时会用到。

4.进入从节点服务器,停止mysql服务: systemctl stop mysqld;

从节点slave编辑配置文件

vim /etc/my.cnf 的[mysqld] 下面添加如下配置:

server-id=2

relay-log=slave-relay-bin

relay-log-index=slave-relay-bin

重启mysql服务,使配置生效:

service mysqld restart

进入从服务器MySQL中

change master to master_host='192.168.130.46', master_user='hx_slave', master_password='hx123456',master_log_file='master-bin.000002', master_log_pos=1272;

master_host:主服务器Ubuntu的ip地址
master_log_file: 前面查询到的主服务器日志文件名
master_log_pos: 前面查询到的主服务器日志文件位置

启动slave服务器,并查看同步状态

start slave;
show slave status \G

在这里插入图片描述
两个yes代表运行成功

错误:Slave_SQL_Running: No
解决方法:
stop slave;
set global sql_slave_skip_counter =1 ;
start slave;
从新查看一下就可以了

Slave_IO_Running: connecting
报错:
MySQL Master command COM_REGISTER_SLAVE failed: Access denied for user
登陆主服务器,查询复制用户的权限:

show grants for 'repl'@'%';

在这里插入图片描述
明显权限不对,修改权限如下:

在这里插入图片描述

当权限显示为REPLICATION是方才正确。此时,登陆从服务器再次执行start slave命令即可。

ERROR:
No query specified
这里提示有错误,这不是一个错误
show slave status\G 不要加;即可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值