MySQL數據庫是目前最流行的關系型數據庫之一,其作為Web應用程序的后端存儲方式,使得其應用非常廣泛。但是,MySQL數據庫的訪問限制較為嚴格,普通的外部訪問只能使用localhost或127.0.0.1這個特殊的IP,而在公網中,由于網絡環境的復雜性,無法直接訪問MySQL數據庫。
在這種情況下,主從復制模式就應運而生。簡單地說,主從復制就是將主數據庫的數據實時同步到從數據庫中,從而實現從數據庫與主數據庫的數據完全一致。在使用主從復制的情況下,我們可以將主數據庫作為內網服務器,而將從數據庫作為公網服務器,這樣就可以實現公網訪問了。
具體的操作步驟如下:
1. 在主數據庫中設置主服務器配置 mysql>SET GLOBAL binlog_format = 'ROW'; #選擇Row模式 mysql>CREATE USER 'repl'@'%' IDENTIFIED BY 'password'; #創建復制用戶 mysql>GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%'; #授權用戶 mysql>FLUSH PRIVILEGES; #刷新權限 mysql>FLUSH TABLES WITH READ LOCK; #使主服務器只讀 mysql>SHOW MASTER STATUS; #查看主服務器狀態 +------------------+----------+--------------+------------------+-------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set | +------------------+----------+--------------+------------------+-------------------+ | mysql-bin.000003 | 335 | | | | +------------------+----------+--------------+------------------+-------------------+ 2. 在從數據庫中設置從服務器配置 mysql>CHANGE MASTER TO MASTER_HOST='xxx.xxx.xxx.xxx', MASTER_USER='repl', MASTER_PASSWORD='password', MASTER_LOG_FILE='mysql-bin.000003', MASTER_LOG_POS=335; #設置從服務器連接主服務器 mysql>START SLAVE; #啟動數據庫復制 mysql>SHOW SLAVE STATUS\G; #查看從服務器狀態 *************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: xxx.xxx.xxx.xxx Master_User: repl Master_Port: 3306 Connect_Retry: 60 Master_Log_File: mysql-bin.000003 Read_Master_Log_Pos: 335 Relay_Log_File: localhost-relay-bin.000002 Relay_Log_Pos: 535 Relay_Master_Log_File: mysql-bin.000003 Slave_IO_Running: Yes Slave_SQL_Running: Yes ... 3. 在從數據庫中進行測試 mysql>use dbname; #切換到需要使用的數據庫 mysql>show tables; #查看表結構 +------------------+ | Tables_in_dbname | +------------------+ | table1 | | table2 | | table3 | +------------------+ mysql>SELECT * FROM table1; #查詢數據 +-------+--------+ | id | name | +-------+--------+ | 1 | John | | 2 | Jack | +-------+--------+
綜上所述,通過使用主從復制模式,我們可以實現MySQL數據庫在公網中的訪問,從而更好地支持Web應用程序的開發。
上一篇css小于分辨率
下一篇mysql數據庫全部導入