Code前端首页关于Code前端联系我们

简单介绍一下启动配置mysql数据库

terry 2年前 (2023-09-30) 阅读数 41 #Mysql
文章标签 Mysql

本文目录:

  • 1.如何设置mysql数据库配置文件
  • 2、SpringBoot+mysql配置两个数据源
  • 3、SpringBoot项目中实现MySQL读写分离
  • 4. 如何在一个启动应用程序中配置多个数据库

如何配置mysql数据库配置文件

1. mysql_install_db 说明

如果 MySQL 系统库(mysql 系统库)出现故障或者需要添加新的 mysql 实例,则必须重置 mysql 数据库。

需要使用的命令:/usr/local/mysql/bin/mysql_install_db

#/usr/local/mysql/bin/mysql_install_db --help 可以查看帮助如下

Usage:/usr/ local/ mysql/bin/mysql_install_db [选项]

--basedir=path MySQL 安装目录路径。

--cross-bootstrap 供内部使用。在与目标不同的主机上创建 MySQL 系统

表时使用。

--datadir=path MySQL 数据目录路径。

--force 使 mysql_install_db 运行,即使 DNS 没有执行

工作。在这种情况下,通常使用

主机名的表条目允许 IP 地址。

--ldata=path MySQL数据目录路径。

--rpm 供内部使用。此选项由 RPM 文件

在 MySQL 安装过程中使用。

--skip-name-resolve 创建

权限表条目时使用 IP 地址而不是主机名。如果

您的 DNS 无法正常工作,此选项会很有用。

--srcdir=path 供内部使用。

mysql_install_db 查找支持文件的目录,例如

错误消息文件和用于打开帮助表的

文件。

--user=user_name 用于启动 mysqld 的登录用户名。 mysqld 创建的文件

和目录属于该

用户。您必须是 root 才能使用此选项。默认

mysqld 使用您当前的登录名和文件,

创建的目录属于您。

所有其他选项都传递给 mysqld

除了支持上述参数外,还支持 mysqld 参数。

2. 示例:

本文提供了添加新 mysql 实例的示例。比如在3306端口的服务器上安装了mysql服务,需要再启动一个3308端口的mysql服务。

假设mysql安装在/usr/local/mysql路径下,找到比较多的磁盘空间,如/data1,将3308端口mysql数据保存下来 /data1

#mkdir /data1/ mysql_3308

#mkdir /data1/mysql_3308/data: mysql /data1/mysql_3308

将 mysql 配置文件 my.cnf 复制到 /data1 目录 /mysql_3308

#vi /data1/mysql_3308/my.cnf 并将配置文件和关联目录更改为新设置,如下:

[客户端]

字符集服务器 = utf8

端口 = 3308

套接字 = /tmp/mysql_3308.socks]用户 = mysql

端口 = 3308

套接字 = / tmp/mysql_3308.sock

basedir = /usr/local /mysql

datadir = /usr/local /mysql

= /data1/08 / data1/mysql_3308/mysql_error.log

pid 文件= /data1/mysql_3308/mysql.pid

.... ..其他详细信息

确保配置文件正确。

执行以下命令初始化数据库:

#/usr/local/mysql/bin/mysql_install_db --defaults-file=/data1/mysql_3308/my.cnf --datadir=/data1/mysql_3308❝/data 完成然后新建一个初始化3308数据库。如果出现错误,请按照错误提示查看错误日志。一般问题出在配置文件my.cnf上,可以修复。

3。启动一个新的mysql。 #ps aux|grep mysql

如果是3308就说明启动成功了

可以在/etc/rc.local中添加start命令来启动服务器

新添加的mysql是不是没有root密码已设置。可以通过以下命令设置root密码:

#/usr/local/mysql/bin/mysqladmin -S /tmp/mysql_3308.sock -u root 密码 'new-password'

SpringBoot+mysql 配置两个数据来源

?分离

但如果我们仔细观察,我们发现如果我们所有的项目都使用同一个数据库,就会出现以下问题:

