Galera(MySQL集群)的安装

1.准备工作

准备三台主机(当前使用阿里云主机):

master1 10.0.0.8 (内网ip)
master2 10.0.0.9
master3 10.0.0.10

2.生成yum repo文件

[root@master1 ~]# tee /etc/yum.repos.d/galera.repo <<EOF
> [galera]
> name = Galera
> baseurl = https://releases.galeracluster.com/galera-3/centos/7/x86_64
> gpgkey = https://releases.galeracluster.com/GPG-KEY-galeracluster.com
> gpgcheck = 1
> 
> [mysql-wsrep]
> name = MySQL-wsrep
> baseurl = http://releases.galeracluster.com/mysql-wsrep-5.7/centos/7/x86_64
> gpgkey = http://releases.galeracluster.com/mysql-wsrep-5.7/GPG-KEY-galeracluster.com
> gpgcheck = 1
> EOF

2.安装Galera

yum -y install galera-3 mysql-wsrep-5.7

(访问Galera的repo会很慢,也可先下载下来上传到本地进行安装)

3.配置Swap分区

为了避免内存不足导致mysql服务崩溃,Galera建议最好配置Swap分区

(1)创建并初始化Swap分区:

dd if=/dev/zero of=/swapfile bs=1M count=512
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile

(2)执行成功后需要在/etc/fstab文件中声明分区,以确保每次重启都能挂载该分区,打开/etc/fstab文件,在最后添加一行:

/swapfile none swap defaults 0 0

(3)reboot重启,查看Swap分区状况:

swapon --summary

4.配置Galera集群

配置/etc/my.cnf文件

tee /etc/my.cnf <<EOF
!includedir /etc/my.cnf.d/
[mysqld]
max_connections=1000
max_connect_errors=10000
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
binlog_format=ROW
bind-address=0.0.0.0
default_storage_engine=innodb
innodb_autoinc_lock_mode=2
innodb_flush_log_at_trx_commit=0
innodb_buffer_pool_size=122M
character-set-server=utf8
collation-server=utf8_general_ci
character_set_server=utf8
collation_server=utf8_general_ci
wsrep_provider=/usr/lib64/galera-3/libgalera_smm.so
wsrep_provider_options="gcache.size=300M; gcache.page_size=300M"
wsrep_cluster_name="mysql_cluster"
wsrep_cluster_address="gcomm://master1.cluster,master2.cluster,utility1.cluster"
wsrep_node_name="master1.cluster"
wsrep_node_address="10.0.0.8"
wsrep_sst_method=rsync

wsrep相关配置:

(1)wsrep_provider:指定wsrep provider文件的位置, Galera使用这个provider来实现数据的Replication,本例中,其值为/usr/lib64/galera-3/libgalera _smm.so,不同操作系统下这个文件的位置可能不一样,请注意提前确定文件的位置。三个 Master节点上的该项配置相同。

(2)wsrep_provider_options:为wsrep provider指定一些参数,如本例中指定了缓存及缓存页的大小。三个 Master节点上的该项配置相同。

(3)wsrep_cluster_name:为整个cluster取名,所有集群内的节点都配置同样的值,不同名称会导致该节点无法加入集群。本例中,我们取名为 mysql_cluster。三个 Master节点上的该项配置相同。

(4)wsrep_cluster_address:集群的IP地址,由于集群是由多个节点组成的,所以这个地址是由每一个节点的IP地址拼接出来的,中间使用“,”分割,前面加 gcomm://前缀,本例中,其值为 gcomm://master1.cluster,master2.cluster,master3.cluster。三个 Master节点上的该项配置相同。

(5)wsrep_node_name:为当前节点取一个逻辑名称,本例中,我们取名为 master1.cluster与机器同名即可。三个 Master节点上的该项配置是不同的,分别为 master1.cluster,master2.cluster,master3.cluster。

(6)wsrep_node_address:当前节点的IP地址,本例中,其值为10.0.0.8。三个 Master节点上的该项配置是不同的,分别为10.0.0.8、10.0.0.9和10.0.0.10

(7)wsrep_sst_method:用来指明实施State Snapshot Transfer(SST)时使用的方法, State Snapshot Transfer指的是将一个节点的全部数据复制到新加入的节点。本例中,我们使用rsync。三个Master节点上的该项配置相同.

(重复2~4,在另外两台主机上分别安装Galera)

5.启动Galera集群

(1)查看mysqld服务是否已经启动

systemctl status mysqld

注:在启动第一个节点之前需要先检查一下当前节点是否已经启动了mysqld服务,有的安装脚本会将mysqld服务设为自动启动,在安装完成或系统重启mysqld服务就自动启动了,务必要先停止mysqld服务,同时关闭自动启动。因为我们必须在master1上通过 mysqld_bootstrap启动mysqld服务,如果mysqld服务已经启动了, mysqld bootstrap就无法成功运行。

systemctl stop mysqld
systemctl disable mysqld

