最后
面试前一定少不了刷题,为了方便大家复习,我分享一波个人整理的面试大全宝典
- Java核心知识整理

Java核心知识
- Spring全家桶(实战系列)

- 其他电子书资料

Step3:刷题
既然是要面试,那么就少不了刷题,实际上春节回家后,哪儿也去不了,我自己是刷了不少面试题的,所以在面试过程中才能够做到心中有数,基本上会清楚面试过程中会问到哪些知识点,高频题又有哪些,所以刷题是面试前期准备过程中非常重要的一点。
以下是我私藏的面试题库:

- 注意:如果 MySQL 重启较慢,可以使用
kill终止掉 MySQL 进程号,再启用。
登陆 MySQL 给从服务器权限
[root@Master ~]# mysql -u root -p123
mysql> grant replication slave on . to ‘myslave’@‘%’ identified by ‘123’;
mysql> flush privileges; # 刷新权限
mysql> show master status; # 查看 Master 状态

3)从服务器配置
两台从服务器操作稍有不同
[root@Slave1 ~]# vim /etc/my.cnf
在 [mysqld] 下添加:
server-id=2 # Slave2 将 2 改为 3 即可
relay-log=relay-log-bin # 将主服务器上同步日志文件记录到本地
relay-log-index=slave-relay-bin.index # 定义 relay-log 的位置和名称
[root@Slave1 ~]# /etc/init.d/mysqld restart # 重启 MySQL 服务
[root@Slave1 ~]# mysql -u root -p123
mysql> change master to
master_host=‘192.168.1.1’,
master_user=‘myslave’,
master_password=‘123’,
master_log_file=‘master-bin.000001’,
master_log_pos=400;
mysql> start slave; # 启用从服务器同步功能
mysql> show slave status\G; # 查看从服务器状态

易错点
当在主 MySQL 开启日志,并在从 MySQL 开启日志后,进行同步时;明明没有报错但还是同步失败
- 原因是从在向主同步时,File 的及 Position 的值给的不对。

解决方案:
- 先关闭 Slave,在重新向主服务器同步一下,将对的值写入即可。

4)验证数据库是否同步
- 在主 MySQL 创建库。
mysql> create database ceshi;
mysql> show databases;

2. 分别在两个从服务器进行查看,同步过来说明主从复制成功。
mysql> show databases;
==============================================================================
为了确保数据库产品的稳定性,很多数据库拥有双机热备功能。也就是,第一台数据库服务器,是对外提供增删改业务的生产服务器;第二台数据库服务器,主要进行读的操作。
在开发工作中,有时候会遇见某个 SQL 语句需要锁表,导致暂时不能使用读的服务,这样就会影响现有业务,使用主从复制,让主库负责写,从库负责读,这样,即使主库出现了锁表的情景,通过读从库也可以保证业务的正常运作。
简单来说,读写分离就是只在主服务器上写,只在从服务器上读。基本的原理是让主数据库处理事务性查询,而从数据库处理 Select 查询。数据库复制被用来把事务性查询导致的变更同步到群集中的从数据库。

目前较为常见的 MySQL 读写分离分为两种:
- 基于程序代码内部实现:
在代码中根据
selectinsert进行路由分类,这类方法也是目前生产环境应用最广泛的。优点是性能较好,因为在程序代码中实现,不需要增加额外的设备作为硬件开支;缺点是需要开发人员来实现,运维人员无从下手。
- 基于中间代理层实现:
代理一般位于客户端和服务器之间,代理服务器接到客户端的请求后通过判断后转发到后端数据库,有两个代表性程序。
-
MySQL-Proxy:MySQL-Proxy 为 MySQL 开源项目,通过其自带的 lua 脚本进行 SQL 判断,虽然是 MySQL 官方产品,但是 MySQL 官方并不建议将 MySQL-Proxy 用到生产环境。
-
Amoeba(变形虫):由陈思儒开发,其曾就职于阿里巴巴。该程序用 Java 语言进行开发,阿里巴巴将其用于生产环境。它不支持事务和存储过程。
1)在 Amoeba 上部署 Java 环境
[root@Amoeba ~]# ls
amoeba-mysql-binary-2.2.0.tar.gz anaconda-ks.cfg jdk-6u14-linux-x64.bin
[root@Amoeba ~]# chmod +x jdk-6u14-linux-x64.bin # 添加可执行权限
[root@Amoeba ~]# ./jdk-6u14-linux-x64.bin
一直按空格. 等显示输入 yes 或 no 时输入-------- yes

