基於Linux的docker mysql主從搭建
一、docker安裝
1.1 前提條件
Docker 要求 CentOS 系統的核心版本高於 3.10 ,檢視本頁面的前提條件來驗證你的CentOS 版本是否支援 Docker。
shell> uname -r
使用root許可權登入 Centos。確保yum包更新到最新.
shell> sudo yum update
如果安裝過舊版本的話:
shell> sudo yum remove docker docker-common docker-selinux docker-engine
1.2 安裝軟體包
shell> sudo yum install -y yum-utils device-mapper-persistent-data lvm2
yum-util 提供yum-config-manager功能,另外兩個是devicemapper驅動依賴的。
1.3 設定yum源
shell> vi /etc/sysconfig/network-scripts/ifcfg-ens33 DNS1=114.114.114.114 DNS2=8.8.8.8 shell> systemctl restart network
(推薦)設定阿里雲yum源
shell> sudo yum-config-manager --add-repo
(或者)設定官方yum源
shell> sudo yum-config-manager --add-repo
新增成功: 已載入外掛:fastestmirror adding repo from: grabbing file to /etc/yum.repos.d/docker-ce.repo repo saved to /etc/yum.repos.d/docker-ce.repo
1.4 安裝docker
可以檢視所有倉庫中所有docker版本,並選擇特定版本安裝。
shell> yum list docker-ce --showduplicates | sort -r
docker安裝所需依賴包,配置CentOS源 EPEL
shell> wget -O /etc/yum.repos.d/CentOS-Base.repo shell> yum install epel-release -y
安裝最新版本的docker
shell> sudo yum install -y docker-ce
(或者)安裝指導版本的docker
shell> sudo yum install docker-ce-17.12.0.ce
1.5 啟動docker
shell> sudo systemctl start docker shell> sudo systemctl enable docker
1.6 驗證安裝
有client和service兩部分表示docker安裝啟動都成功了。
shell> docker version Client: Docker Engine - Community Version: 20.10.1 API version: 1.41 Go version: go1.13.15 Git commit: 831ebea Built: Tue Dec 15 04:37:17 2020 OS/Arch: linux/amd64 Context: default Experimental: true Server: Docker Engine - Community Engine: Version: 20.10.1 API version: 1.41 (minimum version 1.12) Go version: go1.13.15 Git commit: f001486 Built: Tue Dec 15 04:35:42 2020 OS/Arch: linux/amd64 Experimental: false containerd: Version: 1.4.3 GitCommit: 269548fa27e0089a8b8278fc4fc781d7f65a939b runc: Version: 1.0.0-rc92 GitCommit: ff819c7e9184c13b7c2607fe6c30ae19403a7aff docker-init: Version: 0.19.0 GitCommit: de40ad0
二、docker mysql安裝
2.1 下載映象
嚴格來說,無需在單獨的步驟中下載伺服器映像。但是,在建立Docker容器之前執行此步驟可確保本地映像是最新的。要下載MySQL Community Edition映像,請執行以下命令:
shell> docker pull mysql/mysql-server:tag 8.0: Pulling from mysql/mysql-server 03e20c09154c: Pull complete be7ba00cd800: Pull complete 218845b603a2: Pull complete 0807146aa37b: Pull complete Digest: sha256:5dfceab2e53e7dac983168c5f5d611d9d8e85c3bee7297c24c931d77fbeeaac3 Status: Downloaded newer image for mysql/mysql-server:8.0 docker.io/mysql/mysql-server:8.0
該tag是你想拉的影像版本的標籤,例如5.6, 5.7,8.0或 latest。如果省略,則使用標籤,並下載MySQL Community Server的最新GA版本的影像。
參考:https: //hub.docker.com/r/mysql/mysql-server/tags/?page=1&ordering=last_updated
可以使用以下命令列出下載的Docker映像:
shell> docker images REPOSITORY TAG IMAGE ID CREATED SIZE mysql/mysql-server 8.0 c8552d79a138 8 weeks ago 405MB
2.2 啟動MySQL主庫例項
shell> mkdir /docker/master/date -p shell> vi /docker/master/my.cnf [mysqld] user=mysql port=3308 datadir=/var/lib/mysql log_error=myerror.log server_id=1 log-bin=mysql-bin binlog_format=ROW shell> docker run --name master -p 3308:3308 -v /docker/master/date:/var/lib/mysql -v /docker/master/my.cnf:/etc/my.cnf -e MYSQL_ROOT_PASSWORD=mysql -d mysql/mysql-server:8.0
--name用於為伺服器容器提供自定義名稱的選項是可選的。如果沒有提供容器名稱,則會生成一個隨機的容器名稱。
-p 3306:3306 將容器的 3306 埠對映到主機的 3306埠
--privileged=true:容器內的root擁有真正root許可權,可選
-v /mysql/data:/var/lib/mysql 將主機data目錄掛載到容器的/var/lib/mysql
-v /docker/mysql/my.cnf:/etc/my.cnf將主機my.cnf 掛載到容器的my.cnf
-e mysql_root_password=mysql 設定mysql的root使用者的初始密碼
-d 保持後臺執行,image_name:tag可以使用docker images命令獲得,如mysql/mysql-server:8.0
2.3 登入MySQL例項
使用docker ps根據STATUS檢查MySQL啟動情況,伺服器準備就緒後,您可以在剛啟動的MySQL Server容器中執行 mysql客戶端,並將其連線到MySQL Server。
shell> docker ps CONTAINER ID 8e565e79b7e5 IMAGE mysql/mysql-server:8.0 COMMAND "/entrypoint.sh mysq…" CREATED 2 minutes ago STATUS Up 2 minutes (healthy) PORTS 3306/tcp, 33060-33061/tcp, 0.0.0.0:3308->3308/tcp NAMES master
使用docker exec -it命令在已啟動的Docker容器內啟動 mysql客戶端:
shell> docker exec -it master mysql -uroot -pmysql
(或者)要對您的MySQL Server容器具有shell訪問許可權,請使用 docker exec -it命令在容器內部啟動bash shell:
使用bash shell登入到容器內,可檢視目錄資訊。
shell> docker exec -it master bash bash-4.2# mysql -uroot -pmysql
2.5 啟動MySQL從庫
shell> mkdir /docker/slave/date -p shell> vi /docker/slave/my.cnf [mysqld] user=mysql port=33081 datadir=/var/lib/mysql log_error=myerror.log server_id=2 log-bin=mysql-bin binlog_format=ROW shell> docker run --name slave -p 33081:33081 -v /docker/slave/date:/var/lib/mysql -v /docker/slave/my.cnf:/etc/my.cnf -e MYSQL_ROOT_PASSWORD=mysql -d mysql/mysql-server:8.0
使用docker exec -it命令在已啟動的Docker容器內啟動 mysql客戶端:
shell> docker ps shell> docker exec -it slave mysql -uroot -pmysql
2.6 檢視主庫IP
[root@mysql2 ~]# docker inspect master | grep "IPAddress" "SecondaryIPAddresses": null, "IPAddress": "172.17.0.2", "IPAddress": "172.17.0.2",
三、搭建傳統主從
3.1 建立複製使用者
建立一個slave使用者用於主從間的複製。
shell> docker exec -it master mysql -uroot -pmysql mysql> create user slave@'%' identified by 'slave'; mysql> grant replication slave on *.* to 'slave'@'%';
3.2 搭建主從
主庫檢視binlog資訊
mysql> show master status; mysql-bin.000003 | 691
從庫根據主庫的資訊搭建複製關係
shell> docker exec -it slave mysql -uroot -pmysql mysql> change master to master_host='172.17.0.2',master_port=3308,master_user='slave',master_password='slave',master_log_file='mysql-bin.000003',master_log_pos=691, get_master_public_key=1;
注意:MySQL8.0搭建主從需要get_master_public_key=1,而其他版本不需要。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30310891/viewspace-2787611/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 基於 Docker 的 MySQL 主從複製搭建(真正弄懂)DockerMySql
- 基於 Docker 的 MySQL 主從複製搭建及原理(真正弄懂)DockerMySql
- 基於GTID搭建主從MySQLMySql
- Docker 方式 MySQL 主從搭建DockerMySql
- 基於Linux的mysql主從配置LinuxMySql
- Mysql主從搭建(docker compose)MySqlDocker
- MySQL(14)---Docker搭建MySQL主從複製(一主一從)MySqlDocker
- 基於docker環境下搭建redis主從叢集DockerRedis
- MySQL 5.7 基於GTID搭建主從複製MySql
- 基於 Docker 的 MongoDB 主從叢集DockerMongoDB
- mysql之 mysql 5.6不停機主從搭建(一主一從基於GTID複製)MySql
- 基於bin-log&position搭建主從架構MySQL架構MySql
- MySQL 主從複製搭建,基於日誌(binlog)MySql
- mysql之 mysql 5.6不停機主從搭建(一主一從基於日誌點複製)MySql
- docker-compase搭建mysql主從複製DockerMySql
- mysql主從搭建MySql
- Docker Compose搭建MySQL主從複製叢集DockerMySql
- docker mysql 主從配置DockerMySql
- 基於Linux的虛擬主機搭建Linux
- mysql 基於日誌的主從複製MySql
- 在docker中安裝mysql並搭建主從複製DockerMySql
- MYSQL主從搭建5.6.38MySql
- mysql之 mysql 5.6不停機雙主一從搭建(活躍雙主一從基於日誌點複製)MySql
- MYSQL主從複製的搭建MySql
- Linux 上部署 docker,基於 docker 搭建 lnmp 環境LinuxDockerLNMP
- Mysql 基於GTID主從複製MySql
- MySQL 5.7基於GTID的主從複製MySql
- Mysql 8.4.0 結合 Docker 搭建GTID主從複製,以及傳統主從複製MySqlDocker
- mysql主從複製搭建MySql
- mysql主從搭建切換MySql
- [mysql/docker] 基於Docker安裝MYSQLMySqlDocker
- Docker 快速搭建主從 + 哨兵監控Docker
- docker 配置 Mysql主從叢集DockerMySql
- docker部署mysql8主從DockerMySql
- mysql之 MySQL 主從基於position複製原理概述MySql
- 基於Dokcer搭建Redis叢集(主從叢集)Redis
- MySQL基於binlog主從複製配置MySql
- MYSQL5.6.40原始碼安裝 主從搭建 主主搭建MySql原始碼