(2)启动第一个节点

(Galera集群的第一个节点的启动方式和其他节点的启动方式是不同的)

/usr/bin/mysqld_bootstrap

再次查看:

(3)重置密码

查看mysql临时密码:

grep -i password /var/log/messages

重置密码:

mysqladmin -uroot -p password '新密码'

为了便于从本地及其他节点上使用root账号登录数据库,需要添加一个root账号:

drop user if exists 'root'@'%';
create user if not exists 'root'@'%' identified by '密码';
grant all privileges on *.* to 'root'@'%' with grant option;
flush privileges;

(4)重置密码后登录mysql检查集群规模

mysql> show status like 'wsrep_cluster_size'

此时wsrep_cluster_size的值是1

(5)分别启动第二个mysql节点和第三个mysql节点

(常规启动命令启动)

systemctl start mysqld

此时查看mysql集群状态:

wsrep_cluster_size的值是3,说明另外两个节点已成功加入到集群中。

6.重启Galera集群

如果需要重启集群,需要注意启停的顺序,最先启动的节点要最后停止。

systemctl stop mysqld

如果集群非正常停止,可能会造成下次无法启动,需要以安全模式启动。

安全模式启动:

修改/var/lib/mysql/grastate.bat文件,将safe_to_bootstrap:0改为safe_to_bootstrap:1重启mysql集群即可。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在 Spring Boot 中使用 Druid 连接 Galera MySQL 集群可以分为以下几步: 1. 在 pom.xml 中添加 Druid 和 MySQL 驱动的依赖。 2. 在 application.properties 或 application.yml 中配置数据源,并配置连接 Galera 集群所需的属性。 3. 在 application 启动类中添加 @EnableDruidDataSource 注解,以开启 Druid 的自动配置。 4. 在需要使用数据库的地方注入 DataSource 对象并使用。 注意:galera cluster 中的数据库需要在同一个数据库中,并且需要配置 wsrep_urls 属性来连接,可能还需要其他的配置。 ### 回答2: 在Spring Boot中使用Druid连接Galera MySQL集群需要以下步骤: 1. 首先,在你的项目的pom.xml文件中添加Druid和MySQL依赖: ```xml <dependencies> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.1.23</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.25</version> </dependency> </dependencies> ``` 2. 接下来,在application.properties(或application.yml)文件中配置数据库信息: ```properties spring.datasource.url=jdbc:mysql://<galera-cluster-url>:<port>/<database-name>?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true spring.datasource.username=<username> spring.datasource.password=<password> spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver ``` 在上面的配置中,将`<galera-cluster-url>`替换为你的Galera集群URL,`<port>`替换为相应的端口号,`<database-name>`替换为实际的数据库名称,`<username>`和`<password>`替换为连接数据库所需的用户名和密码。 3. 在Spring Boot的启动类上添加`@EnableTransactionManagement`注解以启用事务管理。 4. 最后,在你的代码中使用`@Autowired`注解注入`DataSource`对象,并使用该对象进行数据库操作。例如: ```java @Component public class MyService { @Autowired private DataSource dataSource; public void doSomething() { // 使用dataSource执行数据库操作 } } ``` 以上就是使用Spring Boot和Druid连接Galera MySQL集群的基本步骤。根据你的需求,你可能还需要配置连接池相关的参数,如最大连接数、空闲连接数等。 ### 回答3: Spring Boot是一个用于构建企业级Java应用程序的框架,它提供了很多方便的特性和工具。Druid是一个Java数据库连接池框架,可以提供高性能和可靠的数据库连接。而Galera是一个基于MySQL的多主复制集群解决方案,它可以提供高可用性和可扩展性。 要在Spring Boot中连接Galera MySQL集群,首先需要在pom.xml文件中添加Druid和MySQL的相关依赖。接下来,在Spring Boot的配置文件application.properties或application.yml中配置数据库连接信息,包括连接地址、用户名、密码等。 然后,在Spring Boot的配置类中使用@Configuration注解来定义Druid数据源的Bean,并在该Bean的初始化方法中配置连接池的相关属性,如最小连接数、最大连接数等。在配置数据源时,需要指定Galera集群的多个节点地址,以实现连接的负载均衡和故障转移。 最后,在使用数据库的业务代码中,可以通过@Autowired注解将Druid数据源注入到需要连接数据库的相关类中,并使用JDBC或者ORM框架来执行数据库操作。 需要注意的是,在连接Galera MySQL集群时,还要考虑一些特殊的问题。例如,当节点故障时,可能需要使用Galera提供的自动故障转移功能来重新路由数据库连接。此外,还需要遵循Galera的一些最佳实践,如避免数据库操作过于频繁和复杂,以免对集群性能产生负面影响。 综上所述,通过Spring Boot和Druid的组合,可以很方便地连接Galera MySQL集群,实现高性能、高可用性和可扩展性的企业级应用程序。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值