ศูนย์คู่มือ Ruk-Com PaaS

คู่มือการพัฒนา Deploy และดูแล Application บนแพลตฟอร์ม

RUK-COM PAAS / DATABASES

คู่มือ Java Connection สำหรับ ฐานข้อมูล

คู่มือนี้เรียบเรียงสำหรับ Ruk-Com PaaS หน้าจอและตัวเลือกอาจแตกต่างตามเวอร์ชันและสิทธิ์ของบัญชี

ตรวจสอบ Environment, Region, สิทธิ์บัญชี และสำรองค่าปัจจุบันก่อนดำเนินการกับระบบจริง

คู่มือภาษาไทย

คำสั่ง ชื่อเมนู พารามิเตอร์ และค่าตัวอย่างในกรอบ Code คงรูปแบบตามระบบเพื่อให้คัดลอกและตรวจสอบได้ถูกต้อง

MariaDB,MySQL, และPerconaเป็นฐานข้อมูลโอเพ่นซอร์สที่ได้รับความนิยมอย่างสูงซึ่งนักพัฒนาทั่วโลกใช้ในคำแนะนำนี้เราจะแสดงวิธีเชื่อมต่อแอปพลิเคชัน Java ของคุณกับฐานข้อมูลเซิร์ฟเวอร์แบบสแตนด์อโลนและโซลูชันแบบคลัสเตอร์เหล่านี้

  1. ลงชื่อเข้าใช้บัญชี PaaS ของคุณและสร้าง EnvironmentกับMariaDB(หรือMySQL) เซิร์ฟเวอร์ฐานข้อมูล (มีอยู่ในSQLส่วนตัวช่วยสร้าง):
  • สำหรับเซิร์ฟเวอร์ฐานข้อมูลแบบสแตนด์อโลน

Image 1: new Java environment with standalone database* สำหรับโซลูชันการจัดกลุ่มอัตโนมัติ

Image 2: new Java environment with database auto-cluster

เราได้เพิ่มด้วยTomcatNode เพื่อแสดงตัวอย่างการเชื่อมต่อฐานข้อมูลจากแอปพลิเคชันเซิร์ฟเวอร์

  1. ตรวจสอบกล่องจดหมายอีเมลของคุณ - ควรมีข้อความพร้อมรายละเอียดการดูแลระบบสำหรับเซิร์ฟเวอร์ MariaDB (หรือ MySQL) ที่สร้างขึ้น

ในกรณีของคลัสเตอร์ฐานข้อมูลจุดเริ่มต้นสำหรับการเชื่อมต่อเรียกว่ากตัวจัดสรรภาระงาน ProxySQL.

  1. สลับกลับไปที่แดชบอร์ดแล้วคลิกเปิดในเบราว์เซอร์ปุ่มสำหรับ Node MariaDB/MySQL ของคุณ

Image 3: MariaDB open in browserหากคุณมีโซลูชันแบบคลัสเตอร์ให้กดบนเปิดในเบราว์เซอร์ถัดจาก Node ฐานข้อมูลหลัก (ทำเครื่องหมายเป็นม).

Image 4: MariaDB auto-cluster open in browserเข้าสู่ระบบแผงผู้ดูแลระบบที่เปิดโดยใช้ข้อมูลรับรองจากอีเมลที่กล่าวถึงข้างต้น

  1. ใช้ฐานข้อมูลที่มีอยู่ (เช่นทดสอบ) หรือสร้างอันใหม่

Image 5: MariaDB phpMyAdmin admin panel5. กลับไปที่แดชบอร์ดแล้วคลิกการกำหนดค่าปุ่มถัดจากแอปพลิเคชันเซิร์ฟเวอร์ (Tomcatในกรณีของเรา) เพื่อเข้าถึงตัวจัดการไฟล์การกำหนดค่า.

Image 6: application server config button6. นำทางไปยัง/opt/tomcat/tempโฟลเดอร์ให้สร้างใหม่mydb.cfgไฟล์.

สำหรับการเชื่อมต่อฐานข้อมูลแบบสแตนด์อโลนให้เพิ่มข้อมูลต่อไปนี้ในmydb.cfgไฟล์:

ชวา

host=jdbc:mysql://{host}/{db_name}
username={user}
password={password}
driver=com.mysql.jdbc.Driver

ข้อมูลที่จำเป็นทั้งหมดสามารถพบได้ในอีเมล Node MariaDB/MySQL:

  • {เจ้าภาพ}- เชื่อมโยงไปยัง Node DB ของคุณโดยไม่มีส่วนโปรโตคอล
  • {db_name}- ชื่อของฐานข้อมูล (ทดสอบในกรณีของเรา)
  • {ผู้ใช้}และ{รหัสผ่าน}- ข้อมูลรับรองผู้ดูแลระบบฐานข้อมูล (สำหรับการใช้งานจริงแนะนำให้สร้างบัญชีเฉพาะที่มีสิทธิ์ที่เหมาะสม)

