MySQL是一種流行的開源數(shù)據(jù)庫,適用于各種應(yīng)用程序。為了提高可用性和冗余性,可以使用鏡像同步來同步主數(shù)據(jù)庫到一個或多個輔助數(shù)據(jù)庫。
以下是使用Docker Hub的MySQL官方鏡像來設(shè)置MySQL鏡像同步的步驟。
步驟1:在主MySQL數(shù)據(jù)庫中創(chuàng)建一個專用用戶以供同步使用,并授予復(fù)制和鎖表的權(quán)限。
CREATE USER 'repl'@'%' IDENTIFIED BY 'password'; GRANT REPLICATION SLAVE, RELOAD, LOCK TABLES ON *.* TO 'repl'@'%';
步驟2:檢查并修改主MySQL數(shù)據(jù)庫的my.cnf配置文件以啟用二進制日志。
[mysqld] log-bin=mysql-bin server-id=1
步驟3:重啟主MySQL數(shù)據(jù)庫。
sudo service mysql restart
步驟4:在輔助MySQL數(shù)據(jù)庫中創(chuàng)建另一個專用用戶,并授予從主數(shù)據(jù)庫復(fù)制的權(quán)限。
CREATE USER 'repl'@'%' IDENTIFIED BY 'password'; GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'repl'@'%';
步驟5:通過Docker運行輔助MySQL的容器,并將其鏈接到主MySQL容器。
docker run --name mysql_slave -e MYSQL_ROOT_PASSWORD=password -e MYSQL_DATABASE=mydb -e MYSQL_USER=repl -e MYSQL_PASSWORD=password --link mysql_master:mysql -d mysql/mysql-server:latest
步驟6:在輔助MySQL數(shù)據(jù)庫中暫停主數(shù)據(jù)庫的復(fù)制線程,并使用主數(shù)據(jù)庫的二進制日志和位置信息,啟動輔助數(shù)據(jù)庫的復(fù)制線程。
STOP SLAVE; CHANGE MASTER TO MASTER_HOST='mysql', MASTER_USER='repl', MASTER_PASSWORD='password', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS= 107; START SLAVE;
至此,輔助MySQL數(shù)據(jù)庫已經(jīng)同步了主MySQL數(shù)據(jù)庫。可以繼續(xù)添加更多的輔助數(shù)據(jù)庫以增加冗余性和可用性。