mysql5.7在centos7上搭建主从复制

 原创   
营养快线送你 2021-08-23 学习笔记
0 0 0 413

搭建mysql数据库主从复制,主机只能有一个,从机可以有多个。


主从复制原理:

从从数据库接入主机那一刻开始(以前的数据不会同步到从机),从机开始读取主机写的日志BinaryLog,写入到自己的中继日志RelayLog,然后从机读取RelayLog进行写入数据。


主从复制缺点:

从数据同步主数据延迟问题,解决参考方案:https://blog.csdn.net/hao_yunfeng/article/details/82392261

另外一个mysql重要参数设置,MySQL中innodb_flush_log_at_trx_commit的设置(要数据安全还是更高的并发性能):https://www.cnblogs.com/jpfss/p/10772952.html


开始搭建
1.主机配置
修改配置文件: vim /etc/my.cnf
就写在[mysqld]下面就行
新增一行 server-id=1     #主服务唯一ID
新增一行 log-bin=mysql-bin      #启用二进制日志
新增一行 binlog-do-db=testdb           #需要复制的主数据库,可新增多行配置多个
新增一行 binlog-ignore-db=mysql      #不要复制的数据库,比如自带的,可新增多行配置多个,其实也不用配置,配置了binlog-do-db就行
新增一行 binlog-format=MIXED   #日志格式
新增好之后保存就好了。
binlog-format有三种格式,各有缺点:
STATEMENT:
日志格式会造成数据不一致,比如:update xxx set time=now() where name='111',从数据库再执行这个语句,就因为函数now()导致主从时间数据不一致
ROW:
会记录每一行的真实改变,不会造成数据不一致的问题。但也有缺点,比如:update xxx set time=now(),进行全表更新,如果这张表有10万条数据,就会有10万条日志,从数据库就会要执行10万次。10万条的写入日志,10万条的从数据库更新,造成性能低下。
MAXED:
mysql会帮你自动选择使用STATEMENT还是ROW,如果没有函数造成数据不一致,则执行STATEMENT,否则执行ROW。缺点:识别不了系统变量,如@@host name。

2.从机配置
修改配置文件:vim /etc/my.cnf
就写在[mysqld]下面就行
新增一行   server-id=2    #从服务唯一ID
新增一行   relay-log=mysql-relay
新增好之后保存就好了。

3.配置好之后,重启主从mysql服务

4.主机从机都关闭防火墙,云服务器可不需要,开启端口,只要主从能互通就行
5.在主机上建立账号并授权slave,在主机mysql服务上执行授权命令:
GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%' IDENTIFIED BY '密码';
6.查询master的状态:show master status;

FilePositionBinlog_Do_DBBinlog_Ignore_DBExecuted_Gtid_Set
mysql-bin.000001462testdbmysql
File:binlog日志
Position:接入点,从这往后的数据
备注:此时主机不要进行操作了,不然接入点会变,影响后面从机配置的接入点

7.在从机上配置连接主机,执行复制主机的命令:
CHANGE MASTER TO MASTER_HOST='主机ip',
MASTER_USER='slave',
MASTER_PASSWORD='密码',
MASTER_LOG_FILE='mysql-bin.具体数字',  #上面表格的File
MASTER_LoG_POS=具体值;  #上面的Postion,接入点
备注:这是一条语句,使用,隔开的
8.启动从机服务:start slave;
备注:如果从机以前有连接过主从,报错run stop SLAVE...first,那么重置一下从机即可,命令:
stop slave;
reset master;
9.查看从机服务状态:show slave status\G;  #\G按列格式输出
成功标志:
Slave_IO_Running:YES
Slave_SQL_Running:YES
如果只有一个YES或者没有YES,输出列会有日志

10.如果成功,主机开始创建数据库testdb,在这个数据库中进行创建表,插入数据,然后到从机查看校验是否有数据。
11.如何停止从服务复制功能:stop slave;

12.如何重新配置主从:stop slave;   reset master;


学习mycat实战应用笔记:https://b23.tv/V3zlAs