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