docker執行mysql主從備份,讀寫分離

2022-09-08 10:18:10 字數 2105 閱讀 5279

1)從docker官方下拉mysql的image

開啟搜尋mysql

在docker中執行 預設tag為latest

docker pull mysql/mysql-server

也可以指定mysql版本

docker pull mysql/mysql-server:5.7

2)設定目錄 為了使mysql的資料保持在宿主機上,

我們先建立幾個目錄。

mkdir -pv /mysql/data

建立主伺服器的配置目錄

mkdir -pv /mysql/101

建立從伺服器的配置目錄

mkdir -pv /mysql/102

3)設定主從伺服器配置

vi /mysql/101/101.cnf

[mysqld]

log-bin=mysql-bin

server-id=101

vi /mysql/102/102.cnf

[mysqld]

log-bin=mysql-bin

server-id=102

3)建立主從伺服器容器

docker create --name mysqlsrv101 -v /home/docker/mysql/data/mysql101:/var/lib/mysql -v /home/docker/mysql/101:/etc/mysql/conf.d -e mysql_root_password=123456 -p 3306:3306 mysql:5.7

docker create --name mysqlsrv102 -v /home/docker/mysql/data/mysql102:/var/lib/mysql -v /home/docker/mysql/102:/etc/mysql/conf.d -e mysql_root_password=123456 -p 3316:3306 mysql:5.7

啟動容器

docker start mysqlsrv101

docker start mysqlsrv102

4)登入主伺服器的mysql,查詢master的狀態

主庫建立使用者 

set sql_mode=(select replace(@@sql_mode,'only_full_group_by',''));

grant replication sl**e on *.* to 'backup'@'%' identified by '123456';

5)登入從伺服器的mysql,設定與主伺服器相關的配置引數

set sql_mode=(select replace(@@sql_mode,'only_full_group_by',''));

change master to master_host='192.168.56.101',master_user='backup',master_password='123456',master_log_file='mysql-bin.000003',master_log_pos=2500;

master_host為docker的位址不能寫127.0.0.1

master_user是在主庫建立的使用者

master_log_pos是主庫show master status;查詢出的position

啟動服務

start sl**e;
檢視服務狀態

waiting for master to send event 就是成功了

connecting to master 多半是連線不通

之後主庫的修改都能同步到從庫了

MySql主從資料同步的執行過程

從庫驗證並連線到主庫 從庫會建立乙個io執行緒和乙個sql執行緒 然後請求io執行緒連線到主庫 同時主庫會新建乙個執行緒用來給從庫傳日誌 從庫的io執行緒請求主庫的二進位制日誌和上次更新位置 並將得到的二進位制日誌寫到從庫的中繼日誌中 從庫的sql執行緒會通過獲取的位置索引讀取新的二進位制日誌 並解...

mysql 主從維護 MYSQL主從的維護

分類 mysql postgresql 1.m上把事件從二進位制日誌中過濾 引數 binlog do db binlog ignore db 2.s上事件從中繼日誌中過濾 引數 replicate do db replicte do table repicate ingore db repliaca...

docker初識 執行mysql例項

移除舊版本docker yum remove docker docker common docker selinux docker engine 設定docker倉庫 2.1 安裝所需要的包 2.2 設定新增穩定版的docker倉庫 yum config manager add repo 安裝 do...