Image 7: MySQL connection detailsสำหรับการเชื่อมต่อกับคลัสเตอร์จะมีการใช้ตัวโหลดบาลานเซอร์ ProxySQL เป็นจุดเริ่มต้นและฐานข้อมูลแต่ละประเภทจะมีตัวเชื่อมต่อของตัวเองดังนั้นให้เพิ่มข้อมูลต่อไปนี้ลงในmydb.cfgไฟล์:

สำหรับ MariaDB:

ชวา

host=jdbc:mariadb://{hostname}/{db_name}?usePipelineAuth=false
username={user}
password={password}
driver=org.mariadb.jdbc.Driver
  • {ชื่อโฮสต์}- ลิงก์ไปยังโหลดบาลานเซอร์คลัสเตอร์ DB ของคุณ (เช่นเลเยอร์ ProxySQL)
  • {db_name}- ชื่อของฐานข้อมูลเราเลือกแล้วทดสอบในขั้นตอนแรก
  • ใช้ PipelineAuth- หากเปิดใช้งานการสืบค้นที่แตกต่างกันจะดำเนินการโดยใช้ไปป์ไลน์ (การสืบค้นทั้งหมดจะถูกส่งจากนั้นจึงอ่านผลลัพธ์ทั้งหมดเท่านั้น) ทำให้สามารถสร้างการเชื่อมต่อได้เร็วขึ้นควรตั้งค่านี้เป็นเท็จเนื่องจากการใช้งานดังกล่าวไม่สามารถใช้ได้กับ ProxySQL ที่อยู่ด้านหน้าคลัสเตอร์
  • {ผู้ใช้}และ{รหัสผ่าน}- ข้อมูลรับรองฐานข้อมูลที่ได้รับในอีเมล

Image 8: MariaDB auto-cluster connection detailsสำหรับ MySQL:

ชวา

host=jdbc:mysql://{host}/{db_name}
username={user}
password={password}
driver=com.mysql.jdbc.Driver
  • {ชื่อโฮสต์}- ลิงก์ไปยังโหลดบาลานเซอร์คลัสเตอร์ DB ของคุณ (เช่นเลเยอร์ ProxySQL)
  • {db_name}- ชื่อของฐานข้อมูล (ทดสอบในกรณีของเรา)
  • {ผู้ใช้}และ{รหัสผ่าน}- ข้อมูลรับรองผู้ดูแลระบบฐานข้อมูล (สำหรับการใช้งานจริงแนะนำให้สร้างบัญชีเฉพาะที่มีสิทธิ์ที่เหมาะสม)

ด้วยวิธีนี้การตั้งค่าการเชื่อมต่อทั้งหมดจะถูกบันทึกไว้ในไฟล์เดียวซึ่งต่อมาจะถูกอ่านโดยแอปพลิเคชัน

  1. สำหรับการ Deploy และการเชื่อมต่อเพิ่มเติมเราจะใช้แอปพลิเคชันตัวอย่างต่อไปนี้:

ชวา

package connection;

import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Properties;
import java.util.logging.Level;
import java.util.logging.Logger;

public class DbManager {

    public String date = new SimpleDateFormat("dd-MM-yyyy-HH-mm").format(new Date());
    private final String createTable = "CREATE TABLE `" + date + "` (id INT, data VARCHAR(100));";
    private static final int LoginTimeout = 10;

    public DbManager() {
    }

    public Connection createConnection() throws IOException, ClassNotFoundException, SQLException {
        Properties prop = new Properties();
        System.out.println("\n\n=======================\nJDBC Connector Test " + date);
        System.out.println("User home directory: " + System.getProperty("user.home"));
        String host;
        String username;
        String password;
        String driver;
        try {
            prop.load(new java.io.FileInputStream(System.getProperty("user.home") + "/mydb.cfg"));

            host = prop.getProperty("host").toString();
            username = prop.getProperty("username").toString();
            password = prop.getProperty("password").toString();
            driver = prop.getProperty("driver").toString();
        } catch (IOException e) {
            System.out.println("Unable to find mydb.cfg in " + System.getProperty("user.home") + "\n Please make sure that configuration file created in this folder.")

            host = "Unknown HOST";
            username = "Unknown USER";
            password = "Unknown PASSWORD";
            driver = "Unknown DRIVER";
        }

        System.out.println("host: " + host + "\nusername: " + username + "\npassword: " + password + "\ndriver: " + driver);

        Class.forName(driver);
        System.out.println("--------------------------");
        System.out.println("DRIVER: " + driver);
        System.out.println("Set Login Timeout: " + LoginTimeout);
        DriverManager.setLoginTimeout(LoginTimeout);
        Connection connection = DriverManager.getConnection(host, username, password);
        System.out.println("CONNECTION: " + connection);

        return connection;
    }

