MySQL主从复制
Master:主
Slaver:从
Replication:复制
环境说明
- 主服务器:192.168.15.148
MySQL用户及密码:master : master#
给从服务器用的MySQL用户及密码:slave : slave# - 从服务器:192.168.15.146
MySQL用户及密码:slaver : slaver## - 两台服务器上的MySQL都是编译安装的5.7.29版本,centos7的系统,主服务器上开启了二进制日志功能
操作步骤
说一下主从复制的条件:
- 主服务器需要开启Binlog功能
- 主服务器要建立可以让从服务器复制binlog的账号
- 从服务器要配置master.info
- 从服务器开启复制功能(start slave )
1、修改主服务器上的配置文件,添加二进制日志功能,并将server_id设为1
vim /etc/my.cnf
修改如下:
[mysqld]
log_bin
server_id=1
2、配置主,从服务器之间的免密通道
3、将主服务器上的数据全备,并发送到从服务器上,从服务器导入备份数据
在主服务器上的操作:
进行全备:
- 最后的地址与名字可自行修改
mysqldump -umaster -p’master#’ --all-databases > /backup/all_db.sql
将备份文件上传到从服务器的root目录下:
scp /backup/all_db.sql root@192.168.15.146:/root
在从服务器上的操作
将备份文件导入数据库(有数据的记得备份):
mysql -uslaver -p"slaver#" </root/all_db.sql
4、在主服务器上配置slave过来拿取binlog的用户,并授权
注意这里是在MySQL里执行的:
grant replication slave on *.* to 'slave'@'192.168.15.146' identified by
'slave#';
5、在从服务器上配置主服务器的信息(生成master.info)
注意这里是在MySQL里执行的:
- MASTER_LOG_FILE和MASTER_LOG_POS可以在主服务器的MySQL里使用以下命令查看:
show master status;
CHANGE MASTER TO MASTER_HOST='192.168.15.148' ,
MASTER_USER='slave',
MASTER_PASSWORD='slave#',
MASTER_PORT=3306,
MASTER_LOG_FILE='mysql-bin.000003',
MASTER_LOG_POS= 438;
- 如果上面没配置成功可以使用以下命令清空对master的修改:慎用
reset master;
6、在从服务器上MySQL里开启slave
在MySQL里执行:
- 启动命令
start slave; - 查看slave的状态
show slave status \G;
关闭的命令
stop slave;
如果Slave_IO_Running、Slave_SQL_Running的值是Yes,说明已经OK了
7、测试主从复制的效果
可以在主服务器master上进行一些操作(新建表或者新建库),然后去看从服务器slaver上是否发生了同样的变化