Mysql数据库搭建简单的主从复制(一主一从)

一、场景需求

对数据库的读和写都在同一个数据库服务器中操作,业务系统性能会降低。
1.为了提升业务系统性能,优化用户体验,我们通过做主从复制,进行读写分离来减轻主数据库的负载。
2.如果有一天主数据库突然宕机,可将业务系统切换到从数据库上,可避免数据丢失。

二、实现原理/思想

主数据库开启二进制日志后,将所有的增删改记录保存在二进制日志。从库连接到主库后,主库将日志发给从库。从库读取日志进行更新事件。需要注意的是,由于中途多次发生I/O,所以主从复制会发生延迟。

三、前提条件

1.两台服务器数据库(主A,从B)
2.都装有mysql数据库
3.数据库均开启远程访问
4.我的基于centos系统

四、配置搭建

1.修改主库(A)配置文件 /etc/my.cnf,新增内容如下,保存后重启mysql服务

#主服务器唯一ID
server-id=1
#开启二进制日志
log-bin=mysql-bin
#设置不要复制的数据库(可设置多个,根据自己mysql数据库实际情况定)
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
binlog-ignore-db=kings
binlog-ignore-db=performance_schema
#设置需要复制的数据库(主机中暂时没创建的数据库,否则从机会报错)
binlog-do-db=hero
#设置logbin格式
binlog_format=STATEMENT

注意:设置不要复制的数据库,根据自己mysql数据库实际情况定,例如我的四个数据库都不需要复制;且新增内容必须放在[mysqld]之下 [mysqld_safe]之上,否则不会生效
在这里插入图片描述
2.修改主从库(B)配置文件 /etc/my.cnf,新增内容如下,且新增内容必须放在[mysqld]之下 [mysqld_safe]之上,否则不会生效。保存后重启mysql服务

#从服务器唯一ID
server-id=2
#启动中继日志
relay-log=mysql-relay

3.在主机库创建账户joe并授权SLAVE,如图

GRANT REPLICATION SLAVE ON *.* TO 'joe'@'%' identified by'123456';

在这里插入图片描述
4.在主机库查看master状态,如图

mysql> show master status;

在这里插入图片描述
5.在从机B上配置需要复制的主机A

CHANGE MASTER TO MASTER_HOST='主机IP',
MASTER_USER='joe',
MASTER_PASSWORD='123456',
MASTER_LOG_FILE='日志文件名',MASTER_LOG_POS=节点;

日志文件名:我的是主机的mysql-bin.000001,节点:我的就是120

在这里插入图片描述
提示:重置命令

mysql> stop slave;   //停止复制
mysql> rest master;  //重置

6.启动从机B的复制功能,如图

mysql> start slave;

在这里插入图片描述
7.查看状态

mysql> show slave status\G;

在这里插入图片描述

五、测试

1.主库A里创建约定好的数据库,例如我的:hero

mysql> create database hero;

在这里插入图片描述

2.从库B里查询数据库hero

mysql> show databases;

在这里插入图片描述
3.主库A进行建表,插入数据,查询测试

#切换库
mysql> use hero;
#建表
mysql> create table heros(id int,role varchar(10),name varchar(20));
#插入数据
mysql> insert into heros values(1,'fashi','zhenji');
#查询表中所有数据
mysql> select * from heros;

在这里插入图片描述
4.从库B进行查询测试

#切换库
mysql> use hero;
#查看库中所有表
mysql> show tables;
#查询表中所有数据
mysql> select * from heros;

在这里插入图片描述

发布了23 篇原创文章 · 获赞 3 · 访问量 1220

猜你喜欢

转载自blog.csdn.net/Joe14103/article/details/104877807