CLOUD PAAS / DATABASE

การเชื่อมต่อจาวาเข้ากับ MariaDB/MySQL

คู่มือนี้เรียบเรียงและปรับรูปแบบสำหรับ Ruk-Com Cloud PaaS ภาพหน้าจออาจแตกต่างเล็กน้อยตามเวอร์ชันของระบบ

คลิกหรือแตะภาพหน้าจอเพื่อดูรายละเอียดขนาดจริง

วัตถุประสงค์

บทความนี้อธิบายการใช้งาน การเชื่อมต่อจาวาเข้ากับ MariaDB/MySQL บน Ruk-Com Cloud PaaS โดยจัดลำดับขั้นตอนและจุดตรวจสอบสำหรับการนำไปใช้งานจริง

ก่อนเริ่มดำเนินการ

  • เข้าสู่ระบบด้วยบัญชีที่มีสิทธิ์จัดการ Environment ที่เกี่ยวข้อง
  • ตรวจสอบชื่อ Environment, Region และทรัพยากรเป้าหมายก่อนบันทึกการเปลี่ยนแปลง
  • สำรองข้อมูลหรือกำหนดแผนย้อนกลับก่อนแก้ไขระบบ Production

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

  1. เข้าสู่ระบบด้วยบัญชี Ruk-Com และสร้าง Env ขึ้นสร้างสภาพแวดล้อมด้วยเซิร์ฟเวอร์ฐานข้อมูล MariaDB (หรือ MySQL) (มีอยู่ในส่วนของ SQL wizard)
  2. สำหรับเซิร์ฟเวอร์ฐานข้อมูลแบบ standalone

    ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS
  3. สำหรับ Auto-Clustering solution

    ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS

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

  1. ตรวจสอบอีเมลของคุณ – ควรที่จะมีข้อความที่ประกอบด้วยรายละเอียดของแอดมินสำหรับการสร้างเซิร์ฟเวอร์ MariaDB (หรือ MySQL) ในกรณีของ database cluster เราจะแนะนำเชื่อมต่อผ่าน proxy loadbalancer
  2. สลับไปยังแดชบอร์ดและคลิกปุ่ม Open in Browser สำหรับ MariaDB/MySQL node.

    ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS

    ถ้าคุณมี clustered solution ให้กดที่ Open in Browser ที่อยู่ถัดจาก master database node (สัญลักษณ์ตัว M)

    ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS
    เข้าสู่ระบบเพื่อเปิดพาเนลแอดมินโดยใช้รายละเอียดที่ได้รับจากอีเมลดังกล่าวข้างต้น
  3. ใช้ฐานข้อมูลที่มีอยู่เดิม (เช่น test) หรือสร้างขึ้นมาใหม่

    ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS
  4. กลับไปที่แดชบอร์ดและกดปุ่ม Config ที่อยู่ถัดจาก application server (ในกรณีของเราจะเป็น Tomcat) เพื่อเข้าถึงตัวจัดการไฟล์การกำหนดค่า
    ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS
  5. ไปยังโฟลเดอร์ /opt/tomcat/temp สร้างไฟล์ใหม่ mydb.cfg

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

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

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

  • {host} – ลิงก์ไปยังโหนดฐานข้อมูลโดยไม่มีส่วนโปรโตคอล
  • {db_name} - ชื่อฐานข้อมูล (ในกรณีของเราชื่อ test )
  • {user} และ {password} - ข้อมูลของผู้ดูแลฐานข้อมูล (สำหรับการใช้งาน แนะนำให้สร้างบัญชีเฉพาะด้วยสิทธิ์การเข้าถึงที่เหมาะสม)
    ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS

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

สำหรับ MariaDB:

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

    ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS

สำหรับ MySQL:

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

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

  1. สำหรับการปรับใช้และการเชื่อมต่อเพิ่มเติม เราจะใช้แอปพลิเคชันตัวอย่างตามต่อไปนี้
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://bit.ly/31LSfUQ

    ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS

    ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS

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

ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS

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

    ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS
  1. ในแท็บที่เปิดไว้ ให้กดที่ปุ่มสร้างตารางทดสอบในฐานข้อมูลของคุณ

    ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS
  2. ตอนนี้ เพื่อให้แน่ใจว่าทุกอย่างทำได้เป็นเป็นปกติ ให้กลับไปที่พาเนล phpMyAdmin และไปที่ฐานข้อมูลที่ชื่อว่า test

    ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS

สิ่งที่ควรรู้
Ruk-Com PaaS ช่วยให้คุณสามารถขยายการทำงานของเซิร์ฟเวอร์ MariaDB/MySQL ได้โดยการปฏิบัติตามคำแนะนำที่เหมาะสมในเอกสารประกอบของเรา

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

ดูสตริงการเชื่อมต่อฐานข้อมูลเพื่อให้ได้ข้อมูลเพิ่มเติมถึงวิธีการตั้งค่าการเชื่อมต่อไปยังฐานข้อมูลในประเภทที่แตกต่างกัน