为了解决上面提到的两个问题,我们可以准备两台(更多)MySQL,一台主服务器和一台从服务器,并且主数据库中的数据变化(写入、更新、删除操作)必须与从服务器同步。数据库(主从复制)。当用户访问我们的项目时,如果是写操作(插入、更新、删除),则直接控制主库;如果是读取操作(选择),则它们指向子库。这种结构称为读写隔离。

这个读写分离结构中可能存在多个子库。

MySQL主从复制是异步复制过程,底层基于MySQL数据库自带的二进制日志功能。即一个或多个MySQL数据库(slave,即子数据库)从另一个MySQL数据库(即master数据库,即master数据库)复制日志,然后分析日志并应用到自己身上,最终实现子数据库数据库和主数据库。库中的数据保持一致。 MySQL主从复制是MySQL数据库的内置功能,不需要使用第三方工具。

二进制日志(BINLOG)记录了所有的DDL(数据定义语言)和DML(数据操作语言)语句,但不包括数据查询语句。该日志对于灾难期间的数据恢复起着极其重要的作用。 MySQL主从复制就是通过这个binlog来实现的。默认情况下,MySQL 不启用此日志。

在搭建环境之前,我们需要准备两台服务器。如果你有钱,用了两台云服务器,别忘了打开安全组,即防火墙;如果你的生活比狗子好但是还是用虚拟机的话不要分配那么多内存运行蓝屏(别问你怎么知道的)

我就不给你看安装如何了数据库和防火墙在这里工作。我认为许多互联网资源都符合资格。问题,搭建主从数据库时,我在网上看到MySQL版本必须一致。我没有太关注,只是用了之前的MySQL。你可以自己检查一下。

服务器:192.168.150.100(不要试图破解它,这是虚拟机的IP)

重启MySQL有三种方法。最简单的方法无疑是关闭再打开:

登录MySQL后才能执行以下命令,因为这是一条SQL命令,Linux不知道那是什么东西。

此时无需退出MySQL,因为下一条命令仍然是SQL命令。当您运行以下 SQL 时,您将获得我们稍后需要的两个重要参数。

执行此SQL语句后==不要再使用主数据库!不要再运行主库了!不要再运行主库了! ==重要的事情我说三遍,因为使用主库会导致红框中两个属性的值发生变化。如果以后再出现这个 bug,我的两分钱可能就差不多了。

服务器:192.168.150.101(不要试图破解它,这也是虚拟机的IP)

这里请注意,服务器ID不能与主库和其他子库相同库,否则下面的设置将会失败。 。

重启MySQL有3种方法。最简单的方法无疑是关闭再打开:

登录 MySQL 后才能执行以下命令,因为它是 SQL 命令

参数说明:

无需退出 MySQL此时,因为下面的命令仍然是SQL命令。运行以下SQL,可以看到子数据库的状态信息。通过状态信息Slave_IO_running和Slave_SQL_running可以看到主从同步是否完成。如果两个参数均为Yes,则表示配置了主从同步。

原因可能是linux被抄袭了。 MySQL中还有另一个server_uuid,它是相同的,我们也需要更改它。 vim /var/lib/mysql/auto.cnf

这是因为你在指定server_id时不小心指定了相同的id。只要改变它。操作就是上面的配置。

这是狗子在手术时犯的错误……

错误原因是主库删除了用户信息,但子库同步失败,同步停止。下面记录一下我自己的操作(该操作是MySQL插入,并且是子数据库)。

在数据库中工作时,请务必注意您当前所在的数据库。最好在 SQL 语句中添加 USE dbname 前缀。

Sharding-JDBC定位为轻量级Java框架,在Java JDBC层提供附加服务。它使用客户端直接连接数据库,并以jar包的形式提供服务,无需额外的实现和依赖。可以理解为JDBC驱动的增强版,完全兼容JDBC和各种ORM框架。

通过Sharding-JDBC,您可以在程序中轻松实现数据库读写分离。

Sharding-JDBC有以下特点:

接下来我们在项目中使用ShardingJDBC来实现MySQL的读写分离。

