在原有實(shí)例下創(chuàng)建副本應(yīng)該可以達(dá)到效果。
10余年專(zhuān)注成都網(wǎng)站制作,企業(yè)網(wǎng)站建設(shè),個(gè)人網(wǎng)站制作服務(wù),為大家分享網(wǎng)站制作知識(shí)、方案,網(wǎng)站設(shè)計(jì)流程、步驟,成功服務(wù)上千家企業(yè)。為您提供網(wǎng)站建設(shè),網(wǎng)站制作,網(wǎng)頁(yè)設(shè)計(jì)及定制高端網(wǎng)站建設(shè)服務(wù),專(zhuān)注于企業(yè)網(wǎng)站建設(shè),高端網(wǎng)頁(yè)制作,對(duì)成都銅雕雕塑等多個(gè)方面,擁有豐富設(shè)計(jì)經(jīng)驗(yàn)。
大多情況下,需要可靠而有效地克隆 MySQL 實(shí)例數(shù)據(jù)。這包括 MySQL 高可用的解決方案,其中需要在將實(shí)例加入組復(fù)制集群之前配置實(shí)例,或者在經(jīng)典復(fù)制模型中將其添加為 Slave。
為復(fù)制拓?fù)涠鴦?chuàng)建 MySQL 副本一直很麻煩。涉及的步驟很多,首先要備份 MySQL 服務(wù)器,通過(guò)網(wǎng)絡(luò)將備份傳輸?shù)轿覀兿胍砑拥綇?fù)制集的新 MySQL 節(jié)點(diǎn),然后在該節(jié)點(diǎn)上恢復(fù)備份并手動(dòng)啟動(dòng) MySQL 服務(wù)器。為了高可用,最好還要將其正確設(shè)置備份的 GTID,并啟動(dòng)并運(yùn)行群集。涉及的手動(dòng)步驟數(shù)量過(guò)多不利于高可用。CLONE 插件解決了這個(gè)問(wèn)題并簡(jiǎn)化了副本配置。使您可以使用 MySQL 客戶端(和 SQL 命令)來(lái)配置新節(jié)點(diǎn)并在發(fā)生時(shí)觀察克隆進(jìn)度。無(wú)需手動(dòng)處理多個(gè)步驟并維護(hù)自己的基礎(chǔ)架構(gòu)來(lái)配置新的 MySQL 節(jié)點(diǎn)。
MySQL 8.0.17 引入了 CLONE SQL 語(yǔ)句,使當(dāng)前的 MySQL 服務(wù)器成為另一個(gè)運(yùn)行在不同節(jié)點(diǎn)的 MySQL 服務(wù)器的“克隆”。我們將執(zhí)行 clone 語(yǔ)句的服務(wù)器實(shí)例稱(chēng)為“受體”??寺〉脑捶?wù)器實(shí)例稱(chēng)為“供體”。供體克隆以一致的快照存儲(chǔ)在 InnoDB 存儲(chǔ)引擎中的所有數(shù)據(jù)和元數(shù)據(jù),以替換受體中的數(shù)據(jù)。
成功執(zhí)行 CLONE SQL 語(yǔ)句后,將自動(dòng)重新啟動(dòng)受體服務(wù)器。重新啟動(dòng)涉及恢復(fù)克隆的快照數(shù)據(jù),就像用老方法復(fù)制數(shù)據(jù)一樣?;謴?fù)完成后,受體就是供體的克隆版,隨時(shí)可以使用!
這里有一些關(guān)于克隆過(guò)程的重要注意事項(xiàng)。
不克隆 MySQL 配置參數(shù),并且受體保留所有原始配置參數(shù),如克隆之前。這樣做是因?yàn)樵S多配置可能特定于節(jié)點(diǎn)(例如 PORT),因此保留它們似乎是一個(gè)不錯(cuò)的選擇。另一方面,一些存儲(chǔ)配置確實(shí)需要在供體和受體之間匹配(例如 innodbpagesize),如果這樣的配置參數(shù)不匹配,CLONE 將報(bào)告錯(cuò)誤。
CLONE 插件不會(huì)克隆二進(jìn)制日志。
CLONE 插件目前僅支持 InnoDB 存儲(chǔ)引擎。在其他存儲(chǔ)引擎(如 MyISAM 和 CSV)中創(chuàng)建的表將被克隆為空表??寺』A(chǔ)架構(gòu)的設(shè)計(jì)允許克隆 MySQL 支持的任何存儲(chǔ)引擎。但是,只有 InnoDB 序列化和反序列化方法已經(jīng)實(shí)現(xiàn)并經(jīng)過(guò)測(cè)試。
克隆會(huì)阻止供體中的所有并發(fā) DDL。
需要注意的事實(shí)是受體放棄所有數(shù)據(jù)以及任何二進(jìn)制日志,以便成為供體實(shí)例的克隆。在執(zhí)行 CLONE 之前,如果認(rèn)為有必要,需要備份當(dāng)前受體數(shù)據(jù)。
select是不會(huì)產(chǎn)生表的副本的(所有的數(shù)據(jù)庫(kù)都不能)。如果非要生成一個(gè)表的副本,往往得用Create table的方法來(lái)執(zhí)行(適用于SQL Sever、Oracle、MySQL和Access)。而Access則可以在視圖中右擊選擇,然后“另存為”。
需要用到集群,負(fù)載均衡及mysql
復(fù)制(replication);
下面提供一個(gè)系統(tǒng)模型你可以參考一下:
集群的結(jié)構(gòu)為一個(gè)主MySQL服務(wù)器(Master)服務(wù)器與多個(gè)從屬M(fèi)ySQL服務(wù)器(Slave)建立復(fù)制(replication)連接,主服務(wù)器與從屬服務(wù)器實(shí)現(xiàn)一定程度上的數(shù)據(jù)同步,多個(gè)從屬服務(wù)器存儲(chǔ)相同的數(shù)據(jù)副本,實(shí)現(xiàn)數(shù)據(jù)冗余,提供容錯(cuò)功能。部署開(kāi)發(fā)應(yīng)用系統(tǒng)時(shí),對(duì)數(shù)據(jù)庫(kù)操作代碼進(jìn)行優(yōu)化,將寫(xiě)操作(如UPDATE、INSERT)定向到主服務(wù)器,把大量的查詢操作(SELECT)定向到從屬服務(wù)器,實(shí)現(xiàn)集群的負(fù)載均衡功能。如果主服務(wù)器發(fā)生故障,從屬服務(wù)器將轉(zhuǎn)換角色成為主服務(wù)器,使應(yīng)用系統(tǒng)為終端用戶提供不間斷的網(wǎng)絡(luò)服務(wù);主服務(wù)器恢復(fù)運(yùn)行后,將其轉(zhuǎn)換為從屬服務(wù)器,存儲(chǔ)數(shù)據(jù)庫(kù)副本,繼續(xù)對(duì)終端用戶提供數(shù)據(jù)查詢檢索服務(wù)。
java怎樣創(chuàng)建mysql數(shù)據(jù)庫(kù)的副本解決思路
java中怎樣創(chuàng)建MySQL數(shù)據(jù)庫(kù)列表 需要使用jdbc訪問(wèn)數(shù)據(jù)庫(kù)。
具體步驟如下:
1:加載驅(qū)動(dòng) ,返回連接
private static final String DRIVER_CLASS = "com.mysql.jdbc.Driver";
private static final String DATABASE_URL = "jdbc:mysql://localhost:3306/student";
private static final String DATABASE_USRE = "root";
private static final String DATABASE_PASSWORD = "cs";
/**
* 返回連接
*
* @return Connection
*/
public static Connection getConnection() {
Connection dbConnection = null;
try {
Class.forName(DRIVER_CLASS);
dbConnection = DriverManager.getConnection(DATABASE_URL,
DATABASE_USRE, DATABASE_PASSWORD);
} catch (Exception e) {
e.printStackTrace();
}
return dbConnection;
}
2:獲取連接,執(zhí)行sql語(yǔ)句
public static List selectAllStudent() {
Connection con = null;
PreparedStatement pstm = null;
ResultSet rs = null;
List list = new ArrayList();
String sql = "select * from Student ";
try {
con = ConnectionManager.getConnection();
pstm = con.prepareStatement(sql);
// pstm.setString(1, uname);
rs = pstm.executeQuery();
while (rs.next()) {
Student model = new Student();
model.setStuId(rs.getInt("stuId"));
list.add(model);
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
ConnectionManager.closeResultSet(rs);
ConnectionManager.closeStatement(pstm);
ConnectionManager.closeConnection(con);
}
return list;
}
3:調(diào)用獲取列表方法。