从0开始搭建MySQL主从复制
MySQL 复制优势:
- 主库出现问题,可以快速切换到从库提供服务。
- 可以在从库上执行查询操作,从主库中更新,实现读写分离,降低主库的访问压力。
- 可以在从库中执行备份,以避免备份期间影响主库的服务。
搭建步骤
一、master
1) 在master 的配置文件(/usr/my.cnf)中,配置如下内容:
#mysql 服务ID,保证整个集群环境中唯一
server-id=1
#mysql binlog 日志的存储路径和文件名
log-bin=master-bin
#是否只读,1 代表只读, 0 代表读写
read-only=0
#忽略的数据, 指不需要同步的数据库
binlog-ignore-db=mysql
#指定同步的数据库
#binlog-do-db=db01
2) 执行完毕之后,需要重启Mysql:
service mysql restart ;
3) 创建同步数据的账户,并且进行授权操作:
# mysql 5.7
grant replication slave on *.* to 'feng'@'192.168.192.131' identified by 'feng';
# mysql 8.0
create user feng@'%' identified by 'feng';
grant replication slave on *.* to 'feng'@'192.168.192.131';
flush privileges;
4) 查看master状态:(记住file和position的内容,从服务器第一次同步要用到)
show master status
字段含义:
File : 从哪个日志文件开始推送日志文件
Position : 从哪个位置开始推送日志
Binlog_Ignore_DB : 指定不需要同步的数据库
二、slave
1) 在 slave 端配置文件中,配置如下内容:
#mysql服务端ID,唯一
server-id=2
# 启动MySQL二进制日志,可以用来做数据备份和崩溃恢复,或主服务器挂掉,将此服务器作为其他服务器的主服务器
relay-log=slave-relay-bin
2) 执行完毕之后,需要重启Mysql:
service mysql restart;
3) 执行如下指令 :
change master to master_host= '192.168.192.130', master_user='feng', master_password='feng', master_log_file='master-bin.000003', master_log_pos=14707;
指定当前从库对应的主库的IP地址,用户名,密码,从哪个日志文件开始的那个位置开始同步推送日志。
4) 开启同步操作
start slave;
show slave status\G;
至此,在从库中插入输入,验证从库同步数据成功。
下期进阶,MySQL读写分离。
|