使用如下命令,修改服务器名称:
vi /etc/hostname
将内容修改为“mysql-36" 。
使用如下命令,修改数据库配置:
vi /etc/my.cnf
在[mysqld]下面增加以下配置项: .
[mysq1d]
server_ id=36
binlog- ignore-db=mysq1
log-bin=demo-mysql-bin
保存配置,重启数据库服务器。然后,用root用户登录数据库,使用如下所示的同步配置:
mysql>change master to master_ host=‘10.10.10.35’,master user=‘user36’,
master password=’ user123456’, master_ port=3306,
master log file=‘demo-mysql-bin. 000001’, master_ log_ _pos=123,
master_ connect_ retry=30;
其中,通过master_ log_ file 设置了主机的日志文件,通过master_ log. pos 设置了主机的日志存储位置偏移量。这两个参数必须根据当前主机的状态进行配置。
使用如下命令启动从机,即可开始进行数据同步:
mysql>start slave;
使用如下命令查看从机的同步状态:
mysql>show slave status\G;
结果如下所示:
- row
Slave_ IO_ State: Waiting for master to send event
Master_ Host: 10.10.10.35
Master User: user36
Master Port: 3306
Connect Retry: 30
Master_ Log_ File: demo-mysql -bin.000001
Read Master_ Log_ Pos: 123
Relay_ Log_ File: demo-mysq1 - relay-bin.000002
Relay_ Log_ Pos: 287
Relay Master_ Log_ File: demo-mysql-bin. 000001
Slave IO Running: Yes
Slave_ SQL Running: Yes
在上面的结果中,如果Slave_ IO_ Running和Slave_ SQL_ _Running 都显示为“Yes" ,则表示同步成功。
服务器“10.10.10.37”的从机设置可以参照上面的方法实现。
主主同步设置
======
将两个集群分组的主机互相进行主从同步设置,就可以实现主主同步。
参照13.2节的方法,在集群分组2中实现主从同步设置。
其中,集群分组2的主机“10.10.10.25”的数据库配置与集群分组1的数据库配置相似,只是主键的配置为了避免冲突略有不同,即使用双数作为主键,代码如下所示:
[mysqld]
server id=25
binlog- ignore-db=mysql
log-bin=demo-mysql -bin
binlog_ cache_ size=1M
binlog_ format=mixed
expire_ logs_ days=7
slave_ skip errors=1032
relay_ log=demo-mysql-relay-bin
1og slave_ updates=1
auto increment increment=2
#自增偏移(从2开始),双数
auto increment offset=2
当集群分组2的主从设置完成之后,即可对两个分组的主机实现主主同步设置。首先实现集群分组1的主机“10.10.10.35”与集群分组2的主机“10.10.10.25”的主从设置。
1.集群分组1的主机配置
在“10.10.10.35”主机上创建同步用户并授权:
mysql> grant replication slave, replication client on . to
‘user25’@‘10. 10.10.25’ identified by ‘user123456’;
更新权限:
mysql> flush privileges;
查看主机状态:
mysql> show master status;
记下查看结果中的日志文件名称和存储位置偏移量。
2.集群分组2的从机配置
使用如下所示的同步配置:
mysql>change master to master_ host=’ 10.10.10.35 ,master user=‘user25’,
master_ password= ’ user123456’,master_ port=3306,
master log_ file=’ demo-mysql-bin.000001’, master_ 1og_ pos=123,
master_ connect_ retry=30;
其中,日志文件名称和存储位置偏移量按上面主机查询的结果填写。
启动从机并进行同步:
mysql>start slave;
查看同步状态:
mysql>show slave status\G;
如果查询结果中包含如下所示的两行信息则表示同步设置成功:
Slave_ I0 Running: Yes
Slave_ SQL Running: Yes
上面配置完成之后,再反过来以“10.10.10.25”为主机,以“10.10.10.35”为从机,进行主从同步设置。具体可参照上面的方法实现。互为主从设置完成之后,就实现了主主同步设置。
为了对上面的同步设置进行验证,可以在各个主机上创建数据库,再执行一些插入或删除数据的操作,然后在各个从机中查看结果。如果各种操作都能同步,则说明主主同步和主从同步均设置成功。
如果出现同步失败的情况,则可以先停止失败的从机,视情况更改日志文件名称和偏移量,然后再启动从机继续进行同步。
停止从机可以使用如下命令:
mysql>stop slave;
需要说明的是,在生产环境中,推荐使用UUID作为数据库的主键,这样可避免主键冲突的情况发生,而且也便于在集群中创建更多的分组。
数据库代理中间件选择
===========
在实现了数据库集群之后,就已经解决了数据库的单机服务器的性能瓶颈问题,并且也建立了高可用的分布式架构,对于应用程序和数据库客户端,应该如何使用数据库才能更好地使用这种高可用、高性能的分布式集群系统呢?这就要借助于数据库代理中间件来实现了。
MySQL的数据库代理中间件有很多,而且大多数是开源的,如MyCat、Proxy、 Amoeba、OneProxy等,其中比较优秀的是MyCat和OneProxy。
MyCat在大流量访问中有极佳的性能表现,它是用Java 语言开发的,配置文件使用XML的形式,稍显复杂,特别是它的分区表的配置有点累赘。另外,一些用户对它的稳定性也颇有微词,所以这里推荐使用OneProxy。
OneProxy是一款基 于MySQL官方的Proxy中间件的设计思想开发的,运行稳定性好,配置也较为简单,分区表的概念与MySQL分区表的设置在根本.上是一致的。 虽然是一个收费的商业软件,但也提供了免费的社区版可供使用。
使用OneProxy实现读写分离设计
==================
OneProxy可以非常方便地使用MySQL的集群体系架构,既可以按数据库的集群分组实现高可用设计,也可以按主从同步实现读写分离设计。使用两个集群分组的OneProxy调用设置的网络结构如图13-2所示。
安装OneProxy
下面以安装“6.0.0”的版本为例进行说明,我们将OneProxy安装在IP地址为“10.10.10.24”的机器上。
下载安装包后,解压缩:
tar xf oneproxy-rhel5-linux64-v6.0.0-ga. tar.gz
将程序文件移到/usr/local/目录中:
mv oneproxy /usr/ local/oneproxy
切换到oneproxy目录:
cd /usr/ local/oneproxy
创建启动程序:
CP oneproxy .service /etc/ init.d/oneproxy
修改启动程序配置:
vi /etc/ init.d/oneproxy
将其中的工作目录修改成如下所示:
ONEPROXY_ HOME=/usr/loca1/ oneproxy
保存修改后,设置启动程序的执行权限:
chmod a+x /etc/init. d/oneproxy
使用如下命令启动OneProxy:
service oneproxy start
使用如下命令设置开机启动OneProxy:
chkconfig --add oneproxy
chkconfig oneproxy on
高可用读写分离配置
在使用OneProxy时,必须为每个数据库都创建–个具有完全权限的独立用户。在创建用户时,必须在数据库集群的主机中进行。
例如,对于订单服务数据库“orderdb”,可以使用如下命令创建用户并授权:
mysql> grant all privileges on orderdb.* to ‘orderuser’@‘8’ identified by
‘12345678’ with grant option;
即创建一个具 有完全权限的用户,其用户名为orderuser,密码为12345678, 并设置在任何地方都可以访问,这里指在安全的局域网中。
需要注意的是,上面授权的用户 将保存在数据库mysql的user表中,虽然我们已经在主从设置中忽略了数据库mysql的同步,但是在创建用户时,并没有使用use 指令切换过数据库,所以上面创建的用户还会在各个从机上进行同步。如果要禁止这种同步,则可以在主从设置中对主机的数据库配置增加一个忽略对user表进行同步的配置。这样操作之后,给数据库授权的命令就必须在每个服务器上都执行一遍。
在OneProxy服务器中,假设还在目录“ust/local/oneproxy”中,使用如下命令为密码生成加密字符串:
. /bin/mysqlpwd 12345678
执行后将生成如下所示的已经加密的密码字符串:
40739ED24B5DC118DC16397AB1 4E64C680637C0D
使用如下命令编辑OneProxy配置:
vi . / conf/porxy .conf
如下所示是使用两个集群分组的读写分离配置:
[oneproxy]
keepalive
event-threads = 4
log-file = 1og/oneproxy.1og
pid-file = log/oneproxy.pid
lck-file = log/oneproxy.lck
mysql-version = 5.7.19
proxy-address = :3306
proxy-master-addresses.1 = 10. 10.10.35: 3306@group1
proxy-master-addresses.2 = 10.10. 10.25:3306@group2
proxy-slave-addresses.1 = 10.10.10. 36: 3306@group1
proxy-slave-addresses.2 = 10.10.10.37:3306@group1
proxy-slave-addresses.3 = 10.10.10.26:3306@group2
proxy-slave-addresses.4 = 10.10. 10.27:3306@group2
proxy-user-list.1 =
orderuser/40739ED24B5DC118DC1 6397AB14E64C680637C0D@orderdb
proxy-user-list.2 =
merchantuser/ 40739ED24B5DC118DC16397AB14E64C680637C0D@merchantdb
proxy-part-tables.1 = /usr/ local/oneproxy/conf/part1. txt
proxy-charset = utf8_ bin
proxy-group-policy.1 = groupl:read balance
proxy-group-policy.2 = group2: read balance
proxy-group-security.1 = group1:0
proxy-group-security.2 = group2:0
proxy-security-level = 0
proxy-sequence.1 = default
#监控端口
proxy-httpserver = :8080
#自动剔除节点
proxy-repl ication-check=1
proxy-httptitle = OneProxy Monitor
其中,只配置了订单服务的数据库“orderdb” 的访问用户orderuser, 和商家服务的数据库‘merchantdb" 的访问用户merchantuser, 其他数据库中的访问用户可以参照上面的方法增加进来。
在保存配置后,必须使用如下命令设定配置文件的读取权限:
chmod 660 conf/proxy. conf
然后,重启OneProxy,让前面的配置生效。
前面各项配置参数的含义如表13-3所示。
OneProxy还有一个管理后台,在OneProxy启动之后,可以通过MySQL客户端进行登录。管理后台的默认端口是4041,用户名为admin,密码为OneProxy。
例如,可以在安装了MySQL的机器上使用如下命令登录:
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)
![img](https://img-blog.csdnimg.cn/img_convert/6adce9a9752d64b1fa1f34cd92dd93b9.jpeg)
最后
即使是面试跳槽,那也是一个学习的过程。只有全面的复习,才能让我们更好的充实自己,武装自己,为自己的面试之路不再坎坷!今天就给大家分享一个Github上全面的Java面试题大全,就是这份面试大全助我拿下大厂Offer,月薪提至30K!
我也是第一时间分享出来给大家,希望可以帮助大家都能去往自己心仪的大厂!为金三银四做准备!
一共有20个知识点专题,分别是:
Dubbo面试专题
JVM面试专题
Java并发面试专题
Kafka面试专题
MongDB面试专题
MyBatis面试专题
MySQL面试专题
Netty面试专题
RabbitMQ面试专题
Redis面试专题
Spring Cloud面试专题
SpringBoot面试专题
zookeeper面试专题
常见面试算法题汇总专题
计算机网络基础专题
设计模式专题
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
QL面试专题**
[外链图片转存中…(img-2DHTIyjL-1713682895142)]
Netty面试专题
[外链图片转存中…(img-0cuDQSnN-1713682895143)]
RabbitMQ面试专题
[外链图片转存中…(img-vODbN3YD-1713682895143)]
Redis面试专题
[外链图片转存中…(img-axtUDoVo-1713682895143)]
Spring Cloud面试专题
[外链图片转存中…(img-Cs3BDXmg-1713682895144)]
SpringBoot面试专题
[外链图片转存中…(img-gQBcLcZh-1713682895144)]
zookeeper面试专题
[外链图片转存中…(img-VFHc22AW-1713682895144)]
常见面试算法题汇总专题
[外链图片转存中…(img-KOpwWHf6-1713682895144)]
计算机网络基础专题
[外链图片转存中…(img-Ubh0GCPk-1713682895144)]
设计模式专题
[外链图片转存中…(img-oODd8Qyw-1713682895144)]
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!