如何通過MySQL創建從庫
為了提高系統的容錯性和讀寫性能,將數據庫分成主從庫體系是現今各大互聯網公司普及的做法之一。MySQL是其中一個非常常用的數據庫,我們可以通過以下步驟,在MySQL上創建從庫。
準備工作
在搭建主從庫體系之前,確保你已經擁有一臺已經配置好MySQL的服務器。如果還沒有,可以先參照MySQL的官方文檔進行安裝。
定義主庫和從庫
我們先要定義哪一臺服務器是主庫,哪一臺服務器是從庫。在這個例子中,我們假設Server A是主庫,Server B是從庫。
主庫操作
在主庫上,我們要把主庫的數據同步到從庫。為了方便同步,我們可以創建一個只讀用戶。使用下面的命令在主服務器上創建用戶并賦予適當的權限:
CREATE USER 'repl'@'%.example.com' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%.example.com';
FLUSH PRIVILEGES;
注意:這里的'%.example.com'是通配符,這樣命令會應用于任何從服務器。
然后,我們要在主服務器上打開二進制日志并記錄當前的位置。我們可以在MySQL的配置文件中修改或者在命令行中運行下面的命令。
# my.cnf
log-bin=/var/lib/mysql/binary.log
server-id=1
# or from mysql shell
mysql>SET GLOBAL binlog_format = 'STATEMENT';
mysql>FLUSH LOGS;
mysql>FLUSH MASTER;
mysql>SHOW MASTER STATUS;
注意:這里的server-id需要在所有的服務器(主庫和從庫)中唯一。
從庫操作
在從庫上,我們需要連接到主服務器,并將主庫的數據拷貝到從庫中。使用下面的命令進行同步:
# my.cnf
server-id=2
# or from mysql shell
mysql>CHANGE MASTER TO MASTER_HOST='server1.example.com', MASTER_USER='repl', MASTER_PASSWORD='password', MASTER_LOG_FILE='binary-log.000001', MASTER_LOG_POS=501;
并在接下來啟動從服務器時啟動從服務器:
# my.cnf
read-only=1
# or from mysql shell
mysql>START SLAVE;
同步測試
在添加了從服務器之后,我們可以嘗試在主服務器中插入一些數據,并檢查是否在從服務器中正確同步了。使用下面的命令在主服務器上創建database和table。
mysql>CREATE DATABASE test;
mysql>CREATE TABLE test.t1 (i INT);
再插入一些記錄:
mysql>INSERT INTO test.t1 VALUES (1),(2),(3);
在從服務器上可以執行以下命令查詢:
mysql>SELECT * FROM test.t1;
我們能夠看到所有的記錄已經正確的從主服務器中被同步到從服務器。
總結
數據庫是現代互聯網公司的核心工具之一,對于如何保持數據的安全和可讀性一直是開發者們共同關注的問題。通過MySQL創建主從庫是現今各大公司解決數據庫同步問題的方法之一。遵循以上MySQL創建從庫的方法,我們能夠通過拷貝主服務器數據的方式創建自己的從庫體系。
上一篇html幻燈特效代碼