如果我们原库中有很多数据,要提前进行备份复制
可以使用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
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
错误: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 不要加;即可