MariaDB และ MySQL เป็นฐานข้อมูลแบบโอเพนซอร์ซที่ได้รับความนิยมอย่างสูง ที่ถูกใช้โดยนักพัฒนาทั่วโลก ในวิธีใช้นี้เราจะแสดงถึงวิธีการเชื่อมต่อแอปพลิเคชันจาวาเข้ากับฐานข้อมูลต่อไปนี้, เซิร์ฟเวอร์แบบ standalone และ clustered solution
- เข้าสู่ระบบด้วยบัญชี Ruk-Com และสร้าง Env ขึ้น create an environment ด้วยเซิร์ฟเวอร์ฐานข้อมูล MariaDB (หรือ MySQL) (มีอยู่ในส่วนของ SQL wizard)
- สำหรับเซิร์ฟเวอร์ฐานข้อมูลแบบ standalone
- สำหรับ Auto-Clustering solution
- สำหรับเซิร์ฟเวอร์ฐานข้อมูลแบบ standalone
เรายังได้ทำการเพิ่ม Tomcat Node เพื่อให้เป็นตัวอย่างของการเชื่อมต่อฐานข้อมูลจากแอปพลิเคชันเซิร์ฟเวอร์
- ตรวจสอบอีเมลของคุณ – ควรที่จะมีข้อความที่ประกอบด้วยรายละเอียดของแอดมินสำหรับการสร้างเซิร์ฟเวอร์ MariaDB (หรือ MySQL) ในกรณีของ database cluster เราจะแนะนำให้ทำการเชื่อมต่อผ่าน proxy loadbalancer
- สลับไปยังแดชบอร์ดและคลิกปุ่ม Open in Browser สำหรับ MariaDB/MySQL node.
ถ้าคุณมี clustered solution ให้กดที่ Open in Browser ที่อยู่ถัดจาก master database node (สัญลักษณ์ตัว M)
ทำการล็อกอินเพื่อเปิดพาเนลแอดมินโดยใช้รายละเอียดที่ได้รับจากอีเมลดังกล่าวข้างต้น - ใช้ฐานข้อมูลที่มีอยู่เดิม (เช่น test) หรือทำการสร้างขึ้นมาใหม่
- กลับไปที่แดชบอร์ดและกดปุ่ม Config ที่อยู่ถัดจาก application server (ในกรณีของเราจะเป็น Tomcat) เพื่อเข้าถึง configuration file manager
- ไปยังโฟลเดอร์ /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} – ข้อมูลของผู้ดูแลฐานข้อมูล (สำหรับการใช้งาน แนะนำให้สร้างบัญชีเฉพาะด้วยสิทธิ์การเข้าถึงที่เหมาะสม)
สำหรับการเชื่อมต่อกับ 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} – รายละเอียดของฐานข้อมูลจะได้รับผ่านทางอีเมล
สำหรับ 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} – ข้อมูลของผู้ดูแลฐานข้อมูล (สำหรับการใช้งาน แนะนำให้สร้างบัญชีเฉพาะด้วยสิทธิ์การเข้าถึงที่เหมาะสม)
ด้วยวิธีนี้การตั้งค่าการเชื่อมต่อทั้งหมดจะถูกบันทึกไว้ในไฟล์เดียว ซึ่งต่อมาจะถูกอ่านโดยแอปพลิเคชันในภายหลัง
- สำหรับการปรับใช้และการเชื่อมต่อเพิ่มเติม เราจะใช้แอปพลิเคชันตัวอย่างตามต่อไปนี้
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;
}
}
- Deploy แอปพลิเคชันตัวอย่างของเราไปที่เซิร์ฟเวอร์ Tomcat ของคุณ โดยใช้ลิงก์ต่อไปนี้
https://bit.ly/31LSfUQ
หมายเหตุ :
– แอปพลิเคชันตัวอย่างของเรามีตัวเชื่อมต่อ jdbc สำหรับการเข้าถึงฐานข้อมูล MariaDB/MySQL เรียบร้อยแล้ว อย่างไรก็ตามเพื่อที่จะเชื่อมต่อโปรเจ็กต์ของคุณ คุณจำเป็นที่จะต้องอัปโหลดไปยังโฟลเดอร์ webapps/{app_context}/WEB-INF/lib บนแอปพลิเคชันเซิฟเวอร์ด้วยตนเอง
– อย่าลืมที่จะทำการรีสตาร์ทแอปพลิเคชันเซิร์ฟเวอร์เพื่อเปลี่ยนการใช้งาน mydb.cfg โดยการกดปุ่ม Restart Node
- เมื่อทำการปรับเสร็จเรียบร้อย ให้กด Open in Browser ในหน้าต่างที่เด้งขึ้นมาหรือที่อยู่ถัดจากแอปพลิเคชันเซิร์ฟเวอร์ของคุณ
- ในแท็บที่เปิดไว้ ให้กดที่ปุ่ม Create test table in your database
- ตอนนี้ เพื่อให้แน่ใจว่าทุกอย่างทำได้เป็นเป็นปกติ ให้กลับไปที่พาเนล phpMyAdmin และไปที่ฐานข้อมูลที่ชื่อว่า test
สิ่งที่ควรรู้
Ruk-Com PaaS ช่วยให้คุณสามารถขยายการทำงานของเซิร์ฟเวอร์ MariaDB/MySQL ได้โดยการปฏิบัติตามคำแนะนำที่เหมาะสมในเอกสารประกอบของเรา
- ตั้งค่าประเภทการจำลองฐานข้อมูลที่ต้องการด้วยฟีเจอร์ Auto-Clustering ที่ฝังไว้ เพื่อให้ได้ประสิทธิภาพการทำงานของฐานข้อมูลที่เพิ่มขึ้นและป้องกันข้อมูลสูญหาย
- ปรับ Backups Scheduling เพื่อให้มั่นใจในความปลอดภัย ของข้อมูลที่อยู่ในฐานข้อมูลของคุณในกรณีที่เซิร์ฟเวอร์เกิดการล่มแบบไม่คาดคิด
- ดูคำแนะนำของ Remote Access และศึกษาว่าจะสามารถเข้าถึงฐานข้อมูลจากระยะไกลได้อย่างไรผ่าน MySQL client บนเดสก์ท็อป
- ใช้คู่มือ Dump Files Import/Export เพื่อค้นหาว่าจะสามารถสำรองข้อมูลด้วยตนเองได้อย่างไรและกู้คืนข้อมูลของคุณจากสิ่งที่ได้สร้างทิ้งไว้ก่อนหน้านี้
ดู Database connection strings เพื่อให้ได้ข้อมูลเพิ่มเติมถึงวิธีการตั้งค่าการเชื่อมต่อไปยังฐานข้อมูลในประเภทที่แตกต่างกัน