将 ShardingJDBC 依赖坐标​​导入到 pom.xml 文件中

在 application.yml 文件中添加数据源配置

现在我们可以在项目中测试配置,在接口和请求接口下面分别调用 update 来判断是否通过查看日志中存储的数据源,它可以按预期工作。

完成! ! !程序按照我们的预期正常运行并且成功。在ShardingJDBC的帮助下,我们在项目中成功实现了数据库读写分离。

在一个启动应用程序中配置多个数据库

例如:设置两个数据库,一个是mysql,一个是sqlserver

1。需要在application.yml文件中配置多个数据源的配置信息

mysql datasource:

spring:

datasource:

driverClassName: com.mysql.jdbc.Driverjdbc.Driver :mysql://192.168.28.230 :3306/****?useUnicode=truecharacterEncoding=UTF-8autoReconnect=true

用户名: ****

密码:****

SQlServer 数据源配置 url:jdbc:sqlserver://ip:1433;databaseName=数据库名称

用户名:****

密码:****

2.编写数据源配置和加载类:

SQLServer DataSource

@Configuration

@MapperScan(basePackages = RdsDataSourceConfig.PACKAGE, sqlSessionFactoryRefSourceDastory)Dastory Configuration {

static final String PACKAGE = "com.jyall .ehr.考勤"; //本项目使用的是Mybat,这个路径就是扫描到的mapper包的结构

@Value("${custom.datasource.ds1.url}") //配置文件中第一步数据库配置信息

private String dbUrl;

@Value("${custom.datasource.ds1.username}")//配置文件中同理

private String dbUser;

@ Value("${ custom.datasource.ds1.password}")//配置文件中的信息同理

private String dbPassword;

@Bean(name = "rdsDatasource")

public DataSource rdsDataSource() {

DataSource 数据源 = new DataSource();

dataSource.setDriverClassName("com.microsoft.sqlserver.jdbc.SQLServerDriver");

dataSource.setUrl(dbUrl);

dataSource.setUsername(dbUser);

dataSource.setPassword(dbPassword);

返回数据源;

}actionara(dbUser) public DataSourceTransactionManager rdsTransactionManager (@Qualifier("rdsDatasource") 数据源 adsDataSource) {

return new DataSourceTransactionManager(rdsDataSource());

}❙sionName(S) public SqlSessionFact ory adsSqlSessionFactory(@Qualifier("rdsDatasource") 数据源 adsDataSource ) 抛出异常 {

final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();

SourceDataretaturF);

n sessionFactory.getObject();

}

}

mysql 数据源

@Configuration

@MapperScan(basePackages = AdsDataSourceConfig.PACKAGE, sqlSessionConfig.PACKAGE, sqlSessionFactory) public class AdsDataSourceConfig {

static Final String PACKAGE = " com.jyall.ehr.mapper"; //扫描的mapper包结构

@Value("${spring.datasource.url}") //配置文件中设置

private String dbUrl;

@Value("${spring.datasource.username}") //配置文件中的配置

private String dbUser;

@Value("${spring.datasource.password} " ) //配置文件中的配置

private String dbPassword;

@Bean(name = "adsDataSource")

@Primary //此注显示的是数据源的默认配置,即Used的默认配置数据源配置

public DataSource adsDataSource() {

DataSource dataSource = new DataSource();

dataSource.setDriverClassName("com.mysql.jdbc.Driver");

dataSource. dbUrl);†

公共 DataSourceTransactionManager adsTransactionManager(@Qualifier("adsDataSource") 数据源 adsDataSource) {

返回新的 DataSourceTransactionManager(adsDataSource);

}"sql"S@AdvertisementName

@Primary

public SqlSessionFactory adsSqlSessionFactory(@ Qualifier("adsDataSource") 数据源 adsDataSource) 抛出异常 {

Final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();

sessionFactory.setDataSource(adsDataSource);

return sessionFactory.getObject();

配置的多个点,

。源已完成。其他配置与数据源相同。

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

热门