MySQL主從同步與分庫分表原理及實現(xiàn)方法
MySQL主從同步和分庫分表是應(yīng)對高并發(fā)、大數(shù)據(jù)量場景的兩大核心技術(shù),通過數(shù)據(jù)復(fù)制和水平/垂直拆分,有效解決了單點性能瓶頸和存儲容量限制。主從同步實現(xiàn)了數(shù)據(jù)庫的高可用性和讀寫分離,而分庫分表則進(jìn)一步提升了系統(tǒng)的擴(kuò)展性和負(fù)載能力。本文將深入解析這兩項技術(shù)的原理、實現(xiàn)方法及最佳實踐,幫助您在實際項目中構(gòu)建高性能的MySQL架構(gòu)。
一、主從同步原理與架構(gòu)
1.1 核心組件與工作流程
MySQL主從同步通過二進(jìn)制日志(BINLOG)實現(xiàn)數(shù)據(jù)的異步/半同步復(fù)制。主庫負(fù)責(zé)處理寫操作并將變更記錄到binlog中,從庫通過IO線程獲取binlog并寫入本地的relay log,然后由SQL線程執(zhí)行這些日志中的事件,最終實現(xiàn)與主庫的數(shù)據(jù)一致。

工作流程詳解:
- 主庫操作:當(dāng)客戶端在主庫執(zhí)行寫操作時,InnoDB引擎首先將數(shù)據(jù)變更記錄到Redo Log以確保事務(wù)持久性,隨后將變更寫入Binlog。
- IO線程傳輸:從庫的IO線程通過長連接監(jiān)聽主庫的Binlog變更,獲取新事件后寫入本地中繼日志(Relay Log)。
- SQL線程執(zhí)行:從庫的SQL線程讀取中繼日志中的事件并重放,將變更應(yīng)用到本地數(shù)據(jù)庫,最終實現(xiàn)與主庫的數(shù)據(jù)一致。
1.2 同步模式對比
MySQL主從同步支持三種模式,各有優(yōu)缺點:
| 模式 | 特點 | 適用場景 | RTO/RPO |
|---|---|---|---|
| 異步復(fù)制 | 主庫處理完SQL直接返回結(jié)果 | 高寫入性能要求,對數(shù)據(jù)一致性要求較低 | 最高 |
| 半同步復(fù)制 | 主庫處理完SQL等待至少1個從完成 | 平衡性能與一致性,多數(shù)生產(chǎn)環(huán)境使用 | 中等 |
| 全同步復(fù)制 | 主庫處理完SQL等待所有從完成 | 數(shù)據(jù)一致性要求極高,但性能最差 | 最低 |
半同步復(fù)制實現(xiàn)機(jī)制:MySQL半同步復(fù)制依賴rpl_semi_sync_master插件,通過AFTER_SYNC或AFTER_COMMIT兩種模式實現(xiàn) 。AFTER同步模式要求主庫等待從庫將Binlog寫入中繼日志,而AFTER提交模式則要求從庫執(zhí)行到SQL線程階段。
半同步復(fù)制能顯著降低數(shù)據(jù)丟失風(fēng)險,但會增加約20%的寫入延遲。配置時需設(shè)置rpl_semi_sync_master_timeout(超時時間,默認(rèn)10000ms)和rpl_semi_sync_master enabled(啟用狀態(tài)) 。
1.3 主從同步配置步驟
1. 主庫配置

配置參數(shù)詳解:
server-id:唯一標(biāo)識符,主從庫必須不同,范圍1~2^32-1。log-bin:開啟二進(jìn)制日志功能,指定日志文件前綴。binlog-do-db:指定需要同步的數(shù)據(jù)庫,可設(shè)置多個。binlog_format:推薦設(shè)為ROW格式,確保精確復(fù)制,避免STATEMENT格式的不可重現(xiàn)問題。sync_binlog:控制Binlog刷盤策略,設(shè)為1最安全但性能損耗大,設(shè)為1000平衡性能與安全。enforce_gtid_consistency:若使用GTID模式,必須設(shè)為ON以保證事務(wù)一致性
2. 從庫配置

