如何搭建mysql的主从关系

时间:2024-11-18 12:54:05

目录

1.什么是mysql主从

2.为什么要使用MySQL主从

主从的实现原理

4.如何搭建mysql主从关系

4.1.搭建两台有mysql的虚拟机(可以克隆)

4.2.保证自己的mysql可以远程访问--以前笔记有

4.3.修改ip地址(因为我是克隆的)

4.4.主库的搭建

4.4.1.配置mater的配置文件

4.4.2.执行完毕之后,需要重启Mysql

4.4.3.进入mysql中

4.4.4. 查看master状态

4.5.从库的搭建

4.5.1.配置从配置文件的配置

4.5.2.执行完毕之后,需要重启Mysql

4.5.3.进入到数据库

4.5.4.指定主库的ip 账号密码 日志文件 从什么时候推送日志文件

4.5.5.开启同步

4.5.6.查看同步的状态

4.5.6.如何解决


1.什么是mysql主从

mysql主从就是说,使用多台mysql服务器,实现对于数据的读写分离,分担单台mysql服务器的压力,使用一台服务器作为mysql主库,在这台服务器上实现对数据的写的操作,然后使用一台或多台服务器作为mysql从库,来实现对数据的读的操作

2.为什么要使用MySQL主从

我们都知道mysql是一个关系型数据库,用来存储我们的数据,那么就会有对于某一张表的curd,当我们的访问量和操作量 都比较大时,我们就有可能出现读写冲突,或者压力过大等问题。所以我们采用主从的方式来将数据的读写操作分离,一方面防止读写冲突,另一方面也能减轻单台mysql的压力,提高系统的扩展性和可用性。

主从的实现原理

当我们在mysql主库上进行写的操作时,主库会将操作进行备份,存储到二进制日志binlog中,由从库的I/O线程来读取binlog日志的内容,将主库中写的操作读取到从库并转存到从库的中继日志relaylog中,从库通过SQL线程将relaylog中的内容进行读取并写入库中,实现主从数据同步

4.如何搭建mysql主从关系

4.1.搭建两台有mysql的虚拟机(可以克隆)

4.2.保证自己的mysql可以远程访问--以前笔记有

设置远程访问

grant replication slave on *.* to 'root'@'192.168.192.131' identified by 'root';    

flush privileges;

4.3.修改ip地址(因为我是克隆的)

 

4.4.主库的搭建

4.4.1.配置mater的配置文件

输入 vi/etc/进入编辑模式

 输入配置内容

#mysql 服务ID,保证整个集群环境中唯一
server-id=1

#mysql binlog 日志的存储路径和文件名
log-bin=/var/lib/mysql/mysqlbin

#是否只读,1 代表只读, 0 代表读写
read-only=0

#忽略的数据, 指不需要同步的数据库
binlog-ignore-db=mysql

4.4.2.执行完毕之后,需要重启Mysql

systemctl restart mysqld

4.4.3.进入mysql

mysql -root -p密码

4.4.4. 查看master状态

show master status;

File : 从哪个日志文件开始推送日志文件 给从节点
Position : 从哪个位置开始推送日志  从什么位置开始同步
Binlog_Ignore_DB : 指定不需要同步的数据库

4.5.从库的搭建

4.5.1.配置从配置文件的配置

输入 vi /etc/进入编辑模式

#mysql服务端ID,唯一
server-id=2

#指定binlog日志
log-bin=/var/lib/mysql/mysqlbin

 4.5.2.执行完毕之后,需要重启Mysql

 systemctl restart mysqld

4.5.3.进入到数据库

mysql -uroot -p密码

4.5.4.指定主库的ip 账号密码 日志文件 从什么时候推送日志文件

change master to master_host= '192.168.74.152', master_user='root', master_password='1234', master_log_file='mysqlbin.000001', master_log_pos=154; 

指定当前从库对应的主库的IP地址,用户名,密码,从哪个日志文件开始的那个位置开始同步推送日志。  

4.5.5.开启同步

start slave;

4.5.6.查看同步的状态

show slave status \G;

出现两个yes 是成功的

4.5.6.如何解决

 1.查看主从的server_id变量

show variables like 'server_id';

 从上面的情形可知,主从mysql已经使用了不同的server_id

 2.查看文件

找文件文件的位置

find / -name

 我们发现两个的UUID相同

3.删除其中一个的文件

4.重启mysql

service mysql restart

5.进入mysql

mysql -uroot -p1234

6.指定当前从库对应的主库的IP地址,用户名,密码,从哪个日志文件开始的那个位置开始同步推送日志。

change master to master_host= '192.168.74.152', master_user='root', master_password='1234', master_log_file='mysqlbin.000001', master_log_pos=154; 

 7.开启同步

start slave;

 9.查看同步的状态

show slave status \G;

10. 停止同步操作

 stop slave;