LAMP架构之5——MySQL集群及主从结构

目录

一、主从数据库

实验环境的设定

二、mysql的组成集群——主服务器的配置

三、mysql的组成集群——从服务器的配置

四、主从数据库基本原理

1、原理结构图

2、从服务器server2中的的数据文件信息

3、主从结构

五、搭建线性“主-从1-从2”

1、搭建“一主两从”结构——新建从服务器节点server3

2、搭建“线性一主一从”结构——从服务器节点server2的配置

3、mysql的数据备份及恢复------->同步过程

4、测试

六、搭建“一主多从”结构

1、引入GTID的概念

2、搭建“一主多从”结构——从服务器节点server2/3的配置(GTID方式)


一、主从数据库

实验环境的设定

再开一个虚拟机server2,并在其中配置好mysql(这里可以使用server1中已经编译好的mysql)

先把server1中mysql的配置文件、执行命令脚本、编译文件原封不动地复制到server2中的相同目录下。

在server2中创建用户,创建mysql的资源目录,并指定所有人和所有组。 

在server2中添加mysql的环境变量,并<source>一下令其生效。

对server2中的mysqld进行初始化操作

mysqld --initialize --user=mysql

 得到初始化密码后,启动mysql,并更改初始化密码。

二、mysql的组成集群——主服务器的配置

1、官网资料

2、设置mysql服务器ID

在</etc/my.cfg>文件中新加两行,第一行表示服务器名称,第二行表示服务器ID号。

 3、重启mysql服务

/etc/init.d/mysqld restart

查看数据库状态,可以正常使用。

4、mysql的所有日志文件

mysql的日志文件都在</data/mysql>目录下的<mysql-bin.000001>文件中。是一个加密的mysql专属二进制文件,可以使用专门的<mysqlbinlog>命令查看。

5、数据库内部操作——授权

第一个框表示设置密码“westos”,“repl”后跟得是域,"%"表示所有域。

第二个框表示授权, “repl”后跟得是域,"%"表示所有域,因此表示任何主机都有权访问。

第三个框的序号表示每次更改的日志编号,会显示最新的。

CREATE USER 'repl'@'%' IDENTIFIED BY 'westos';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';

三、mysql的组成集群——从服务器的配置

1、更改配置文件,设置从服务器的ID为2(其实只要和1不一样就可以)

 2、重启数据库

3、设置数据库的master(要跟随的)主机

CHANGE MASTER TO 
MASTER_HOST='172.25.254.1',                 #要跟随的主机IP
MASTER_USER='repl',                         #要跟随的主机中的数据库的域
MASTER_PASSWORD='westos',                   #要跟随的数据库的密码
MASTER_LOG_FILE='mysql-bin.000001',         #要跟随的数据库的日志文件
MASTER_LOG_POS=595;                         #压迫跟随的数据库的日志ID(从这个ID开始)
start slave;            #启动跟随服务器

 4、查看数据库状态

show slave status\G ;

看到这两行的“yes”就表示从服务器的mysql设置成功了。所列参数。

 (4)测试

在server1主服务器中新建数据表。

更改数据表中的内容: 

在server2中,什么都没动,在server1主服务器中新改动的数据会自动同步到server2从服务器中。

注意:此操作步骤为单向的,即在主服务器server1中更改会自动同步到从服务器server2中,千万不能在server2中更改数据,否则将导致主从不同步。所以一般从服务器中都为“只读”模式。

四、主从数据库基本原理

1、原理结构图

2、从服务器server2中的的数据文件信息

在从服务器server2中,数据目录</data/mysql/>中,其中<server2-relay-bin.index>中表示日志文件<server2-relay-bin.000002>的索引。

 <master.info>中存有master主机的连接信息。

3、主从结构

通用的主从结构有两种,分为“一主多从”和“线性一主一从” 

“线性一主一从”的好处是,A更新完只需要将数据同步到B,不用像“一主多从”结构中将数据同步到B和C,主服务器A的压力会小一些。

“一主多从”的结构比较适合“读多写少”的情形。

五、搭建线性“主-从1-从2”

1、搭建“一主两从”结构——新建从服务器节点server3

数据可以从之前的server1和server2中直接复制过去

在server3中进行如下配置:

启动mysql并更改密码

2、搭建“线性一主一从”结构——从服务器节点server2的配置

在server2的配置文件</etc/my.cnf>中添加以下两行。

第一行是启动二进制日志,以方便节点server3从server2中同步信息;

第二行是启动节点日志回放,就是说server2从server1中取到的数据回放到本机的二进制日志中。

更改完成后,重启server2的mysql服务,可以查看到

查看server2中的日志<mysqlbinlog mysql-bin.000001 -v>,可以看到在server1中刚做的更改已经同步到server2中了。

