mysql数据库主从复制部署笔记

数据库主从复制原理:
数据库的主从复制就是从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端的数据一致性。

配置方法:
MASTER
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文件大小,如果不设置,默认是1.1GB
expire_logs_days= 3               #bin-log在主库保存的天数,主库产生的bin-log并不会自动删除,需要手动删除

2、在master上对从数据库进行授权,建立复制用户的专有账户
mysql>GRANT  REPLICATION   SLAVE  ON *.*   TO   ‘repl’@'%’   IDENTIFIED BY   ‘repl’;

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机器上,导入完成后在Master的命令终端上执行一下解锁命令:
mysql>UNLOCK  TABLES;
mysql>show processlist;
mysql>show master statusG;        #查看主服务器的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 statusG; //显示slave的状态
从输出结果中若:Slave_IO_Running和Slave_SQL_Running如果都为Yes时,表示配置成功
在线添加多个从库:
原理:若直接在主数据库上再次添加从库会执行停止mysql 的服务进行锁表操作从而影响正常的工作流程,
故在线添加从数据库可以通过备份旧的从数据库达到数据库复制的目的。再次利用change master 可达到在线添加从数据库的目的。

时间: 2024-10-23 20:05:40

mysql数据库主从复制部署笔记的相关文章

Centos6.3是mysql数据库主从复制备份笔记(1/2)

  MySQL主从复制结构是基于mysql bin-log日志基础上,从库通过打开IO进程收到主库的bin-log日志增量 信息,并保存到本地relay log,而后再通过打开MYSQL进程从relay log上获取的增量信息并翻译成SQL语 句后写到从数据库. 主从复制结构,实际上可以实现两个功能: 1.从库充当主库的数据库备份实例 2.读写分离,主库负责正常读写数据,从库只负责读数据 实际生产环境,因为很多应用实际读数据库的次数远大于写数据库的次数,所以在项目开发初期,编写 程序时做一个判断

mysql数据库 主从复制的配置方法_Mysql

MySQL支持单向.异步复制,复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器.主服务器将更新写入二进制日志文件,并维 护日志文件的一个索引以跟踪日志循环.当一个从服务器连接到主服务器时,它通知主服务器从服务器在日志中读取的最后一次成功更新的位置.从服务器接收从那 时起发生的任何更新,然后封锁并等待主服务器通知下一次更新. 为什么使用主从复制? 1.主服务器/从服务器设置增加了健壮性.主服务器出现问题时,你可以切换到从服务器作为备份. 2.通过在主服务器和从服务器之间切分处理

MySQL数据库密码恢复笔记

前言: 在LINUX下装了MYSQL,刚装完的时候把ROOT空密码改了,当时也改了个好记的密码,没想到过了一个小时就忘记了,于是有了这篇恢复密码过程笔记 因为MySQL密码存储于数据库mysql中的user表中 所以只需要将我windows 2003下的MySQL中的user表拷贝过来覆盖掉就行了 在c:mysqldatamysql(linux 则一般在/var/lib/mysql/mysql/)目录下有三个user表相关文件user.frm.user.MYD.user.MYI user.frm

Mysql数据库主从复制相关介绍

公司使用master-slave架构,就具体学习了下,这里记录下相关内容. Replication的好处 读写分离:主数据库负责写和update数据,从数据库负责读操作 数据安全:由于数据复制到从库,并且可以对从库的复制进程进行停止操作,所以可以在从库上进行备份服务而不需要对主服务器进行中断操作 可分析:在线数据可以在master数据库上创建,然后在slave数据库上进行分析,且不会对master数据库造成性能影响 长数据:如果一个分支机构需要一份主要数据的copy,可以使用复制来创建一份本地备

利用percona-xtrabackup快速搭建MySQL数据库主从复制

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://dgd2010.blog.51cto.com/1539422/1709183 应用场景: Linux服务器A运行MySQL服务,并开启了log-bin(log-bin = mysql-bin)和指定了server-id(server-id = 1); Linux服务器B也以与服务器A同样的方式(不同样也可以,参考下面的"注意")安装了MySQL服务,可开启log-bin

mysql数据库入门学习笔记(1/2)

数据库一直没怎么重视,前段时间看了看mysql的基础知识,不看不知道,一看吓一跳,很多基础都竟然不知道,一直傻傻的用一些简单的.笨笨的方法,看了之后原来竟是如此如此,生活如此多娇,以前看不懂的,现在也懂点了,以前看到就头晕的,现在不晕了,发现一个奇怪的现象,应该很多人都有吧,当学一种知识的时候,而当时确实又是学不会.学不好的时候,随着时间的慢慢推移,再回过头来看的时候,发现比以前容易接受得多了--难怪这么多人到快挂的时候才后悔,不扯这么多了,把记录的笔记分享出来,方便日后查悦. 一.data数据

MySQL 数据库设计复习笔记及项目实战_Mysql

作者:杨鑫奇 最近手头上有3个项目开动,其他2个都是从底层开始的,一个已经开始了一段时间的了,在小城市小团队开发的条件下,都没有专门的DBA来做数据库的设计和维护,往往都是开发人员顶上,可是看了很多的数据库的设计,感觉很多设计都不是很完美,包括DZ的Ucenter和UcenterHome的数据库,所以这段时间话了近5个小时的时间好好的整理了下数据库方面的基本内容,配合现有的框架来实现快捷的数据库设计,来满足目前项目的需求 参考的数据库文档主要有:目前国内的常见的PHP系统的数据库 DZ6.0的数

mysql数据库基本操作学习笔记(1/2)

以下以数据库"ceshi"为例 1.连接数据库  代码如下 复制代码 mysql -u username -p password 2.创建/删除数据库  代码如下 复制代码 创建:create database ceshi; 删除:drop database ceshi; 3.创建/删除数据表 创建:  代码如下 复制代码 create table students (sid int(10) auto_increment primary key,name varchar(255),co

Redis数据库主从复制配置详解

一.复制基本配置与演示   为了避免单点故障,Redis提供了复制功能,可以实现自动同步的过程.   1.配置   同步后的数据分为两类:一类是主数据库(master),一类是从数据库(slave).主数据库可以进行读写操作,当发生写操作时自动将数据同步给从数据库.而从数据一般只读,并接受主数据库同步过来的数据.   在Redis使用复制功能,只需要在从数据库的配置文件中加入"salveof 主数据库IP 主数据库端口"即可,主数据库无需进行任何配置.   2.Redis复制演示