    public String runSqlStatement() {
        String result = "";
        try {
            Statement statement = createConnection().createStatement();
            System.out.println("SQL query: " + createTable);
            statement.execute(createTable);
        } catch (IOException | ClassNotFoundException ex) {
            Logger.getLogger(DbManager.class.getName()).log(Level.SEVERE, null, ex);
            System.out.println("Exception occurred: " + ex);
            result = ex.getMessage();
        } catch (SQLException ex) {
            ex.printStackTrace();
            result = ex.getMessage();
        }
        return result;
    }
}
  1. ปรับใช้แอปพลิเคชันตัวอย่างของเราไปยังเซิร์ฟเวอร์ Tomcat ของคุณโดยใช้ลิงก์ต่อไปนี้:

https://node.example.ruk-com.cloud/public.php?service=files&t=b2c6e4e01d487dfd5af953ba31dac848&download

Image 9: Java deploy from URLImage 10: Java application deployment dialog

หมายเหตุ:

  • แอปพลิเคชันตัวอย่างของเรามีไฟล์ตัวเชื่อมต่อ jdbcสำหรับMariaDB/MySQLการเข้าถึงฐานข้อมูลอย่างไรก็ตามในการเชื่อมต่อโปรเจ็กต์ของคุณเองคุณจะต้องอัปโหลดโปรเจ็กต์เหล่านั้นไปยังwebapps/{app_context}/WEB-INF/libโฟลเดอร์บนแอปพลิเคชันเซิร์ฟเวอร์ของคุณ
  • อย่าลืมรีสตาร์ทเซิร์ฟเวอร์แอปพลิเคชันของคุณเพื่อสมัครmydb.cfgเปลี่ยนแปลงโดยการกดรีสตาร์ท Nodeปุ่ม.

Image 11: restart application server nodes

  1. เมื่อปรับใช้เสร็จแล้วคลิกเปิดในเบราว์เซอร์ในหน้าต่างป๊อปอัปหรือถัดจากเซิร์ฟเวอร์แอปพลิเคชันของคุณ

Image 12: successful deployment dashboard notification10. ในแท็บเบราว์เซอร์ที่เปิดอยู่ให้คลิกที่สร้างตารางทดสอบในฐานข้อมูลของคุณปุ่ม.

Image 13: example application of the server connection to database11. ตอนนี้เพื่อให้แน่ใจว่าทุกอย่างทำงานได้ดีให้กลับไปที่phpMyAdminแผงและนำทางไปยังทดสอบฐานข้อมูล

Image 14: new table added to databaseคุณจะเห็นว่าตารางที่สร้างขึ้นใหม่ปรากฏขึ้นพร้อมชื่อ{วันที่-เวลาที่สร้าง}นั่นหมายความว่าสามารถเข้าถึงและแก้ไขฐานข้อมูลจากแอปพลิเคชัน Java ของคุณได้สำเร็จมันง่ายมาก!

มีประโยชน์ที่จะรู้

แพลตฟอร์มนี้ยังช่วยให้คุณขยายฟังก์ชันการทำงานของเซิร์ฟเวอร์ MariaDB/MySQL ของคุณได้โดยทำตามคำแนะนำที่เหมาะสมในเอกสารของเรา:

  • ตั้งค่าประเภทการจำลองฐานข้อมูลที่ต้องการด้วยคุณสมบัติ Auto-Clustering ในตัวเพื่อให้ได้รับประสิทธิภาพฐานข้อมูลที่เพิ่มขึ้นและการป้องกันข้อมูลสูญหาย
  • ปรับการกำหนดการสำรองข้อมูลเพื่อรับรองความปลอดภัยของข้อมูลภายในฐานข้อมูลของคุณในกรณีที่เซิร์ฟเวอร์ล้มเหลวโดยไม่คาดคิด
  • ดูการเข้าถึงระยะไกลคำแนะนำและเรียนรู้วิธีการเข้าถึงฐานข้อมูลของคุณจากระยะไกลผ่านไคลเอนต์ MySQL บนเดสก์ท็อปที่ต้องการ
  • ใช้การนำเข้า/ส่งออกไฟล์ดัมพ์คำแนะนำเพื่อค้นหาวิธีสำรองและกู้คืนข้อมูลของคุณจากดัมพ์ที่สร้างไว้ก่อนหน้านี้ด้วยตนเอง
  • ดูสตริงการเชื่อมต่อฐานข้อมูลเพื่อรับข้อมูลเพิ่มเติมวิธีกำหนดค่าการเชื่อมต่อกับฐานข้อมูลประเภทต่างๆ

วิดีโอสอนเกี่ยวกับการเชื่อมต่อ MySQL กับแอปพลิเคชัน Java

คุณสามารถใช้เวอร์ชันวิดีโอสอนเพื่อดูวิธีสร้าง Environment ใหม่กำหนดค่าเซิร์ฟเวอร์ฐานข้อมูล MySQL เชื่อมต่อกับเซิร์ฟเวอร์จากแอปพลิเคชันของคุณและสุดท้ายปรับใช้แอปพลิเคชันกับแพลตฟอร์ม

วิดีโอ 3