最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
当前位置: 首页 - 科技 - 知识百科 - 正文

mysql主从复制的原理,配置方法及在线添加多个从库

来源:懂视网 责编:小采 时间:2020-11-09 15:15:56
文档

mysql主从复制的原理,配置方法及在线添加多个从库

mysql主从复制的原理,配置方法及在线添加多个从库:数据库主从复制原理: 顾名思义,数据库的主从复制就是从master数据库复制到slave数据库,在master与slave之间实现整个复制需要三个线程来完成,其中两个在slave端一个在master端。 在master端必须打开binlog功能,因为从数据库需要获得主数据的完整的操作日
推荐度:
导读mysql主从复制的原理,配置方法及在线添加多个从库:数据库主从复制原理: 顾名思义,数据库的主从复制就是从master数据库复制到slave数据库,在master与slave之间实现整个复制需要三个线程来完成,其中两个在slave端一个在master端。 在master端必须打开binlog功能,因为从数据库需要获得主数据的完整的操作日

数据库主从复制原理: 顾名思义,数据库的主从复制就是从master数据库复制到slave数据库,在master与slave之间实现整个复制需要三个线程来完成,其中两个在slave端一个在master端。 在master端必须打开binlog功能,因为从数据库需要获得主数据的完整的操作日

数据库主从复制原理:

顾名思义,数据库的主从复制就是从master数据库复制到slave数据库,在master与slave之间实现整个复制需要三个线程来完成,其中两个在slave端一个在master端。

在master端必须打开binlog功能,因为从数据库需要获得主数据的完整的操作日志然后再自身上顺序的执行日志中的各种操作。

主要步骤:

1、将slave的io线程连上master,请求获得指定日志文件的指定位置之后的操作日志的内容;

2、master获得slave的io线程请求后,将请求中读取到的指定日志的指定位置之后的内容返回给slave端的io线程,其中包括binlog 的位置以及名称;

3、slave端的io线程在接收到信息后,将接收到的日志内容写入slave端的relay log文件的末端,并将binlog的文件名和位置记录到master-info文件中,以便下一次请求时向master提出请求;

4、slave的sql线程会检测到relay log中新增的一些日志内容并加以解析成为可执行的query语句在slave端执行,从而达到master与slave端的数据一致性。



配制方法:

1、编辑master的配置文件/etc/my.cnf,在[mysqld]中添加以下内容:

log-bin=mysql-bin //打开mysql的操作日志功能

binlog_format=mixed //主从复制模式,混合模式(MBR)默认的

binlog_cache_size=4M //设置binlog缓存大小

max_binlog_size=300M //设置binlog文件最大体积

2、在master上对从数据库进行授权,建立复制用户的专有账户

mysql>GRANTREPLICATION SLAVE ON *.* TO 'repl'@'%' IDENTIFIED BY 'repl';

mysql>flush privileges;

3、对master的数据库进行备份

在备份master数据时要对master执行锁表操作:

mysql>FLUSH TABLES WITH READ LOCK;

Query OK, 0 rows affected (0.00 sec)

mysql> reset master; //刷新数据库

Query OK, 0 rows affected (0.00 sec)

在不退出该终端的情况下(否则锁表会失效),再次开启一个终端直接打包压缩数据文件或者使用mysqldump工具来导出数据:

#mysqldump-uroot -h 127.0.0.1 --opt -R XXXXXX>/data/mysql/backup/XXXXXX.sql

#cd/data/mysql/backup/

4、备份数据库到从数据库

#tar-czvf XXXXXX.tar.gz XXXXXX.sql

#scp XXXXXX.tar.gz root@10.7.70.42:/data/mysql/backup

可用相同的方法将数据库导入到其他的slave机器上,导入完成后在上面的命令终端上执行一下解锁命令:

mysql>UNLOCKTABLES;

mysql>show processlist;

mysql>show master status\G; //查看主服务器的bin-log 和id

5、设置slave主机

编辑slave从数据库的/etc/my.cnf配置文件,前面的配置参数与主的一样,都是根据硬件内存进行参数调整:

#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=2 //slave 的编号 注意不要重复

read_only=1

binlog_format=mixed

binlog_cache_size=4M //设置binlog缓存大小

max_binlog_size=300M //设置binlog文件最大体积

在slave主机上新建一个数据库,导入主数据库的数据:

mysql>create database XXX;

mysql>use XXX;

mysql>set names utf8;

mysql>source /XXXXXX/XXX.sql


设置从数据库的主master:

mysql>CHANGE MASTER TO MASTER_HOST='XX.XX.XX.XX', //主数据库的ip地址

->MASTER_USER='repl',

->MASTER_PASSWORD='repl',

->MASTER_LOG_FILE='mysql-bin.000001', //这里根据主服务器的binlog和id设置

->MASTER_LOG_POS=107; //


设置完成后,开启slave服务:

mysql> slave start;

Query OK, 0 rows affected (0.00 sec)

mysql> show slave status\G; //显示slave的状态


从输出结果中若:Slave_IO_Running和Slave_SQL_Running如果都为Yes时,表示配置成功



在线添加多个从库:


原理:若直接在主数据库上再次添加从库会执行停止mysql 的服务进行锁表操作从而影响正常的工作流程,故在线添加从数据库可以通过备份旧的从数据库达到数据库复制的目的。再次利用change master 可达到在线添加从数据库的目的。

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文档

mysql主从复制的原理,配置方法及在线添加多个从库

mysql主从复制的原理,配置方法及在线添加多个从库:数据库主从复制原理: 顾名思义,数据库的主从复制就是从master数据库复制到slave数据库,在master与slave之间实现整个复制需要三个线程来完成,其中两个在slave端一个在master端。 在master端必须打开binlog功能,因为从数据库需要获得主数据的完整的操作日
推荐度:
标签: 复制 添加 在线
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top