一、阿里云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();
}
}
参考文档:阿里云官方文档
本篇博客就介绍到这里,如果发现错误或者有任何疑问请及时提出