mysql如何遠(yuǎn)程復(fù)制數(shù)據(jù)庫(kù)

小億
81
2024-09-29 01:01:47
欄目: 云計(jì)算

要在MySQL中遠(yuǎn)程復(fù)制數(shù)據(jù)庫(kù),您需要遵循以下步驟:

  1. 在源服務(wù)器上(即您想要復(fù)制的數(shù)據(jù)庫(kù)所在的服務(wù)器)創(chuàng)建一個(gè)具有遠(yuǎn)程訪問(wèn)權(quán)限的專用用戶。登錄到MySQL命令行并執(zhí)行以下命令:
CREATE USER 'repl_user'@'%' IDENTIFIED BY 'your_password';

這將創(chuàng)建一個(gè)用戶名為’repl_user’,密碼為’your_password’的用戶,并允許該用戶從任何IP地址進(jìn)行遠(yuǎn)程連接。為了安全起見(jiàn),建議使用更具體的IP地址范圍。

  1. 授予用戶對(duì)源數(shù)據(jù)庫(kù)的復(fù)制權(quán)限。執(zhí)行以下命令:
GRANT REPLICATION SLAVE ON *.* TO 'repl_user'@'%';
FLUSH PRIVILEGES;
  1. 在目標(biāo)服務(wù)器上(即您想要將數(shù)據(jù)庫(kù)復(fù)制到的服務(wù)器),創(chuàng)建一個(gè)新的數(shù)據(jù)庫(kù),用于存儲(chǔ)復(fù)制的數(shù)據(jù)。執(zhí)行以下命令:
CREATE DATABASE your_target_database;
  1. 在目標(biāo)服務(wù)器上配置MySQL監(jiān)聽(tīng)遠(yuǎn)程連接。編輯MySQL配置文件(通常是/etc/mysql/my.cnf/etc/my.cnf),在[mysqld]部分添加以下行:
bind-address = 0.0.0.0
server-id = 1
log-bin = /var/log/mysql/mysql-bin.log

這將使MySQL監(jiān)聽(tīng)所有網(wǎng)絡(luò)接口上的連接,并為復(fù)制分配一個(gè)服務(wù)器ID。確保log-bin設(shè)置正確,以便記錄二進(jìn)制日志。

  1. 重啟MySQL服務(wù)以應(yīng)用更改。在Linux系統(tǒng)上,您可以使用以下命令:
sudo systemctl restart mysql
  1. 在目標(biāo)服務(wù)器上創(chuàng)建一個(gè)用于復(fù)制的專用用戶,并授予對(duì)目標(biāo)數(shù)據(jù)庫(kù)的復(fù)制權(quán)限。登錄到MySQL命令行并執(zhí)行以下命令:
CREATE USER 'repl_user'@'%' IDENTIFIED BY 'your_password';
GRANT REPLICATION SLAVE ON your_target_database.* TO 'repl_user'@'%';
FLUSH PRIVILEGES;
  1. 獲取源服務(wù)器的二進(jìn)制日志坐標(biāo)。在源服務(wù)器上,執(zhí)行以下命令:
SHOW MASTER STATUS;

記下FilePosition的值,稍后將用于配置復(fù)制。

  1. 在目標(biāo)服務(wù)器上配置復(fù)制。登錄到MySQL命令行并執(zhí)行以下命令,將source_filesource_position替換為上一步中獲取的值:
CHANGE MASTER TO
    MASTER_HOST='source_server_ip',
    MASTER_USER='repl_user',
    MASTER_PASSWORD='your_password',
    MASTER_LOG_FILE='source_file',
    MASTER_LOG_POS=source_position;
START SLAVE;

現(xiàn)在,目標(biāo)服務(wù)器應(yīng)該開(kāi)始復(fù)制源服務(wù)器上的數(shù)據(jù)庫(kù)。您可以通過(guò)查詢SHOW SLAVE STATUS\G來(lái)檢查復(fù)制狀態(tài)。如果一切正常,您將在目標(biāo)服務(wù)器上看到與源服務(wù)器相同的數(shù)據(jù)。

0