1、主从数据库的作用
其中Master负责写操作的负载,也就是说一切写的操作都在Master上进行,而读的操作则分摊到Slave上进行。这样一来的可以大大提高读取的效率。在一般的互联网应用中,经过一些数据调查得出结论,读/写的比例大概在 10:1左右 ,也就是说大量的数据操作是集中在读的操作,这也就是为什么我们会有多个Slave的原因。但是为什么要分离读和写呢?熟悉DB的研发人员都知道,写操作涉及到锁的问题,不管是行锁还是表锁还是块锁,都是比较降低系统执行效率的事情。我们这样的分离是把写操作集中在一个节点上,而读操作其其他的N个节点上进行,从另一个方面有效的提高了读的效率,保证了系统的高可用性。
2、主从配置之前的须知
MySQL主从复制要求版本最好一致,至少前两个版本号相同,因为官方推荐这样,最主要还是怕版本不一致带来的不兼容问题。
首先注意的是,搭建好一台虚拟机Centos7的MySQL,以及你本机的MySQL,我这里是用本机MySQL作为主,用虚拟机作为从,此篇教程略过搭建系统和MySQL的过程,直接讲配置。
3、主服务器MySQL版本8.0.19
4、从服务器MySQL版本8.0.20
5、修改主服务器MySQL的my.cnf配置文件
主服务器MySQL的具体的三项配置,保存之后记住重启MySQL。
#skip-networking
# Replication Master Server (default)
# binary logging is required for replication
log-bin=mysql-bin
# binary logging format - mixed recommended
binlog_format=mixed
# required unique id between 1 and 2^32 - 1
# defaults to 1 if master-host is not set
# but will not function as a master if omitted
server-id = 131
6、修改从服务器MySQL的my.cnf配置文件
从服务器MySQL的具体的三项配置,保存之后记住重启MySQL。
log_bin=mysql-bin
binlog_format=mixed
server_id = 104
7、在主库的MySQL创建用于复制操作的用户
##创建用户
CREATE USER 'Slave1'@'192.168.62.131' IDENTIFIED WITH mysql_native_password BY 'Slave_xiaoxuan123';
##给用户授权
GRANT REPLICATION SLAVE ON *.* TO 'Slave1'@'192.168.62.131';
##刷新权限信息
flush privileges;
8、获取文件名和位置
SHOW MASTER STATUS;
9、在从(Slave)库设置参数
mysql> CHANGE MASTER TO MASTER_HOST='192.168.0.104',
MASTER_USER='Slave1',
MASTER_PASSWORD='Slave_xiaoxuan123',
MASTER_LOG_FILE='mysql-bin.000006',
MASTER_LOG_POS=870;
10、查看主从同步状态
show slave status\G;
11、开启主从同步
start slave;
12、再次查看
show slave status\G;
13、在主库创建数据库进行测试
##创建名为xiaoxuan的数据库进行测试
Create database xiaoxuan;
14、去从库看看会不会产生xiaoxuan的数据库
15、注意事项
每次主服务器,重新启动MySQL后,position参数位置需要改变,也就是上面的第9步的最后一位参数需要改变,当然ip地址也是一样,如果服务器ip地址经常性修改,则也要修改,不过这种情况很少,重启MySQL的情况比较多。