本文共 1951 字,大约阅读时间需要 6 分钟。
当网站并发量大时,最先扛不住的可能是数据库了。所以需要多台服务器进行分担压力。这时会用到mysql主从同步,把mysql服务器数据分到多台服务器中。
一、主从同步的优点
1、做数据的热备,作为后备数据库,主数据库服务器故障后,可切换到从数据库继续工作,避免数据丢失。
2、架构的扩展。业务量越来越大,I/O访问频率过高,单机无法满足,此时做多库的存储,降低磁盘I/O访问的频率,提高单个机器的I/O性能。
3、读写分离,使数据库能支撑更大的并发。在报表中尤其重要。由于部分报表sql语句非常的慢,导致锁表,影响前台服务。如果前台使用master,报表使用slave,那么报表sql将不会造成前台锁,保证了前台速度。
二、mysql5.7的安装
三、主服务器配置
3.1 编译mysql配置文件,开启bin-log日志,并重启mysqld让配置文件生效vim /etc/my.cnf
#[mysqld]中增加代码
server-id=1
log_bin=mysql-bin
#不同步数据库
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema
#只仅同步数据库
binlog-do-db=zixuephp-db
#mysql复制模式,三种:SBR(基于sql语句复制),RBR(基于行的复制),MBR(混合模式复制)
binlog_format=MIXED #混合模式复制,可靠性更高systemctl restart mysqld
3.2从主服务器中创建从库用户mysql -uroot -p123456
grant replication slave on *.* to 'slave'@'%' identified by '123456';
flush privileges;
3.3锁住主库表flush tables with read lock;
3.4查看主库状态
这里的File和Position会在从库中用到show master status \G
3.5备份所有数据
备份主库中的所有数据到从库中,保持当前主库和从库数据一致#主库导出数据
mysqldump -uroot -p123456 >/root/back.sql#从库导入来自主库数据
source back.sql
3.6解锁主库表unlock tables;
四、从库配置
4.1配置从库my.cnf配置文件vim /etc/my.cnf
#[mysqld]中增加代码
server-id=2
log_bin=mysql-bin
binlog_format=MIXED
systemctl restart mysqld
4.2从库设置slave复制主库数据
master_log_file文件尾主库中 show master status 中的File,master_log_post为主库中Postion的值change master to master_host='主mysql服务器ip',master_user='slave',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=19416434;
4.3启动从库复制start slave;
4.4查看从库是否同步上主库
当Slave_IO_Running: Yes Slave_SQL_Running: Yes 都为yes同步成功show slave status;
4.5在主库中查看从库是否连接到show processlist \G
配置完成。
4.6其他调试语句#查看错误
show warnning;
#查看主库状态
show master status \G
#查看从库状态
show slave status \G
#重置主记录信息
reset master;
#重置从记录信息
reset slave;
#停止始从
stop slave;
#开始从
start slave;
#清空从所有连接、信息记录
reset slave all;
#删除从
change master to master_host=' ';
4.7删除主从同步#从库
stop slave;
reset slave all;
show slave status \G
#清除从库配置文件的配置
#主库
reset master;
#清除主库配置文件的配置
#清除mysql.user从库账号
show master status \G
转载地址:http://vtowx.baihongyu.com/