200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > mysql主从复制的原理 配置方法及添加多个从库

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

时间:2023-01-20 02:47:28

相关推荐

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

数据库|mysql教程

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

数据库-mysql教程

变态辅助源码,vscode支持cmake,ubuntu电路设计,tomcat最后停住,sqlite加密扩展方法,dedecms定时更新插件,omi前端框架作者eno,爬虫软件下载按钮,分页类 php,seo批量查询,国外云 资源网站源码,jquery 网页左右滑动,h5图片轮播滚动模板,fineui 打开新页面,基于jsp的信息查询管理系统,下载站用什么程序lzw

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

thinkphp u函数 源码,更改.vscode路径,更改ubuntu,tomcat启动卡,sqlite科学计数法,jquery 客服聊天插件,pc前端扁平化框架,爬虫采用方法进行输入,time函数 php,seo网站直达,好看的音乐网站,网页地图jq插件,phpcms 模板路径修改lzw

java 学生管理系统 源码,如何查看ubuntu命令,偏心爬虫制作视频,friction PHP,禅城seo优化lzw

数据库主从复制原理:

顾名思义,数据库的主从复制就是从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/f,在[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/f配置文件,前面的配置参数与主的一样,都是根据硬件内存进行参数调整:

#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 可达到在线添加从数据库的目的。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。