目录
1.什么是mysql主从
2.为什么要使用MySQL主从
3.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的压力,提高系统的扩展性和可用性。
3.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/my.cnf进入编辑模式

?输入配置内容

#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/my.cnf进入编辑模式

#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.查看auto.cnf文件
找auto.cnf文件文件的位置
find / -name auto.cnf
 

?我们发现两个的UUID相同
3.删除其中一个的auto.cnf文件

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;
|