MySQL數據庫的主從表設計是為了在分布式系統下提供高可用性和可擴展性的一種解決方案。該設計模式分為主庫和從庫,主庫處理用戶的寫操作,從庫負責讀操作,并復制主庫的數據以保證數據的一致性和可用性。
CREATE TABLE user ( id INT(11) NOT NULL AUTO_INCREMENT, username VARCHAR(50) NOT NULL, password VARCHAR(50) NOT NULL, PRIMARY KEY (id) ); CREATE TABLE address ( id INT(11) NOT NULL AUTO_INCREMENT, user_id INT(11) NOT NULL, address VARCHAR(100) NOT NULL, PRIMARY KEY (id), FOREIGN KEY (user_id) REFERENCES user(id) );
在主從表設計中,主庫和從庫之間需要同步數據。需要在MySQL配置文件中設置復制規則,將主庫的數據同步到從庫中。以下是一個簡單的MySQL主從復制配置示例:
[mysqld] log-bin=mysql-bin server-id=1 sync_binlog=1 [mysqldump] single-transaction master-data=1 [client] firewall=1 [slave] relay-log=mysql-relay-bin read-only=1 server-id=2 relay-log-index=mysql-relay-bin.index relay-log-info-file=mysql-relay-bin.info master-info-file=mysql-master.info [mysqld_safe] pid-file=/var/run/mysqld/mysqld.pid log-error=/var/log/mysql/mysqld.log
在主從表設計中,從庫也可以被動寫入數據,需要通過服務端觸發器的方式進行寫入。以下是使用觸發器實現從庫寫入的示例:
CREATE TRIGGER add_address_on_master AFTER INSERT ON address FOR EACH ROW BEGIN INSERT INTO address VALUES (NULL, NEW.user_id, NEW.address); END;
通過以上的MySQL主從表設計方案,可以有效地提高系統的可用性和可擴展性。但需要注意的是,在使用主從表設計時需要注意數據同步時的延遲和數據的一致性和正確性。