17.1 MySQL主从介绍
17.2 准备工做
17.3 配置主
17.4 配置从
17.5 测试主从同步
17.6扩展
17.7课堂笔记
17.1 MySQL主从介绍
MySQL主从又叫作Replication、AB复制。简单讲就是A和B两台机器作主从后,在A上写数据,另一台B也会跟着写数据,二者数据实时同步的
MySQL主从是基于binlog的,主上须开启binlog才能进行主从。
主从过程大体有3个步骤
主从共有3个线程:
主从原理图
当有写入操做时,会记录到Master的binlog里面,主上(Master)的log dump 线程会和从上(Slave)的I/O线程相互通讯;从上将binlog信息读到Slave,生成一个Relaylog中继日志;从上的SQL线程将Relaylog里面的sql语句执行
主从应用场景:
一、作数据备份;主机器宕机,能够启动从机器,给web、客户端提供服务。
二、不只作数据备份,还要做为读库,让web、客户端从从机器读取数据,减缓主机器读取压力
17.2 准备工做
准备两台机器,都要有mysql服务
###注意,进行主从配置同步操做时必定要保持两边数据一致
17.3 配置主
1、安装mysql
2、修改my.cnf,增长server-id=150和log_bin=xin1
vim /etc/my.cnf
server-id=150
log_bin=xin2
3、修改完配置文件后,启动或者重启mysqld服务
/etc/init.d/mysqld restart
4、把mysql库备份并恢复成xin库,
做为测试数据
mysqldump -uroot -p123456 mysql > /tmp/mysql.sql
mysql -uroot -p123456 -e "create database xin"
mysql -uroot -p123456 xin < /tmp/mysql.sql
5、建立用做同步数据的用户
grant replication slave on *.* to 'repl'@slave_ip identified by 'password';
#slave_ip为从机器的ip
grant replication slave on *.* to 'repl'@192.168.233.129 identified by '123456';
flush tables with read lock;
#锁表,防止表继续写入
show master status;
#查看binlog的位置和数值,须要记住,待会要用到
17.4 配置从
1、安装mysql
2、编辑my.cnf,配置server-id=129,(要求和主上不同,且从上没有binlog日志)
vim /etc/my.cnf
server-id=129
3、修改完配置文件后,启动或者重启mysqld服务
/etc/init.d/mysqld restart
4、把主上xin库同步到从上
scp 192.168.233.150:/tmp/*.sql /tmp/
[root@xinlinux-01 ~]#
scp 192.168.233.150:/tmp/*.sql /tmp/
root@192.168.233.150's password:
xin.sql 100% 649KB 8.6MB/s 00:00
zrlog.sql 100% 9863 1.9MB/s 00:00
5、能够先建立xin库,而后把主上的/tmp/mysql.sql拷贝到从上,而后导入xin库
mysql -uroot
create database xin;
create database zrlog;
mysql -uroot xin < /tmp/xin.sql
mysql -uroot zrlog < /tmp/zrlog.sql
6、实现主从同步
mysql -uroot
stop slave;
change master to master_host='', master_user='repl', master_password='', master_log_file='', master_log_pos=xx;
#master_host为主机器ip,msaster_pasword为主机器密码,master_log_file为binlog日志名称,master_log_pos为binlog日志数值
change master to
master_host='192.168.233.150',master_user='repl',master_password='123456',master_log_file='xin2.000002',master_log_pos=665019;
start slave;
#断定主从是否配置成功
show slave status\G
查看主从同步是否正常
一、
查看Slave_IO_Running和Slave_SQL_Running是否为yes
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
二、关注是否有error信息
Seconds_Behind_Master: 0 #为主从延迟的时间
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
7、还要到主上执行
unlock tables; #解锁表
17.5 测试主从同步
my.cnf配置文件的几个配置参数(主从机器均可配置)
主服务器上
binlog-do-db= #仅同步指定的库
binlog-ignore-db= #忽略指定库
从服务器上
replicate_do_db= #同步指定库
replicate_ignore_db= #忽略指定库
replicate_do_table= #同步指定表
replicate_ignore_table= #忽略指定表
replicate_wild_do_table= #如aming.%, 支持通配符%,同步指定库
(经常使用)
replicate_wild_ignore_table= #忽略指定库,可用通配符%
(经常使用)
测试主从
主上操做
mysql -uroot -p123456;
use xin;
show tables;
select count(*) db;
mysql>
select count(*) db;
+----+
| db |
+----+
| 1 |
+----+
1 row in set (0.06 sec)
从上操做
mysql -uroot
use xin;
select count(*) db;
mysql>
select count(*) db;
+----+
| db |
+----+
| 1 |
+----+
对比可知主从的数据彻底同样,限制开始对主机器的数据进行操做,查看从机器是否同步操做的数据
主上操做清空db表数据
truncate table db;
select * from db;
mysql>
select * from db;
Empty set (0.00 sec)
从上操做
select * from db;
mysql>
select * from db;
Empty set (0.00 sec)
#发现从机器的db表数据清空了
主上继续操做
drop table db;
从上查看wp_users表
select count(*) db;
若是不当心对从机器进行的误删等操做致使主从机器不一致:
一、能够先stop slave,再start slave;查看slave show slave status 两个yes是否在;
二、若是仍是不行,就须要在从机器从新配置主从同步
(前提是要保持数据一致)
stop slave;
change master to master_host='', master_user='repl', msaster_pasword='', master_log_file='', master_log_pos=xx;
start slave;
17.6扩展
#若是遇到主从不能正常同步,提示uuid相同的错误。这是由于克隆机器致使。
不停库不锁表在线主从配置
主从不一样步
主主
mysql-proxy 实现读写分离
mysql-proxy相似的产品有:
mycat实现分库分表
mysql环形主从
MHA架构
17.7课堂笔记
1、NFS
案例:nfs服务端链接了不少的nfs客户端,修改了nfs服务端的配置直接重启rpcbind服务途中致使一个php网站的nfs客户端访问不了nfs服务端,用户访问网页一直加载不了网页在等待,nfs客户端出现大量php进程请求,致使磁盘占用高
解决方法:在重启rpcbind服务前,将客户端挂载的nfs先卸载掉;这样即便用户访问不了界面也不须要等待,会返回404错误,客户端的磁盘占用也不会高
2、FTP
#安装purl-ftpd前须要安装epel扩展源
3、Tomcat
基础概念:
JAVAEE Java Plateform Enterprise Edition 企业版本 用来作网站的
JAVAEE Java Plateform Standard Edition 标准版本 用来作电脑运行的软件的
JAVAEE Java Plateform Micro Edition 微型版本 作手机软件的
JDK Java Development kit java的开发环境 JDK=java开发工具+JRE
JRE Java Runtime Environment java程序的运行环境,包含java运行所须要的类库和LVM
LVM java虚拟机
server 和jsp
编写java web网站的
在html代码中内嵌java代码就是jsp,而servlet是纯jsp代码写的
jsp主要用来展示页面效果,而servlet主要负责逻辑控制
用户第一次运行jsp时,会自动转换为servlet代码,因此说jsp本质上是一种servlet
第一次访问servlet时,会将其编译为类文件,后续能够直接访问类文件。
要想使用servlet必须把它放在特定的位置,并且西药对其配置,jsp放到哪里均可以(webapps下),不须要配置。
tomcat、JDK、java web应用三者关系
tomcat是容许并java web应用的一个中间件,好比要运行一个java的网站,须要安装tomcat,就像运行PHP网站须要安装php。简单说,jsp程序须要解析须要tomcat。
而tomcat是用java开发的一款软件,要想让tomcat运行起来,须要一个运行环境,JDK就是给tomcat提供这个运行环境的。
4、tomcat 8005端口启动慢解决方法
编辑$JAVA_HOME/jre/lib/security/java.security,将"securerandom.soure=file:/dev/random"的/dev/random改成"/dev/urandom"
$JAVA_HOME的位置:
若是是openjdk(yum安装的),在/usr/lib/jvm/
若是是下载的二进制包,就在jdk主目录(如:/usr/local/jdk_1.8)
5、普通用户启动tomcat
#1024之内的端口都必须用root用户才能启动,通普通用户身份启动不了
一、建立普通用户
useradd tomcat
二、修改tomcat目录属主
chown -R tomcat /usr/local/tomcat
三、启动tomcat
- su -c "/usr/local/tomcat/bin/startup.sh" tomcat
- 或者先登陆普通用户,而后运行启动命令
四、关闭tomcat
su -c "/usr/local/tomcat/bin/shutdown.sh" tomcat
#注意:用普通用户启动tomcat,监听端口不能使80,由于80必须以root身份监听
6、tomcat目录介绍
- bin:主要存放脚本文件,例如经常使用的windows和linux系统中刚启动和关闭脚本
- conf:主要存放配置文件,其中个最重要的两个配置文件是server.xml和web.xml
- lib:主要存放tomcat运行所依赖的包
- LICENSE:版权许可证,软件版权信息及适用方位等信息
- logs:主要村翁运行时产生的日志文件,例如catalina.out、catalina.(date).log等
- NOTICE:通知信息,一些软件的所属信息和地址等
- RELEASE-NOTES:发布说明,包含一些版本升级功能点
- RUNNING.txt:运行说明,必需的运行环境等信息
- temp:存放tomcat运行时产生的临时文件,例如开启了缓存的应用城西,会在该目录下生成一些文件
- webapps:部署web应用程序的默认目录,也就是war包所在默认目录
- work:主要存放有jsp文件生成的servlet(java文件以及最终编译生成的class文件)
7、tomcat配置文件
8、重定向web应用程序目录
#在一台服务器上tomcat跑多个端口
一、建立实例目录
mkdir -p /data/tomcat-instance
mkdir /data/tomcat-instance/www.123.com
cd !$
cp -r /usr/local/tomcat/conf /data/tomcat-instance/www.123.com
二、建立tomcat服务相关目录
mkdir -p /data/tomcat-instance/www.123.com/{common,logs,temp,server,shared,webapps,work}
三、建立启动和关闭脚本
四、配置编辑文件
vim /data/tomcat-instance/www.123.com/conf/server.xml
#修改三个端口,目的是为了避免和其余实例冲突
课堂笔记
1、NFS
案例:nfs服务端链接了不少的nfs客户端,修改了nfs服务端的配置直接重启rpcbind服务途中致使一个php网站的nfs客户端访问不了nfs服务端,用户访问网页一直加载不了网页在等待,nfs客户端出现大量php进程请求,致使磁盘占用高
解决方法:在重启rpcbind服务前,将客户端挂载的nfs先卸载掉;这样即便用户访问不了界面也不须要等待,会返回404错误,客户端的磁盘占用也不会高
2、FTP
#安装purl-ftpd前须要安装epel扩展源
3、Tomcat
基础概念:
JAVAEE Java Plateform Enterprise Edition 企业版本 用来作网站的
JAVAEE Java Plateform Standard Edition 标准版本 用来作电脑运行的软件的
JAVAEE Java Plateform Micro Edition 微型版本 作手机软件的
JDK Java Development kit java的开发环境 JDK=java开发工具+JRE
JRE Java Runtime Environment java程序的运行环境,包含java运行所须要的类库和LVM
LVM java虚拟机
server 和jsp
编写java web网站的
在html代码中内嵌java代码就是jsp,而servlet是纯jsp代码写的
jsp主要用来展示页面效果,而servlet主要负责逻辑控制
用户第一次运行jsp时,会自动转换为servlet代码,因此说jsp本质上是一种servlet
第一次访问servlet时,会将其编译为类文件,后续能够直接访问类文件。
要想使用servlet必须把它放在特定的位置,并且西药对其配置,jsp放到哪里均可以(webapps下),不须要配置。
tomcat、JDK、java web应用三者关系
tomcat是容许并java web应用的一个中间件,好比要运行一个java的网站,须要安装tomcat,就像运行PHP网站须要安装php。简单说,jsp程序须要解析须要tomcat。
而tomcat是用java开发的一款软件,要想让tomcat运行起来,须要一个运行环境,JDK就是给tomcat提供这个运行环境的。
4、tomcat 8005端口启动慢解决方法