色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

mysql容器數(shù)據(jù)同步

傅智翔2年前9瀏覽0評論

MySQL容器數(shù)據(jù)同步是將一個容器中的MySQL數(shù)據(jù)庫數(shù)據(jù)復(fù)制到另一個容器中的過程。常見的應(yīng)用場景包括:

  • 將生產(chǎn)環(huán)境的MySQL數(shù)據(jù)同步到測試環(huán)境的容器中,以便進(jìn)行測試。
  • 將一個容器中的MySQL數(shù)據(jù)備份到另一個容器中,以實現(xiàn)數(shù)據(jù)的冷備份。
  • 將一個容器中的MySQL數(shù)據(jù)同步到另一個地理位置的容器中,以實現(xiàn)數(shù)據(jù)的熱備份。

下面我們演示一下如何使用docker-compose和mysqldump實現(xiàn)容器數(shù)據(jù)同步。

version: '3'
services:
db:
image: mysql:5.7
container_name: db
environment:
MYSQL_ROOT_PASSWORD: password
volumes:
- /docker/mysql/data:/var/lib/mysql
db-copy:
image: mysql:5.7
container_name: db-copy
environment:
MYSQL_ROOT_PASSWORD: password
volumes:
- /docker/mysql/data-copy:/var/lib/mysql
command:
- sh
- -c
- >mysqldump -u root -p${MYSQL_ROOT_PASSWORD} --databases db >/tmp/db.sql
&& mysql -u root -p${MYSQL_ROOT_PASSWORD}< /tmp/db.sql

在上述docker-compose文件中,我們定義了兩個MySQL容器,一個名為db,另一個是db-copy。這兩個容器都運行相同的MySQL 5.7的鏡像。其中db容器是源容器,存儲了我們的MySQL數(shù)據(jù);db-copy容器是目標(biāo)容器,我們將通過mysqldump將源容器中的數(shù)據(jù)轉(zhuǎn)儲到/tmp/db.sql文件中,并將這個文件導(dǎo)入到目標(biāo)容器中,從而實現(xiàn)容器數(shù)據(jù)同步。

我們可以通過docker-compose up啟動這兩個容器:

$ docker-compose up -d

這時我們可以登錄到db容器中,往其中插入一些數(shù)據(jù):

$ docker exec -it db mysql -uroot -ppassword
mysql>CREATE DATABASE db;
mysql>USE db;
mysql>CREATE TABLE users (id INT, name VARCHAR(20));
mysql>INSERT INTO users VALUES (1, 'John'), (2, 'Jane');

當(dāng)我們確認(rèn)數(shù)據(jù)已經(jīng)在db容器中被創(chuàng)建后,我們可以執(zhí)行mysqldump并將數(shù)據(jù)導(dǎo)入到db-copy容器中:

$ docker exec -it db-copy bash
root@db-copy:/# mysqldump -u root -ppassword --databases db >/tmp/db.sql
root@db-copy:/# mysql -u root -ppassword< /tmp/db.sql

現(xiàn)在我們可以登錄到db-copy容器中檢查數(shù)據(jù)是否被正確地導(dǎo)入了:

$ docker exec -it db-copy mysql -uroot -ppassword
mysql>USE db;
mysql>SELECT * FROM users;
+------+-------+
| id   | name  |
+------+-------+
|    1 | John  |
|    2 | Jane  |
+------+-------+
2 rows in set (0.00 sec)

這時我們已經(jīng)成功地將db容器中的數(shù)據(jù)同步到了db-copy容器中。