使用RDS for MySQL数据库(本地连接、数据库迁移、JDBC操作)

一、阿里云RDS介绍

什么是阿里云数据库RDS

阿里云关系型数据库(Relational Database Service,简称RDS)是一种稳定可靠、可弹性伸缩的在线数据库服务。基于阿里云分布式文件系统和SSD盘高性能存储,RDS支持MySQL、SQL Server、PostgreSQL、PPAS(Postgre Plus Advanced Server,高度兼容Oracle数据库)和MariaDB TX引擎,并且提供了容灾、备份、恢复、监控、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。

数据库引擎

支持MySQL、SQL Server、PostgreSQL、PPAS、MariaDB五种数据库引擎,下面我们通过MySQL来介绍它。
MySQL是全球最受欢迎的开源数据库,作为开源软件组合LAMP(Linux + Apache + MySQL + Perl/PHP/Python)中的重要一环,广泛应用于各类应用。Web 2.0时代,风靡全网的社区论坛软件系统Discuz!和博客平台WordPress均基于MySQL实现底层架构。Web 3.0时代,阿里巴巴、Facebook、Google等大型互联网公司都采用更为灵活的MySQL构建了成熟的大规模数据库集群。阿里云数据库RDS MySQL基于阿里巴巴的MySQL源码分支,经过双11高并发、大数据量的考验,拥有优良的性能和吞吐量。此外,阿里云数据库MySQL版还拥有经过优化的读写分离、数据库独享代理、智能调优等高级功能。当前RDS MySQL支持5.5、5.6、5.7和8.0版本。

二、RDS for MySQL实战

产品购买及基础配置

1.在阿里云官网创建账户并购买一个RDS实例
在这里插入图片描述
2.配置白名单
白名单相当于是配置外界可以访问该数据库的ip地址,购买后默认是只有127.0.0.1,在这里相当于什么ip都不允许通过,可以根据需求配置自己的ip,也可以直接配置0.0.0.0/0表示所有ip都可以访问,但是这样安全性不高。
在这里插入图片描述
3.创建账户
创建账户类似于本地数据库账户,之后可以通过用户来访问你的数据库,可以创建高权限账户,也可以创建普通用户,高权限用户默认可以使用任何权限,普通用户你可以为它配置需要的读写权限。
在这里插入图片描述

本地远程连接并操作RDS

1.RDS数据库的创建
进入RDS实例的控制台,找到数据库管理,点击创建数据库,也可以在创建时候为数据库配置用户。
在这里插入图片描述
2.使用本地数据库工具远程连接
我这里使用的是Navicat工具,主机名填写你在阿里云RDS实例的ip地址,用户名和密码填写你在RDS里创建的账户。
在这里插入图片描述
3.数据库CRUD操作
a.创建表
在这里插入图片描述
b.新增操作
在这里插入图片描述
c.修改操作
在这里插入图片描述
d.删除操作
在这里插入图片描述

本地数据库向RDS迁移

1.在本地创建一个一个用于数据迁移/同步的账号
在这里插入图片描述
2.对刚刚创建的迁移账户进行授权,例如授予账户具备具备所有数据库和表的所有权限,并允许从任意主机登录数据库
在这里插入图片描述
3.确认源库的binlog是否开启,如果没有开启,则通过配置文件修改
如下图则是未开启(状态为OFF)
在这里插入图片描述
如果是windows则在本地MySQL文件中找my.ini配置文件,开放log-bin注释配置为mysql_bin,顺便将server-id配置为大于1的数字
在这里插入图片描述
之后重新启动MySQL的服务,再次查询binlog的状态
在这里插入图片描述
4.查询源库的binlog格式是否为ROW模式,如果不是ROW模式,可以使用命令行设置,也可以通过修改ini文件的方式
在这里插入图片描述
5.如果版本大于5.6.2 时,需要确认源库的 binlog_row_image=full
在这里插入图片描述
6.将数据库迁移至RDS
进入阿里云数据迁移界面,上面填写自己数据库ip地址及刚刚创建的账户和密码,下面填写RDS的信息即可。
在这里插入图片描述
选择一个迁移对象,进行迁移
在这里插入图片描述
出现如下图则迁移成功
在这里插入图片描述
检查自己阿里云RDS中的数据可以看到刚刚迁移的来数据库,到这里数据库迁移工作就全部完成
在这里插入图片描述

Java通过JDBC远程操作RDS数据库

在网上下载mysql-connector-java的jar包,放在项目的libs目录下。
代码如下(需要根据自己数据库的表结构更改相应代码):

package com.one;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

public class TestDemo {
    private static final String dbdriver = "com.mysql.cj.jdbc.Driver";
    private static final String dburl = "jdbc:mysql://这里填你的RDS外网地址:3306/dbtest?" +
            "&useSSL=false&serverTimezone=UTC";
    private static final String user = "你的用户名";
    private static final String password = "你的密码";

    public static void main(String[] args) throws Exception{
        Class.forName(dbdriver);

        Connection conn = DriverManager.getConnection(dburl,user,password);

        Statement stat = conn.createStatement();

        //数据库增加数据操作
//        String sql = "INSERT INTO user(user_id,user_name,user_age,user_sex) VALUES"
//                + "(4,'啦啦啦','25','女')";
//        int len = stat.executeUpdate(sql);
//
//        System.out.println("影响数据行:" + len);


        //数据库修改数据操作
//        String sql1 = "UPDATE user SET user_age = '20'"
//                + "WHERE user_name = 'hjr'";
//
//        int len = stat.executeUpdate(sql1);
//
//        System.out.println("影响数据行:" + len);

        //对数据库的删除操作
//        String sql = "delete from user where user_name = '啦啦啦'";
//
//        int len = stat.executeUpdate(sql);
//
//        System.out.println("影响数据行:" + len);

        //修改
//        String sql = "update manager set idmanager = 1 where managername = 'pink'";
//        int len = stat.executeUpdate(sql);
//        System.out.println("影响数据行:" + len);

        //增加
//        String sql = "insert into manager values(2,'hjr','181818')";
//        int len = stat.executeUpdate(sql);
//        System.out.println("影响数据行:" + len);

        //查询1
//        String sql = "select * from manager";
//        ResultSet rs = stat.executeQuery(sql);
//
//        while(rs.next()){
//            System.out.println(rs.getString(1) + " "
//            + rs.getString(2) + " " + rs.getString(3));
//        }

        //查询2
        String sql = "select * from user";
        ResultSet rs = stat.executeQuery(sql);
        System.out.println("RDS数据库user表信息如下:");
        while(rs.next()){
            int id = rs.getInt("user_id");
            String name = rs.getString("user_name");
            String age = rs.getString("user_age");
            String sex = rs.getString("user_sex");
            System.out.println(id + " " + name + " " + age + " " + sex);
        }

        stat.close();
        conn.close();
    }
}

参考文档:阿里云官方文档
本篇博客就介绍到这里,如果发现错误或者有任何疑问请及时提出

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

囿于之间

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值