mysql主从复制+读写分离 菜鸟入门
MYsql主从复制
1.mysql主从复制原理:
Master将数据变化记录到二进制日志中【binary log】
Slave将master的二进制日志【binary log】拷贝到自己的中继日志【relay log】中。
Slave将中继入日志【relay log】事件在做一次,将数据变化,反应到自身数据库。
简述:mysql主从复制其实就是完全备份,和二进制日志备份还原的过程。二进制日志的还原基本上是实时进行的。注意不是完全实时,而是异步实时,主从直接的执行有延迟。如果master压力过大,则延迟就会很长,
原理详解:一个是i/o线程,负责:读取主服务器的二级制日志文件【binary log】。并将其保存在自己的中继日志中。
-个是sql线程,负责:复制执行中继日志【relay log】。

1.安装mysql服务器:二进制包安装
主master:192.168.1.105
从slave :192.168.1.106
安装:
查看系统配置:uname -a
添加用户:useradd -s /sbin/nologin -M mysql
下载mysql二进制安装包
wget: http://mirrors.sohu.com/mysql/MySQL-5.1/mysql-5.1.73-linux-x86_64-glibc23.tar
解压移动到/usr/local/src
tar -xvzf mysql-5.1.73-linux-x86_64-glibc23.tar
mv mysql-5.1.73-linux-x86_64-glibc23 /usr/local/mysql
创建数据存放位置:mkdir -p /data/mysql
设定权限:chown -R mysql:mysql /data/mysql
初始化:进入/usr/local/mysql下。注意:定义数据存放位置及数据库所属主
# ./scripts/mysql_install_db --user=mysql --datadir=/data/mysql
拷贝mysql配置文件到/etc/下
cp support-files/my-large.cnf /etc/my.cnf
拷贝启动脚本并修改其属性
cp support-files/mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld
添加path路径便于管理:
vim /etc/profile.d/path.sh
export PATH=$PATH:/usr/local/mysql/bin
运行:source /etc/profile.d/path.sh
或者:echo "PATH=/usr/local/mysql/bin:$PATH" >> /etc/profile
service mysqld start
--------------------------------基础安装到此--------------------------------
mysql主从复制配置正式开始:
配置mysql master主:
修改主配置文件:打开log_bin功能,设置服务器id默认企业中此值可以不用修改
默认为1.即可。
server-id = 1 服务器id 每一个服务器id必须唯一。
log-bin=wangyunlong可以自定义,默认为:mysql-bin可以忽略不变。
Binlog二进制日志:主服务变更信息会记录再次文件中:/data/mysql下
退出登录更改root密码:
指定需要同步的库:
binlog-do-db=db1,(指定需要同步的库)
binlog-ignore-db=db1,(指定出除此库外其它全部同步。此时binlog-do-db和binlog-ignore-db二选一)
保存退出。
设置主数据库root密码
mysql>update user set password=password('wangyunlong') where user='root';
mysql>flush privileges;
配置主从测试文件
在住上创建测试数据库db1
mysql -uroot -pwangyunlong1992 -e "create database db1"
导出主的mysql数据库然后倒入给db1数据库。
mysqldump -uroot -p"wangyunlong1992" mysql > 123.sql
mysql -uroot -p"wangyunlong1992" db1 < 123.sql
查看master id
mysql> show variables like 'server_id';
查看binlog是否开启
show variables like 'log_bin';
mysql> show variables like 'log_bin';
+---------------+---------+
| Variable_name | Value |
+---------------+---------+
| log_bin | ON |
+---------------+---------+
1 row in set (0.00 sec)
在master上建立主从复制的账号
在masger上建立复制账号“rep”密码“123456”用于从服务器i/o读取主binlog数据所需的账号密码。
mysql> grant replication slave on *.* to 'rep'@'192.168.1.%' identified by '123456';
检查主库创建的rep复制账号:
mysql> select user,host from mysql.user;
mysql> select user,host from mysql.user;
+------+-------------------+
| user | host |
+------+-------------------+
| root | 127.0.0.1 |
| rep | 192.168.1.% |
| | bogon |
| root | bogon |
| | localhost |
| root | localhost |
+------+------------------+
6 rows in set (0.00 sec)
检查权限
mysql> show grants for rep@'192.168.1.%';
+----------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Grants for rep@192.168.1.% |
+----------------------------------------------------------------------------------------------------------------------------------------------------------------+
| GRANT REPLICATION SLAVE ON *.* TO 'rep'@'192.168.1.%' IDENTIFIED BY PASSWORD '*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9' |
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
对主服务器锁表(考虑备份测试数据完整性。)
mysql> flush tables with read lock;
查看master状态
mysql> show master status;
+--------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+--------------------+----------+--------------+------------------+
| wangyunlong.000004 | 106 | db1 | |
+--------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
wangyunlong.000002->主数据变化就记录再次文件中。Position 为106
Binlog_do_db:只同步的数据有db1 binlog_ignore_db(除此之外的数据库全部同步;
主配置完成。
配置从slave:192.168.1.106
设置从数据密码:wangyunlong
设置从slave id
server-id = 2 服务器id 每一个服务器id必须唯一。
关闭从的binlog功能,关闭只需要注释掉即可。
#log-bin=mysql-bin
#binlog_format=mixed
保存退出。
查看状态:
mysql> show variables like 'log_bin';
ERROR 2006 (HY000): MySQL server has gone away
No connection. Trying to reconnect...
Connection id: 3
Current database: *** NONE ***
+---------------+----------+
| Variable_name | Value |
+---------------+---------+
| log_bin | OFF |
+---------------+----------+
1 row in set (0.00 sec)
备份主的db1并拷贝从并倒入
主备份:mysqldump -uroot -pwangyunlong1992 db1>db1.sql
拷贝:scp db1.sql 192.168.1.106:/tmp/
从创建db1库:mysql -uroot -pwangyunlong -e "create database db1"
导入到从mysql -uroot -pwangyunlong db1 < db1.sql
查看从:
mysql> show databases;
+------------------------+
| Database |
+------------------------+
| information_schema |
| db1 |
| mysql |
| test |
+------------------------+
执行:slave stop
配置从连接主数据库信息
mysql> change master to master_host='192.168.1.105', master_port=3306, master_user='rep', master_password='123456', master_log_file='wangyunlong.000005', master_log_pos=106;
解释:
master_host='192.168.1.105', 主库ip
master_port=3306, 主库端口
master_user='rep', 主库上建立的复制用户名
master_password='123456', 复制用户密码
master_log_file='wangyunlong.000005', 二进制日志文件名称刚才查看状态“show master status”显示的File 信息。
master_log_pos=106;
二进制日志偏移量:查看状态“show master status”显示的Position信息。
从执行slave start;开启从复制开关
开启主:
mysql -uroot -pwangyunlong -e "unlock tables";
查看从是否配置是否成功:
show slave status\G;
显示:如下信息表示成功。
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Seconds_Behind_Master: 0
完整显示:mysql> show slave status\G;
解释:
Slave_IO_Running: Yes 负责从从库到主库第七binLog日志,并写入从库的中继日志中
Slave_SQL_Running: Yes 负责读取从库的中继日志信息并转化为sql语句引用执行到从数据库中。
Seconds_Behind_Master: 0 复制过程中从库到主库延迟的秒数。企业例判断延迟的方法为:在主库写的时间戳,然后从库中读取时间戳,和当前数据时间进行比较,判断是否延迟。
测试主从配置是否成功:
在主master上进入删除主库db1中的event表。
use db1
drop table event;
在从上看没有了
select count(*)from event;
...继续测试...增加删除插入等.......ok即可。
mysql读写分离后续补充
mysql主从复制+读写分离 菜鸟入门的更多相关文章
- mysql主从复制-读写分离
mysql主从复制+读写分离 环境:mysql主:193.168.1.1mysql从:193.168.1.2amoeba代理:193.168.1.3########################## ...
- mysql主从复制-读写分离-原理
Mysql主从复制和读写分离 在实际的生产环境中,如果对mysql数据库的读和写都在一台数据库服务器中操作,无论是在安全性.高可用性,还是高并发等各个方面都是不能满足实际需求的.因此,一般通过主从复制 ...
- MySQL 主从复制&读写分离 简介
1. 读写分离&读写分离 简介 主从同步延迟 分配机制 解决单点故障 总结 2. 主从复制&读写分离 搭建 搭建主从复制(双主) 搭建读写分离 1. 读写分离&读写分离 简介 ...
- Mycat+MySql 主从复制-读写分离 看这一篇就够了
通过mycat和mysql的主从复制配合搭建数据库的读写分离,可以实现mysql的高可用性,下面我们来搭建mysql的读写分离. 1.一主一从 1.在node01上修改/etc/my.cnf的文件 ...
- MYSQL 主从复制,读写分离(8)
Mysql 数据库的主从复制方案,是其自带的功能,并且主从复制并不是复制磁盘上的数据文件,而是通过binlog日志复制到需要同步的服务器上. 一 主从复制的原理实现 原理图解说: 数据库更改 生成数据 ...
- Mycat实现mysql主从复制(读写分离)
数据库性能瓶颈主要原因: 随着用户数的增多,带来的是数据库连接的大幅度增长 随着业务体量的增长,表数据量(空间存储的问题)的大幅增长,其中涉及到索引的优化,mysql默认的索引是硬盘级别的,BTREE ...
- Mysql主从复制读写分离
一.前言:为什么MySQL要做主从复制(读写分离)?通俗来讲,如果对数据库的读和写都在同一个数据库服务器中操作,业务系统性能会降低.为了提升业务系统性能,优化用户体验,可以通过做主从复制(读写分离)来 ...
- MySQL主从复制&读写分离&分库分表
MySQL主从复制 MySQL的主从复制只能保证主机对外提供服务,从机是不提供服务的,只是在后台为主机进行备份数据 首先我们说说主从复制的原理,这个是必须要理解的玩意儿: 理解: MySQL之间的数据 ...
- MySQL主从复制读写分离如何提高从库性能-实战
在做主从读写分离时候,需要注意主从的一些不同参数设置,来提高从库的性能,提高应用读取数据的速度,这样做很有必要的. 做读写分离复制主从参数不同设置如下(需要根据自己应用实际情况来设置): parmet ...
随机推荐
- 一个Java线程小例子(仿火车票售卖)
public class MyThread extends Thread{ private static int ticket=100; public void run(){ for(int i=0; ...
- .NET 操作XML
在C#.net中如何操作XML 需要添加的命名空间: using System.Xml; 定义几个公共对象: XmlDocument xmldoc ; XmlNode xmlnode ; XmlEle ...
- 远程通知中app更新提示。
// // AppDelegate.m // SDJK // // Created by Jobs on 6/13/16. // Copyright (c) 2016 com.FlintInfo.dE ...
- iredmail安装脚本分析(一)---iRedmail.sh
iredmail是一套以postfix为核心的整合邮件系统的安装脚本,可以达到快速部署邮件服务器的目的.为了让自己不遗忘shell的语法,所以闲来无事,学习一下他的代码. 我从官网下载他的最新版,解压 ...
- Android 学习第14课,Android 布局
布局分4种: 1. LinearLayout (线性布局) file:///H:/tool/01/Android/android-sdk-windows/docs/guide/topics/ui/la ...
- MATLAB plot 绘图的一些经验,记下来,facilitate future work
[转载请注明出处]http://www.cnblogs.com/mashiqi 2016/03/28 % 调整figure的位置scrsz = get(0,'ScreenSize'); % 这个命令是 ...
- track by
ng-repeat指令中使用track by子语句解决重复数据遍历的错误 <li ng-repat="x in [2, 2]" ng-bind="x"&g ...
- 项目中Gradle使用总结
一.配置Gradle使用Maven仓库 项目过程中,我们可能会遇到maven的本地库和gradle使用的maven本地库,不是同一个库.现在总结下怎么配置使得maven和gradle都使用相同的mav ...
- 【视频演示】FireBase链接已有应用&实时数据库的配置与使用
全程无编辑,一镜到底,一帧未减,带上犯傻的时间全部不到31分钟:Firebase链接与基础功能使用如此之简单,跟我一起动手,从零开始链接Firebase吧~注意: 输入声源为笔记本自带麦克风,所以风扇 ...
- web安全之ssrf
ssrf(服务器端请求伪造)原理: 攻击者构造形成由服务端发起请求的一个漏洞.把服务端当作跳板来攻击其他服务,SSRF的攻击目标一般是外网无法访问到的内网 当服务端提供了从其他服务器获取数据的功能(如 ...