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/(www.111cn.net)data/mysql/backup/

4、备份数据库到从数据库
#tar -czvf XXXXXX.tar.gz XXXXXX.sql
#scp XXXXXX.tar.gz [email protected]:/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 可达到在线添加从数据库的目的。
from:http://www.111cn.net/database/mysql/59749.htm

时间: 2024-12-31 22:28:43

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

MYSQL数据库基础学习笔记

一.mysql的安装与初始化: 安装mysql命令: yum install -y mysql-server mysql mysql-devel 初始化: service mysqld start   //第一次启动mysqld服务会自动初始化: 创建用户并初始化密码: mysqladmin -u root passwd '密码' 登陆mysql: mysql -u root -p 退出mysql: quit.exit 设置mysqld服务自启动: chkconfig mysqld on mys

怎样解决MySQL数据库主从复制延迟的问题

像Facebook.开心001.人人网.优酷.豆瓣.淘宝等高流量.高并发的网站,单点数据库很难支撑得住,WEB2.0类型的网站中使用MySQL的居多,要么用MySQL自带的MySQL NDB Cluster(MySQL5.0及以上版本支持MySQL NDB Cluster功能),或者用MySQL自带的分区功能(MySQL5.1及以上版本支持分区功能),我所知道的使用这两种方案的很少,一般使用主从复制,再加上MySQL Proxy实现负载均衡.读写分离等功能,在使用主从复制的基础上,再使用垂直切分

怎样解决MySQL数据库主从复制延迟的问题?

1.网络超时 2.慢查询 3.流量 问题一:主库的从库太多,导致复制延迟从库数据以3-5个为宜,要复制的从节点数量过多,会导致复制延迟问题二:从库硬件比主库差,导致复制延迟查看Master和Slave的系统配置,可能会因为机器配置不当,包括磁盘I/O.CPU.内存等各方面因素造成复制的延迟.一般发生在高并发大数据量写入场景中问题三:慢SQL语句过多假如一条SQL语句执行时间是20秒,那么从执行完毕到从库上能查到数据至少需要20秒,这样就延迟20秒了.一般要把SQL语句的优化作为常规工作不断地进行

MySQL 数据库主从复制架构

前文<MySQL 数据库事务与复制>分析了 MySQL 复制过程中如何保证 binlog 和事务数据之间的一致性,本文进一步分析引入从库后需要保证主从的数据一致性需要考虑哪些方面. 原生复制架构 MySQL 的原生复制架构原理如上图所示.从库的 I/O Thread 线程负责不断读取主库的 binlog 日志文件并写入本地的 Relay log 临时缓存.从库的 SQL Thread 线程则不断读取 Relay log 重放事件入库.整个过程看起来是比较简单清晰的,但其中有几个点对主从数据一致

MYSQL数据库主从复制(一)

MYSQL主从复制原理 1 复制概述 Mysql内建的复制功能是构建大型,高性能应用程序的基础.将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台主机的数据复制到其它主机(slaves)上,并重新执行一遍来实现的.复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器.主服务器将更新写入二进制日志文件,并维护文件的一个索引以跟踪日志循环.这些日志可以记录发送到从服务器的更新.当一个从服务器连接主服务器时,它通知主服务器从服务器在日志中读取的最后一次成功

mysql数据库常用命令笔记

连接数据库:mysql -h localhost -u root -p 000000 退出:exit;    \q;    quit; SET foreign_key_checks = 0; 禁用外键 ->表示当前命令没有执行或者等待命令执行符来确认: \c 用来清除->效果 '>.">  表示之前的mysql语句缺少引号 Informaction_schema  主要存储数据库中数据库对象信息 表信息 列信息 权限信息  数据字典 Mysql库.存储了mysql的权限信

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

应用场景: Linux服务器A运行MySQL服务,并开启了log-bin(log-bin = mysql-bin)和指定了server-id(server-id = 1); Linux服务器B也以与服务器A同样的方式(不同样也可以,参考下面的"注意")安装了MySQL服务,可开启log-bin也可不开启log-bin,如果开启了log-bin则需要注意MySQL function的限制问题(可通过set global log_bin_trust_function_creators=TR

Mysql 数据库基础 学习笔记

数据库基础 数据库是存储数据的仓库,实现数据共享,减少数据冗余,采用特定的数据类型,具有较高的数据独立性,具有数据控制功能. 表 ,是一个二维数组,用来存储数据和操作数据的逻辑结构. 数据类型,整数数据类型,浮点数数据类型,精确小数类型,二进制数据类型,日期/时间数据类型,字符串数据类型. 主键 用于唯一标示表中的每条记录.可以定义一列或多了主键.主键不能相同. 数据库技术构成   硬件,软件共同构成 数据库系统,数据库,数据库管理系统(DBMS),数据库应用程序. SQL 语言  结构化查询语

mysql互为主从复制配置笔记--未读,稍后学习

MySQL-master1:192.168.72.128 MySQL-master2:192.168.72.129 OS版本:CentOS 5.4MySQL版本:5.5.9(主从复制的master和slave服务器中的mysql版本相同或者master版本高于slave版本) 一.MySQL master-master配置 1.修改MySQL配置文件 两台MySQL均如要开启binlog日志功能,开启方法:在MySQL-master1  配置文件/etc/my.cnf  [MySQLd]段中加上