配置參數(shù)詳解:
server-id:從庫唯一標(biāo)識符,與主庫不同。replicate-do-db:指定需要復(fù)制的數(shù)據(jù)庫,可設(shè)置多個。MASTER_AUTO_POSITION:若使用GTID模式,設(shè)為1可自動同步GTID,無需手動指定file/pos。read-only:建議設(shè)為ON防止從庫被誤寫
3. 驗證同步
-- 在主庫插入測試數(shù)據(jù) INSERT INTO test_table (id, name) VALUES (1, 'test'); -- 在從庫查詢數(shù)據(jù) SELECT * FROM test_table WHERE id=1;
若數(shù)據(jù)成功同步,則配置成功。
二、分庫分表策略與實現(xiàn)
2.1 分庫分表類型
分庫分表主要分為垂直分庫/分表和水平分庫/分表,通常建議先進(jìn)行垂直拆分,再考慮水平拆分 。

垂直分庫適用場景:
- 業(yè)務(wù)模塊解耦:如電商系統(tǒng)中用戶、訂單、商品模塊獨立部署,降低耦合度。
- 冷熱數(shù)據(jù)分離:如歷史日志與實時交易表分離,減少IO爭搶。
- 高并發(fā)場景:單庫連接數(shù)達(dá)到瓶頸時,通過垂直分庫提高系統(tǒng)并發(fā)能力。
- 數(shù)據(jù)量級建議:當(dāng)單庫表數(shù)超過500+或總數(shù)據(jù)量達(dá)TB級時考慮拆分 。
水平分表適用場景 :
- 單表數(shù)據(jù)量過大:行數(shù)超過1000萬或單表大小超過10GB
- 高并發(fā)寫入:QPS超過3000或?qū)懭胙舆t持續(xù)超過100ms
- 查詢模式優(yōu)化:頻繁查詢特定范圍數(shù)據(jù)(如按時間查詢?nèi)罩荆r,可按范圍分片提高效率 。
2.2 垂直分庫實現(xiàn)
1. 創(chuàng)建獨立業(yè)務(wù)庫
-- 創(chuàng)建用戶庫和訂單庫 CREATE DATABASE user_db; CREATE DATABASE order_db; -- 將用戶表遷移到用戶庫 RENAME TABLE original_db.user TO user_db.user; -- 將訂單表遷移到訂單庫 RENAME TABLE original_db.order TO order_db.order;
2. 應(yīng)用層路由配置
在應(yīng)用層代碼中設(shè)置不同業(yè)務(wù)的數(shù)據(jù)庫連接:
// 用戶操作使用user_db連接
DataSource userDataSource = setupDataSource("user_db");
// 訂單操作使用order_db連接
DataSource orderDataSource = setupDataSource("order_db");3. 分片鍵選擇原則
分片鍵的選擇直接影響分庫分表的效果,需遵循以下原則:
- 高基數(shù)字段:如用戶ID或訂單ID,確保數(shù)據(jù)均勻分布。
- 查詢模式匹配:分片鍵應(yīng)與業(yè)務(wù)查詢條件一致,如訂單查詢常按
user_id,則選user_id為分片鍵 。 - 避免熱點數(shù)據(jù):如時間字段可能導(dǎo)致最新分片負(fù)載過高,需結(jié)合其他策略(如哈希)
- 穩(wěn)定性:分片鍵值不應(yīng)頻繁變更,否則會導(dǎo)致數(shù)據(jù)遷移
2.3 垂直分表示例
1. 原始寬表結(jié)構(gòu)
CREATE TABLE user (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50),
email VARCHAR(100),
phone VARCHAR(20),
address TEXT,
profile JSON,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);2. 分表后結(jié)構(gòu)
-- 核心信息表
CREATE TABLE user Core (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50),
email VARCHAR(100),
phone VARCHAR(20),
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
-- 擴(kuò)展信息表
CREATE TABLE user Extend (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
user_id BIGINT,
address TEXT,
profile JSON,
FOREIGN KEY (user_id) REFERENCES user Core(id)
);2.4 水平分表示例
1. 按用戶ID取模分
-- 創(chuàng)建4張分表
CREATE TABLE user_001 (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
user_id BIGINT,
name VARCHAR(50),
email VARCHAR(100),
phone VARCHAR(20),
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB;
-- 類似創(chuàng)建user_002、user_003、user_004表
-- 設(shè)置主鍵步長避免沖突
ALTER TABLE user_001 AUTO_INCREMENT=1;
ALTER TABLE user_002 AUTO_INCREMENT=2;
ALTER TABLE user_003 AUTO_INCREMENT=3;
ALTER TABLE user_004 AUTO_INCREMENT=4;
-- 設(shè)置全局步長
SET GLOBAL auto_increment_increment=4;2. 數(shù)據(jù)操作示例
public class UserDAO {
private static final int SHARD_COUNT = 4;
// 獲取分片編號
private int getShardNumber(long userId) {
return (int) (userId % SHARD_COUNT);
}
// 插入用戶
public void insertUser(User user) {
int shardNumber = getShardNumber(user.getId());
String table = "user_" + String.format("%03d", shardNumber);
try (Connection conn = getDataSource(shardNumber). connections()) {
conn預(yù)備語句(
"INSERT INTO " + table + " (user_id, name, email, phone) " +
"VALUES (?, ?, ?, ?)"
). executeUpdate();
}
}
// 查詢用戶
public User getUser(long userId) {
int shardNumber = getShardNumber(userId);
String table = "user_" + String.format("%03d", shardNumber);
try (Connection conn = getDataSource(shardNumber). connections()) {
預(yù)備語句ps = conn預(yù)備語句(
"SELECT * FROM " + table + " WHERE user_id = ?"
);
ps.setLong(1, userId);
結(jié)果集rs = ps執(zhí)行查詢();
if (rs.next()) {
return mapToUser(rs);
}
}
return null;
}
// 獲取對應(yīng)分片的數(shù)據(jù)庫連接
private DataSource getDataSource(int shardNumber) {
switch (shardNumber) {
case 0:
return userDataSource0;
case 1:
return userDataSource1;
case 2:
return userDataSource2;
case 3:
return userDataSource3;
default:
throw new IllegalArgumentException("無效的分片編號");
}
}
}三、分庫分表后的挑戰(zhàn)與解決方案
3.1 分布式事務(wù)處理(若感興趣,評論區(qū)告訴我,會單獨出一期詳細(xì)講述)
1. XA事務(wù)實現(xiàn)

XA事務(wù)實現(xiàn)步驟 :
- 準(zhǔn)備階段:事務(wù)協(xié)調(diào)器向所有參與的數(shù)據(jù)庫發(fā)送"準(zhǔn)備"請求,每個數(shù)據(jù)庫執(zhí)行本地事務(wù)操作但不提交,記錄事務(wù)日志并持有相關(guān)資源鎖。
- 提交階段:若所有數(shù)據(jù)庫都反饋"同意提交",協(xié)調(diào)器向所有數(shù)據(jù)庫發(fā)送"提交"指令,釋放資源鎖并提交事務(wù)。若有任何數(shù)據(jù)庫失敗,則發(fā)送"回滾"指令 。
XA事務(wù)優(yōu)缺點:
- 優(yōu)點:實現(xiàn)簡單,依賴數(shù)據(jù)庫原生支持,能保證強(qiáng)一致性。
- 缺點:性能較差(需等待所有數(shù)據(jù)庫響應(yīng)),可用性低(協(xié)調(diào)器單點故障風(fēng)險),鎖競爭導(dǎo)致阻塞
2. TCC事務(wù)模式

TCC事務(wù)實現(xiàn)步驟 :
- Try階段:檢查資源是否滿足要求(如檢查賬戶余額是否足夠),若符合條件則對資源進(jìn)行鎖定(如凍結(jié)可扣減金額)。
- Confirm階段:若Try階段所有操作都成功,則執(zhí)行正式提交(如實際扣減金額)。
- Cancel階段:若Try階段有失敗,則執(zhí)行回滾(如釋放凍結(jié)金額) 。
TCC事務(wù)優(yōu)缺點:
- 優(yōu)點:無鎖、支持復(fù)雜業(yè)務(wù)流程,性能較好。
- 缺點:對業(yè)務(wù)有侵入性,需提供Try/Confirm/Cancel三個接口,開發(fā)成本高
3.2 跨庫JOIN查詢優(yōu)化(若感興趣,評論區(qū)告訴我,會單獨出一期詳細(xì)講述ShardingSphere)
1. 業(yè)務(wù)層聚合
分別查詢用戶表、訂單表,再應(yīng)用層對結(jié)果合并
2. 寬表同步

實現(xiàn)方法:
- 將關(guān)聯(lián)表的數(shù)據(jù)同步到數(shù)據(jù)倉庫(如Hadoop或ClickHouse)。
- 在數(shù)據(jù)倉庫中生成寬表,包含所有需要關(guān)聯(lián)的字段。
- 通過中間件(如ShardingSphere)或直接查詢寬表完成關(guān)聯(lián)查詢
3.3 主鍵沖突解決方案
1. 步長分配法(使用較少)

實現(xiàn)步驟:
在主庫設(shè)置全局步長
SET GLOBAL auto_increment_increment = 4;
在每個分片表設(shè)置初始值:
ALTER TABLE user_001 AUTO_INCREMENT = 1; ALTER TABLE user_002 AUTO_INCREMENT = 5; ALTER TABLE user_003 AUTO_INCREMENT = 9; ALTER TABLE user_004 AUTO_INCREMENT = 13;
每個分片表的步長與全局步長一致,確保主鍵全局唯一
步長分配法優(yōu)缺點:
- 優(yōu)點:實現(xiàn)簡單,無需額外工具,性能較好。
- 缺點:分片數(shù)固定,擴(kuò)容困難,需重新計算步長
2. 雪花算法實現(xiàn)(高頻)

實現(xiàn)步驟:
- 設(shè)計分布式ID生成器,包含時間戳、機(jī)器ID和序列號。
- 為每個分片分配唯一的機(jī)器ID。
- 在分片間共享序列號,避免重復(fù)。
雪花算法優(yōu)缺點:
- 優(yōu)點:全局唯一,無需依賴MySQL參數(shù),支持動態(tài)擴(kuò)容。
- 缺點:實現(xiàn)復(fù)雜,需額外開發(fā)ID生成服務(wù)
四、實際操作指南
4.1 主從同步完整配置流程
1. 環(huán)境準(zhǔn)備
# 主庫IP: 192.168.1.100 # 從庫IP: 192.168.1.101 # 安裝MySQL 8.0 sudo yum install mysql-server sudo systemctl start mysqld sudo systemctl enable mysqld
2. 主庫配置
# 獲取初始化密碼 sudo grep 'temporary password' /var/log/mysqld.log # 登錄MySQL mysql -u root -p # 修改root密碼 ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'NewPassword123'; # 創(chuàng)建復(fù)制用戶 CREATE USER 'repl'@'192.168.1.%' IDENTIFIED WITH mysql_native_password BY 'ReplPassword123'; GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.1.%'; FLUSH PRIVILEGES; # 修改my.cnf配置文件 sudo vi /etc/my.cnf # 添加以下配置 [mysqld] server-id=1 log-bin=mysql-bin binlog-do-db=your_db binlog-checksum=NONE binlog-format=ROW sync_binlog=1 innodb_flush_log_at_trx_commit=1 gtid_mode=ON enforce_gtid_consistency=ON
3. 從庫配置
# 修改my.cnf配置文件 sudo vi /etc/my.cnf # 添加以下配置 [mysqld] server-id=2 log-bin=mysql-bin replicate-do-db=your_db replicate_binlog checksum=0 replicate_binlog format=MIXED gtid_mode=ON enforce_gtid_consistency=ON read-only=ON
4. 初始化數(shù)據(jù)同步
# 主庫導(dǎo)出數(shù)據(jù)
mysqldump -u root -p --single-transaction your_db > dump.sql
# 從庫導(dǎo)入數(shù)據(jù)
mysql -u root -p your_db < dump.sql
# 從庫設(shè)置主庫信息
CHANGE MASTER TO
MASTER_HOST='192.168.1.100',
MASTER_USER='repl',
MASTER_PASSWORD='ReplPassword123',
MASTER AUTO_POSITION=1;
# 啟動從庫復(fù)制
START SLAVE;
# 檢查復(fù)制狀態(tài)
SHOW SLAVE STATUS\G關(guān)鍵指標(biāo)檢查:
SlaveIORunning應(yīng)為YesSlaveSQLRunning應(yīng)為YesSecondsBehindMaster應(yīng)接近0
4.2 分庫分表示例
1. 手動分庫分表示例
-- 創(chuàng)建分片表
CREATE TABLE user_001 (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
user_id BIGINT,
name VARCHAR(50),
email VARCHAR(100),
phone VARCHAR(20),
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB;
-- 創(chuàng)建其他分片表
CREATE TABLE user_002 LIKE user_001;
CREATE TABLE user_003 LIKE user_001;
CREATE TABLE user_004 LIKE user_001;
-- 設(shè)置主鍵步長
ALTER TABLE user_001 AUTO_INCREMENT=1;
ALTER TABLE user_002 AUTO_INCREMENT=5;
ALTER TABLE user_003 AUTO_INCREMENT=9;
ALTER TABLE user_004 AUTO_INCREMENT=13;
-- 設(shè)置全局步長
SET GLOBAL auto_increment_increment=4;2. 數(shù)據(jù)操作路由邏輯
// 使用ShardingSphere的ShardingSphereDataSource
ShardingSphereDataSource dataSource = ShardingSphereDataSourceFactory.createDataSource(
createDataSourceMap(),
createRuleConfiguration(),
new Properties()
);
// 插入用戶
public void insertUser(User user) {
try (Connection conn = dataSource.getConnection()) {
conn預(yù)備語句(
"INSERT INTO t_user (user_id, name, email, phone) " +
"VALUES (?, ?, ?, ?)"
). executeUpdate();
}
}
// 查詢用戶
public User getUser(long userId) {
try (Connection conn = dataSource.getConnection()) {
預(yù)備語句ps = conn預(yù)備語句(
"SELECT * FROM t_user WHERE user_id = ?"
);
ps.setLong(1, userId);
結(jié)果集rs = ps執(zhí)行查詢();
if (rs.next()) {
return mapToUser(rs);
}
}
return null;
}3. ShardingSphere中間件配置
# ShardingSphere配置文件
rules:
- !SHARDING
tables:
t_user:
actualDataNodes: ds_${0..3}.t_user_${0..3}
tableStrategy:
standard:
shardingColumn: user_id
shardingAlgorithmName: inline
shardingAlgorithms:
inline:
type: INLINE
props:
algorithm-expression: t_user_${user_id % 4}配置說明:
actualDataNodes:定義物理數(shù)據(jù)節(jié)點,ds_${0..3}表示4個數(shù)據(jù)庫實例。shardingColumn:指定分片鍵為user_id。algorithm-expression:使用取模算法將數(shù)據(jù)均勻分布到4個分表中。
五、最佳實踐與性能優(yōu)化
5.1 主從同步優(yōu)化建議
1. 配置優(yōu)化

優(yōu)化建議:
- binlog格式:推薦使用
ROW格式,確保精確復(fù)制,避免STATEMENT格式的不可重現(xiàn)問題 。 - 日志刷盤策略:設(shè)
sync_binlog=1000平衡性能與安全,設(shè)innodb_flush_log_at_trx_commit=2減少I/O開銷 。 - 網(wǎng)絡(luò)傳輸優(yōu)化:使用
binlog_row_image=MINIMAL僅記錄變更的列,減少傳輸數(shù)據(jù)量。 - 監(jiān)控與告警:設(shè)置復(fù)制延遲監(jiān)控(
SecondsBehindMaster),當(dāng)延遲超過閾值時自動告警。
2. 性能監(jiān)控指標(biāo)

監(jiān)控方法:
- 定期執(zhí)行
SHOW SLAVE STATUS\G檢查復(fù)制狀態(tài)。 - 使用
CHECKSUM TABLE驗證主從數(shù)據(jù)一致性。 - 使用
pt-table-checksum工具進(jìn)行大規(guī)模數(shù)據(jù)校驗
5.2 分庫分表優(yōu)化策略
1. 跨庫查詢優(yōu)化

優(yōu)化方法:
- 業(yè)務(wù)層聚合:在應(yīng)用層先查詢主表獲取主鍵列表,再查詢關(guān)聯(lián)表,最后合并結(jié)果。
- 寬表同步:將關(guān)聯(lián)表的數(shù)據(jù)同步到數(shù)據(jù)倉庫(如Hadoop或ClickHouse),生成寬表減少JOIN操作。
- 中間件路由:使用ShardingSphere等中間件自動處理路由邏輯,簡化開發(fā)(若感興趣,評論區(qū)告訴我,會單獨出一期講述)
六、總結(jié)與實施建議
MySQL主從同步和分庫分表是應(yīng)對高并發(fā)、大數(shù)據(jù)量場景的核心技術(shù),通過合理設(shè)計和配置,可以顯著提升系統(tǒng)的性能和可靠性。在實際實施中,建議遵循以下原則:
- 先垂直后水平:優(yōu)先按業(yè)務(wù)模塊進(jìn)行垂直分庫分表,再考慮水平分片
- 逐步擴(kuò)展:從簡單的讀寫分離開始,隨著數(shù)據(jù)量增長逐步引入分庫分表
- 工具輔助:使用Mycat、ShardingSphere等中間件簡化分庫分表實現(xiàn)
- 監(jiān)控先行:建立完善的監(jiān)控體系,跟蹤復(fù)制延遲、分片負(fù)載等關(guān)鍵指標(biāo)
- 數(shù)據(jù)一致性:在性能與一致性之間找到平衡點,根據(jù)業(yè)務(wù)需求選擇合適的事務(wù)處理方案
結(jié)語: 至此,《7天讀懂MySQL》已完結(jié),你都懂了嗎?
到此這篇關(guān)于MySQL主從同步與分庫分表的文章就介紹到這了,更多相關(guān)mysql內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
MySQL利用profile分析慢sql詳解(group left join效率高于子查詢)
最近因為一個用了子查詢的sql語句查詢很慢,嚴(yán)重影響了性能,所以需要進(jìn)行優(yōu)化,下面這篇文章主要跟大家介紹了關(guān)于MySQL利用profile分析慢sql的相關(guān)資料,文中介紹的非常詳細(xì),需要的朋友們可以參考借鑒,下面來一起看看吧。2017-03-03
MySql Error 1698(28000)問題的解決方法
這篇文章主要介紹了MySql Error 1698(28000)問題的解決方法,需要的朋友可以參考下2017-06-06
MySQL連接指定端口后實際仍是3306的原因分析及解決方法
在日常運(yùn)維或開發(fā)過程中,有時我們在使用 mysql 命令行工具連接 MySQL 實例時,可能會遇到一個令人疑惑的問題,本以為連接的是監(jiān)聽在 3307 端口的 MySQL 實例,但登錄進(jìn)去后執(zhí)行,實際連接的是3306 端口,而不是我們指定的端口,這是為什么?本文將為你詳細(xì)解答2025-07-07
MySQL服務(wù)無法啟動:failed to restart mysql.service:&
在系統(tǒng)更新或配置變更后,MySQL服務(wù)可能無法啟動,本文提供解決MySQL服務(wù)啟動失敗的方法,包括檢查和更新服務(wù)單元文件,主要步驟包括檢查服務(wù)文件存在與否、備份舊的服務(wù)文件、使用最新的服務(wù)文件重啟MySQL服務(wù)等,確保服務(wù)能正常運(yùn)行,感興趣的可以了解一下2024-10-10
MySQL數(shù)據(jù)庫分布式XA事務(wù)及SQL語法詳解
XA事務(wù)也有其局限性,比如性能開銷較大,因為它涉及到更多的協(xié)調(diào)步驟,并且可能會導(dǎo)致阻塞問題,這篇文章給大家介紹MySQL數(shù)據(jù)庫分布式XA事務(wù)及SQL語法詳解,感興趣的朋友跟隨小編一起看看吧2025-05-05
MySQL出現(xiàn)SQL Error (2013)連接錯誤的解決方法
這篇文章主要介紹了MySQL出現(xiàn)SQL Error (2013)連接錯誤的解決方法,2013錯誤主要還是在于用戶的授權(quán)問題,需要的朋友可以參考下2016-06-06
MySQL定時執(zhí)行腳本(計劃任務(wù))命令實例
在mysql中我們可以直接進(jìn)行一些參數(shù)設(shè)置讓它成定時為我們執(zhí)行一些任務(wù)了,這個雖然可以使用windows或者linux中的計劃任務(wù)實現(xiàn),但是mysql本身也能完成2013-10-10
給MySQL表中的字段設(shè)置默認(rèn)值的兩種方法
在MySQL中,我們可以為表的字段設(shè)置默認(rèn)值,以確保在插入新記錄時,如果沒有為該字段指定值,將使用默認(rèn)值,要為MySQL表中的字段設(shè)置默認(rèn)值,我們可以在創(chuàng)建表時或者在已存在的表上使用ALTER TABLE語句進(jìn)行修改,下面將展示兩種設(shè)置默認(rèn)值的方法,需要的朋友可以參考下2023-11-11

