欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

mysql兩個庫實時同步

錢琪琛2年前11瀏覽0評論

MySQL是一個流行的關系型數據庫管理系統(tǒng),許多業(yè)務都要使用MySQL進行數據存儲和管理。在一些場景中,需要將兩個數據庫之間的數據進行實時同步,以便于業(yè)務數據的聯通。在MySQL中,可以通過以下方式實現兩個庫的實時同步。

首先需要創(chuàng)建兩個數據庫,分別命名為mysql_a和mysql_b。在mysql_a中創(chuàng)建一個表user_info:

CREATE TABLE user_info (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(100) NOT NULL,
age INT NOT NULL
);

在mysql_b中創(chuàng)建一個空表,名稱和字段和mysql_a中的表完全一致。

CREATE TABLE user_info (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(100) NOT NULL,
age INT NOT NULL
);

接著安裝mysql_binlog插件,開啟binlog功能并進行配置:

mysql>INSTALL PLUGIN mysql_binlog SONAME 'mysql_binlog.so';
mysql>SET GLOBAL binlog_format = 'ROW';
mysql>SET GLOBAL binlog_row_image = 'FULL';
mysql>SET GLOBAL binlog_rows_query_log_events = ON;
mysql>SET GLOBAL binlog_row_metadata = FULL;

最后編寫腳本實現雙向同步數據的邏輯。腳本代碼如下:

#!/bin/bash
MASTER_HOST=192.168.x.x
MASTER_PORT=3306
MASTER_USER=root
MASTER_PASSWD=123456
MASTER_LOG_FILE=mysql-bin.000001
MASTER_LOG_POS=996
SLAVE_HOST=192.168.y.y
SLAVE_PORT=3306
SLAVE_USER=root
SLAVE_PASSWD=123456
while true
do
RESULT=`mysql -h $MASTER_HOST -P $MASTER_PORT -u $MASTER_USER -p$MASTER_PASSWD -e "SHOW MASTER STATUS\G" | grep -E 'File|Position'`
CURRENT_LOG_FILE=`echo $RESULT | awk '{print $2}'`
CURRENT_LOG_POS=`echo $RESULT | awk '{print $4}'`
if [[ "$CURRENT_LOG_FILE" != "$MASTER_LOG_FILE" || "$CURRENT_LOG_POS" != "$MASTER_LOG_POS" ]] ; then
mysql -h $SLAVE_HOST -P $SLAVE_PORT -u $SLAVE_USER -p$SLAVE_PASSWD -e "STOP SLAVE;"
mysql -h $SLAVE_HOST -P $SLAVE_PORT -u $SLAVE_USER -p$SLAVE_PASSWD -e "CHANGE MASTER TO MASTER_HOST='$MASTER_HOST', MASTER_USER='$MASTER_USER', MASTER_PASSWORD='$MASTER_PASSWD', MASTER_PORT=$MASTER_PORT, MASTER_LOG_FILE='$CURRENT_LOG_FILE', MASTER_LOG_POS=$CURRENT_LOG_POS;"
mysql -h $SLAVE_HOST -P $SLAVE_PORT -u $SLAVE_USER -p$SLAVE_PASSWD -e "START SLAVE;"
MASTER_LOG_FILE=$CURRENT_LOG_FILE
MASTER_LOG_POS=$CURRENT_LOG_POS
fi
sleep 10
done

該腳本循環(huán)獲取mysql_a庫的master狀態(tài)并將這個狀態(tài)同步到mysql_b庫的slave狀態(tài)。如果mysql_a庫的master狀態(tài)發(fā)生了變化,則停止mysql_b庫的slave,以便于將其切換為新的master狀態(tài)。

以上腳本可以通過Linux的crontab服務來啟動。使用該腳本實現的雙向同步為實時同步。