MySQL是當(dāng)前非常流行的一種關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)。在實(shí)際應(yīng)用中,我們經(jīng)常需要將不同的MySQL數(shù)據(jù)庫(kù)之間的數(shù)據(jù)進(jìn)行同步,因?yàn)椴煌臄?shù)據(jù)庫(kù)可能分別存儲(chǔ)了不同的重要信息,在數(shù)據(jù)同步的過(guò)程中可以實(shí)現(xiàn)信息共享,提高效率。
關(guān)于MySQL數(shù)據(jù)同步的方式,一般是通過(guò)修改配置的方式進(jìn)行的。MySQL數(shù)據(jù)同步的配置主要由主數(shù)據(jù)庫(kù)和從數(shù)據(jù)庫(kù)兩個(gè)部分組成。
# 定義主數(shù)據(jù)庫(kù)
[mysqld]
log-bin=master-bin # 開(kāi)啟二進(jìn)制日志
server-id=1 # 主數(shù)據(jù)庫(kù)server_id = 1
binlog-do-db=mydb # 需要同步的數(shù)據(jù)庫(kù)為mydb
# 定義從數(shù)據(jù)庫(kù)
[mysqld]
server-id=2 # 從數(shù)據(jù)庫(kù)server_id = 2
relay-log=slave-relay.log # 開(kāi)啟中繼日志
log-slave-updates # 從數(shù)據(jù)庫(kù)記錄自己的二進(jìn)制日志
read-only=1 # 從數(shù)據(jù)庫(kù)只讀
在啟動(dòng)MySQL數(shù)據(jù)庫(kù)后,需要使用mysql命令登錄主數(shù)據(jù)庫(kù),進(jìn)入mysql命令行模式,輸入以下命令進(jìn)行數(shù)據(jù)同步的配置:
use mysql;
grant replication slave on *.* to 'slave'@'%' identified by 'password';
flush privileges;
show master status;
其中,‘slave’為從數(shù)據(jù)庫(kù)登錄用戶名,‘password’為從數(shù)據(jù)庫(kù)登錄密碼?!畇how master status’命令執(zhí)行后,會(huì)顯示出當(dāng)前主數(shù)據(jù)庫(kù)的二進(jìn)制日志文件和對(duì)應(yīng)的位置信息,需要將這些信息記錄下來(lái)。
進(jìn)入從數(shù)據(jù)庫(kù),同樣使用mysql命令登錄,進(jìn)入mysql命令行模式,輸入以下命令配置從數(shù)據(jù)庫(kù)的同步參數(shù):
change master to master_host='master_ip',master_user='slave',master_password='password',master_log_file='master_bin.000001',master_log_pos=12345;
start slave;
show slave status\G;
其中,‘master_ip’為主數(shù)據(jù)庫(kù)的IP地址,‘master_bin.000001’和‘12345’分別對(duì)應(yīng)主數(shù)據(jù)庫(kù)的二進(jìn)制日志文件和位置,需要根據(jù)實(shí)際情況進(jìn)行修改?!畇how slave status\G’命令執(zhí)行后,會(huì)顯示出從數(shù)據(jù)庫(kù)的同步狀態(tài),包括主數(shù)據(jù)庫(kù)的信息和從數(shù)據(jù)庫(kù)的信息,需要檢查同步狀態(tài)是否正常。
通過(guò)以上配置和命令,就可以實(shí)現(xiàn)不同MySQL數(shù)據(jù)庫(kù)之間的數(shù)據(jù)同步,從而做到數(shù)據(jù)共享和高效運(yùn)營(yíng)。