MySQL数据库自身提供的主从复制功能可以方便的实现数据的多处自动备份,实现数据库的拓展。多个数据备份不仅可以加强数据的安全性,通过实现读写分离还能进一步提升数据库的负载性能。
实施准备
- 至少两台服务器,并保证网络可以相互联通;
- 分别在两台服务器安装MySQL服务;
- 保证MySQL进行了my.cnf基本配置。
主数据库配置「Master」
- IP:192.168.1.1
- my.cnf路径:/etc/my.cnf
- 执行编辑MySQL配置文件命令:vim /etc/my.cnf
修改配置文件如下:
[mysqld]
server-id=1
### 启用二进制日志(必须)
log-bin=master-bin
log-bin-index=master-bin.index
- 配置完成后保存退出,并重启Mysql服务
从数据库配置「Slave」
- IP:192.168.1.2
- my.cnf路径:/etc/my.cnf
- 执行编辑MySQL配置文件命令:vim /etc/my.cnf
修改配置文件如下:
[mysqld]
server-id=2
relay-log-index=slave-relay-bin.index
relay-log=slave-relay-bin
- 配置完成后保存退出,并重启Mysql服务
主数据库授权从数据库SLAVE
- 登录MySQL;
mysql -uroot -p
- 创建用户,并授权SLAVE权限;
CREATE USER 'repl'@'192.168.1.2' IDENTIFIED BY 'wecredo2020';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.1.2';
FLUSH PRIVILEGES;
- 查询Master状态
show master status \G;
[图片上传失败...(image-9c00c1-1593577085961)]
从数据库配置SLAVE
- 登录MySQL;
mysql -uroot -p
- 启用从数据库SLAVE;
change master to master_host='192.168.1.1',master_port=3306,master_user='repl',master_password='wecredo2020',master_log_file='master-bin.000002',master_log_pos=0;
start slave; // 启动服务复制功能
其中主服务器中的信息要与创建时的保持一致,master_log_file值是查询Muster状态时的file值
- 查询Slave状态
show slave status \G
看到信息中如下两条指标都为'Yes'时,表示数据库主从热备成功,可以在主数据库中创建库、表、数据等操作,验证主从数据库是否一致。
`Slave_IO_Running: Yes`
`Slave_SQL_Running: Yes`
后话:生产服务器中,如果数据库采用主从热备,更新过程中一定要注意几点:
- 更新时应该关闭App服务(如Tomcat服务);
- 关闭从数据库「Slave」的服务;
- 主数据库「Master」更新并确认无误后,再打开从数据库「Slave」的服务;
以上方式主要是为了更新Master库时出现误操作,导致主从数据库数据丢失。在真实环境中,为了数据安全,一定要冷备与热备并存,才能尽可能的保证我们的数据安全!
网友评论