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

mysql 主从复制(完整版)_第1张图片
两个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'@'%';

mysql 主从复制(完整版)_第2张图片
明显权限不对,修改权限如下:

mysql 主从复制(完整版)_第3张图片

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

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

你可能感兴趣的:(mysql 主从复制(完整版))