一、创建三台服务器,搭建三个mysql环境
遇到的问题:
(1)在设置静态IP时,虚拟机无法访问外部物理机
解决办法:物理的vm8改静态,然后vm哪里也设置跟vm8的nat直连,然后改配置,重启网络,就可以啦。
vm8是vm用来跟linux类操作系统的虚拟网卡
vm1是vm用来跟win系统的虚拟网卡
所以装linux都和你vm8的ip保持一致,win就跟vm1的一样,这是敏哥的理解
(2)由于物理机的vm8设置了静态ip,原来设置的MySQL用户权限无法被访问
解决办法:a:将用户权限改为任意ip都可访问
b.将原来的权限ip更改为现在的ip
命令:drop user ‘username’@’ip’
Grant all privileges on *.* to 'test'@'%'identified
**二、mysql主从**
https://blog.csdn.net/h1228322088/article/details/116673275
1.什么是mysql主从
所谓mysql主从就是建立两个完全一样的数据库,其中一个为主要使用的数据库,另一个为次要的数据库,一般在企业中,存放比较重要的数据的数据库服务器需要配置主从,这样可以防止因数据库服务器宕机导致数据丢失,还能保证业务量太多、数据太多和访问人数太多时服务的质量(服务器响应速度),还能提供故障切换、读写分离、和备份等等功能。
2.主从形式
一主一从
主主复制:当作备份使用,当主服务器出现故障时,另一个主服务器会自动顶上。
一主多从:用来实现读写分离,当写操作较少时,读操作较多时使用,主服务器用来实现写 操作,从服务器用来实现读操作。
多主一从:用来实现读写分离,当写操作较多时,读操作较少时使用,主服务器用来实现写 操作,从服务器用来实现读操作。
联级复制
3.传统主从和gtid主从的区别
(1)传统主从
传统主从复制主要是基于二进制日志文件位置的复制,因此主必须启动二进制日志记录并建立唯一的服务器ID,复制组中的每个服务器都必须配置唯一的服务器ID。如果您省略server-id(或者明确地将其设置为其默认值0),则主设备将拒绝来自从设备的任何连接。
(2)gtid主从
MySQL 5.6 的新特性之一,全局事务标识符(GTID)是创建的唯一标识符,并与在源(主)服务器上提交的每个事务相关联。此标识符不但是唯一的,而且在给定复制设置中的所有服务器上都是唯一的。所有交易和所有GTID之间都有一对一的映射关系 。它由服务器ID以及事务ID组合而成。这个全局事务ID不仅仅在原始服务器上唯一,在所有存在主从关系 的mysql服务器上也是唯一的。正是因为这样一个特性使得mysql的主从复制变得更加简单,以及数据库一致性更可靠。一个GTID在一个服务器上只执行一次,避免重复执行导致数据混乱或者主从不一致。
4.主从复制的原理
主库将用户所有的写操作(增删改,查除外)记录到binlog日志当中并且生成一个log dump线程,从库生成I/O和SQL线程,从库的I/O线程向主库的log dump线程以I/O流的形式发送请求,主库的log dump线程收到从库I/O线程的请求后将binlog日志发送给从库,从库I/O线程收到binlog日志后将其写道relay log(中继日志)文件中,再由从库的SQL线程将relay log文件中的日志解析成sql脚本,最后执行生成的sql脚本文件,来实现主从的操作一致,达到最终数据一致的目的。
5.传统主从复制配置步骤:
确保所有主从主机的防火墙已经关闭
systemctl stop firewalld
确保主数据库和从数据库里的数据一样
再主数据库里创建一个同步账号并且授权给从数据库使用
grant all privileges on *.* to 用户名@'从1ip' identified by 密码;
grant all privileges on *.* to 用户@'从2ip' identified by 密码;
刷新数据库
配置主数据库配置文件
Cd /ect/mysql/mariadb.conf.d
Vim 50-server.cnf
server-id=1 //唯一id,主数据库必须比从数据库小
log-bin=mysql_bin
重启mysql
Systemctl restart mysql
使用授权的账号登录mysql
Mysql -umuwentao -p
show master status;
记录下File和Position的值:File为日志文件名,Position为数据库pos
配置从1数据库配置文件
server-id=2 //唯一id,主数据库必须比从数据库小
log-bin=mysql_bin
重启mysql
Systemctl restart mysql
使用授权的账号登录mysql
Mysql -umuwentao -p
change master to
master_host='从1ip',
master_user='授权用户名',
master_password='授权密码',
master_log_file='File值',
master_log_pos=Position值;
配置从2数据库配置文件
server-id=3 //唯一id,主数据库必须比从数据库小
log-bin=mysql_bin
重启mysql
Systemctl restart mysql
使用授权的账号登录mysql
Mysql -umuwentao -p
change master to
master_host='从2ip',
master_user='授权用户名',
master_password='授权密码',
master_log_file='File值',
master_log_pos=Position值;
至此,mysql主从搭建就已完成,主表中插入数据,两个从表都会生成相应的数据,主表用于写,从表用于读。实现读写分离