[root@Amoeba ~]# mv jdk1.6.0_14/ /usr/local/jdk1.6
[root@Amoeba ~]# cat <> /etc/profile
export JAVA_HOME=/usr/local/jdk1.6
export CLASSPATH= C L A S S P A T H : CLASSPATH: CLASSPATH:JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH= J A V A H O M E / l i b : JAVA_HOME/lib: JAVAHOME/lib:JAVA_HOME/jre/bin/: P A T H : PATH: PATH:HOME/bin
export AMOEBA_HOME=/usr/local/amoeba
export PATH= P A T H : PATH: PATH:AMOEBA_HOME/bin
END
[root@Amoeba ~]# source /etc/profile # 使其生效
[root@Amoeba ~]# java -version # 查看 Java 版本
2)编译安装 Amoeba 软件
[root@Amoeba ~]# mkdir /usr/local/amoeba #为 Amoeba 创建目录
[root@Amoeba ~]# tar zxf amoeba-mysql-binary-2.2.0.tar.gz -C /usr/local/amoeba/
[root@Amoeba ~]# chmod -R 755 /usr/local/amoeba/
[root@Amoeba ~]# /usr/local/amoeba/bin/amoeba
显示:amoeba start | stop 表示正确

3)配置 Amoeba 读写分离,两个 Slave 读负载均衡
- 数据授权给 Amoeba 读写权限,因为刚刚做了主从复制,所以直接在主 MySQL 做就行。
mysql> grant all on . to ‘zhangsan’@‘192.168.1.%’ identified by ‘123.com’;
mysql> show grants for ‘ly’@‘192.168.1.%’;

- 修改 Amoeba 配置文件。
[root@Amoeba ~]# vim /usr/local/amoeba/conf/amoeba.xml


- 编辑
dbServers.xml配置文件。
[root@Amoeba ~]# vim /usr/local/amoeba/conf/dbServers.xml


- 启动 Amoeba 软件,端口为 8066。
[root@Amoeba ~]# /usr/local/amoeba/bin/amoeba start &
[root@Amoeba ~]# netstat -anpt | grep java

4)验证读写分离
- 验证主从复制。
在客户端上操作:
[root@Client ~]# yum -y install mysql # 直接使用 yum 安装 MySQL 就行
[root@Client ~]# mysql -u amoeba -p123456 -h 192.168.1.140 -P8066 # 远程登陆 amoeba 的数据库
MySQL [(none)]> create database zhangsan;
MySQL [(none)]> create table zhangsan.test (id int(10),name varchar(10),address varchar(20));

在从 MySQL 上查看结果:
[root@Slave1 ~]# mysql -u root -p123
mysql> use zhangsan
mysql> show tables;

- 分别关闭 Slave1,2 的复制功能。
最后:学习总结——MyBtis知识脑图(纯手绘xmind文档)
学完之后,若是想验收效果如何,其实最好的方法就是可自己去总结一下。比如我就会在学习完一个东西之后自己去手绘一份xmind文件的知识梳理大纲脑图,这样也可方便后续的复习,且都是自己的理解,相信随便瞟几眼就能迅速过完整个知识,脑补回来。下方即为我手绘的MyBtis知识脑图,由于是xmind文件,不好上传,所以小编将其以图片形式导出来传在此处,细节方面不是特别清晰。但可给感兴趣的朋友提供完整的MyBtis知识脑图原件(包括上方的面试解析xmind文档)

除此之外,前文所提及的Alibaba珍藏版mybatis手写文档以及一本小小的MyBatis源码分析文档——《MyBatis源码分析》等等相关的学习笔记文档,也皆可分享给认可的朋友!
下方即为我手绘的MyBtis知识脑图,由于是xmind文件,不好上传,所以小编将其以图片形式导出来传在此处,细节方面不是特别清晰。但可给感兴趣的朋友提供完整的MyBtis知识脑图原件(包括上方的面试解析xmind文档)
[外链图片转存中…(img-2EHZBRKR-1715366654339)]
除此之外,前文所提及的Alibaba珍藏版mybatis手写文档以及一本小小的MyBatis源码分析文档——《MyBatis源码分析》等等相关的学习笔记文档,也皆可分享给认可的朋友!
792

被折叠的 条评论
为什么被折叠?