每次同步时系统只认<mysql-bin.000001>日志文件,而<server2-relay-bin.index>文件中纪录的是从server1中同步的记录索引,所有这些纪录的日志都要同步到<mysql-bin.000001>中。

3、mysql的数据备份及恢复------->同步过程

server1数据备份:

mysqldump -pwestos westos > dump.sql

实际生产环境中,一定要锁表。因为数据过多时,备份需要时间,不锁表的话在备份过程中有新数据写入就会造成备份数据混乱。

server3的数据恢复:

注意:小心这个坑。备份文件中的这句话表示:如果当前数据库中存在“users”表的话,得先删了它。

意思是,为了保持两个数据库的一致,先删除原本的库。

但是,如果实际需求是要做两个数据库的合并,那么备份的数据会直接覆盖之前的数据。对实际生产造成损失。

恢复过程:

先进入server3的数据库中,啥也没有,也没有<westos>表,所以就先创建了一个<westos>表。

恢复命令:

mysql -pwestos westos < dump.sql

server3的同步设置:

先在server2中添加授权,可以看到日志序号为1007,server3要跟随的话,就设置这个序号

CREATE USER 'repl'@'%' IDENTIFIED BY 'westos';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
flush privileges;                #刷新数据库

 然后在server3中设置slave跟随的master服务器信息,这里要做的是“线性一主一从”结构,所以server3要跟随的是server2。设置完成后,还要启动slave!!!然后查看server3中的slave信息,显示已成功。

CHANGE MASTER TO 
MASTER_HOST='172.25.254.2',                 #要跟随的主机IP
MASTER_USER='repl',                         #要跟随的主机中的数据库的域
MASTER_PASSWORD='westos',                   #要跟随的数据库的密码
MASTER_LOG_FILE='mysql-bin.000001',         #要跟随的数据库的日志文件
MASTER_LOG_POS=1007;                         #压迫跟随的数据库的日志ID(从这个ID开始)

4、测试

在server1中更改数据库,在server3中查看。可以看到,更改完成后立即被同步到server3中。

六、搭建“一主多从”结构

1、引入GTID的概念

补充知识点:一主一从的结构中,主服务器会自动寻找从服务器,因此GTID不需要特别配置。而一主多从结构中,主服务器故障时将会寻找距离它最“近”的从服务器,因此GTID需要手动配置。

GTID(Global Transaction Identifiers)——全局传输识别标识

mysql服务器的日志中会自动加入GTID表示下一步该找谁了。

2、搭建“一主多从”结构——从服务器节点server2/3的配置(GTID方式)

查看master的状态:

 查看slave状态:

手动配置GTID:

手动配置GTID时,需要所有主从节点(server1/2/3)中加入以下两行内容;表示声明要使用GTID模式,并且强制启用。

从节点server2和server3中设置mysql

change master to 
master_host='172.25.254.1',
master_user='repl', 
master_password='westos',
master_auto_position=1;                #自动更新数据

server2: 

 server3:

测试:

 在主节点server1中添加数据

在从节点server2中查看状态并查看数据,已经同步过来了(server3同样的道理)。

slave从节点跟随的master主节点信息会自动保存在<master.info>中

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Docker中搭建LAMP架构的私人论坛是可行的。LAMP架构是指Linux、Apache、MySQL和PHP的组合,它们可以一起用于构建动态网站和应用程序。 下面是一种可能的步骤来搭建LAMP架构的私人论坛: 1. 安装Docker:首先,确保你的系统上已经安装了Docker。你可以从Docker官方网站上下载并按照指南进行安装。 2. 创建Docker容器:使用Docker命令或者Docker Compose创建一个包含Apache、MySQL和PHP的容器。你可以使用现有的Docker镜像,也可以编写自己的Dockerfile来构建镜像。 3. 配置Apache服务器:在Apache容器中,你需要配置虚拟机和网站目录。你可以将论坛的代码放在网站目录中,并配置虚拟机以将请求转发到正确的目录。 4. 安装和配置MySQL:在MySQL容器中,你需要安装MySQL数据库,并创建一个新的数据库和用户供论坛使用。确保设置安全的密码,并将数据库凭据保存在安全的地方。 5. 安装和配置PHP:在PHP容器中,你需要安装所需的PHP扩展和依赖项。这些扩展可能包括MySQL扩展、会话管理扩展等。确保PHP配置与论坛的要求相匹配。 6. 部署论坛代码:将论坛的代码复制到Apache容器中的网站目录中。确保代码和文件权限正确设置,并根据论坛的安装指南进行配置。 7. 启动容器:使用Docker命令或者Docker Compose启动容器。确保容器之间的网络连接正确配置,并且容器可以通过指定的端口访问。 8. 测试论坛:通过浏览器访问论坛的URL,确保论坛能够正常运行。如果有任何错误或问题,可以查看容器的日志以获取更多信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值